Appearance
5.4 更新结果到 P6 · 建立风险调整基线
阅读提示: 本章深入讲解如何将 PRA 风险分析结果(P80 日期、关键度指数、工期敏感度等)回写到 P6 数据库,以及如何管理多个版本的风险基线。前提是已完成数据库连接的配置。所有菜单、按钮、字段名保留英文原文。
风险分析的真正价值不在于"算出概率",而在于将分析结果嵌入日常项目管理流程。本章教你如何把风险量化的成果——P80 日期、关键度指数、成本分位数——写回 P6,让它成为计划工程师和项目经理看得见、用得到的数据。
输出映射(Output Mappings)
输出映射就是将 PRA 的风险结果字段映射到 P6 的用户自定义字段。映射分为两个级别:活动级(Activity Level)和项目级(Project Level)。
建议的活动级输出字段
Oracle 建议在 P6 中新建以下用户字段来存储风险输出数据:
风险输入字段(从 P6 到 PRA)
| P6 新建用户字段 | PRA 字段 | 数据类型 |
|---|---|---|
| Risk Input - Minimum Duration | Minimum Duration | Start Date |
| Risk Input - Likely Duration | Likely Duration | Start Date |
| Risk Input - Maximum Duration | Maximum Duration | Start Date |
| Risk Input - Duration Function | Duration Function | Text |
| Risk Input - Duration Correlation | Duration Correlation | Text |
| Risk Input - Probabilistic Branch | Probabilistic Branch | Text |
| Risk Input - Task Existence | Task Existence | Number |
| Risk Input - Resource Functions | Resource Functions | Text |
| Risk Input - Minimum / Likely / Maximum Expense | 通过导入映射创建分布 | Number |
| Risk Input - Minimum / Likely / Maximum Labor | 通过导入映射创建分布 | Number |
| Risk Input - Minimum / Likely / Maximum NonLabor | 通过导入映射创建分布 | Number |
| Risk Input - Minimum / Likely / Maximum Material | 通过导入映射创建分布 | Number |
风险输出字段(从 PRA 到 P6)
| P6 新建用户字段 | PRA 字段 | 数据类型 |
|---|---|---|
| Risk - P80 Start Date | P80 Start Date | Start Date |
| Risk - P80 Finish Date | P80 Finish Date | Start Date |
| Risk - P50 Start Date | P50 Start Date | Start Date |
| Risk - P50 Finish Date | P50 Finish Date | Start Date |
| Risk - Mean Start Date | Risk Mean Start Date | Start Date |
| Risk - Mean Finish Date | Risk Mean Finish Date | Start Date |
| Risk - Criticality Index | Criticality Index | Number |
| Risk - Duration Sensitivity | Duration Sensitivity | Number |
| Risk - Duration Cruciality | Duration Cruciality | Number |
| Risk - Cost Sensitivity | Cost Sensitivity | Number |
建议的项目级输出字段
| P6 项目用户字段 | PRA 风险结果 | 说明 |
|---|---|---|
| Project User Cost 14 & 15 | 选定分位数 - 项目成本 | 如 P50 Cost、P80 Cost |
| Project User End Date 1 & 2 | 选定分位数 - 项目完成日期 | 如 P50 Finish、P80 Finish |
| Project User Number 10 | 满足项目完成日期的概率 | Deterministic Finish Probability |
| Project User Number 9 | 满足最新基线日期的概率 | Baseline Finish Probability |
| Project User Number 8 | 满足项目成本的概率 | Deterministic Cost Probability |
| Project User Number 7 | 满足预算成本的概率 | Budget Cost Probability |
更新操作步骤
前提条件
关键前提:更新前,务必在 P6 中关闭目标项目。如果项目在 P6 中处于打开状态,更新可能部分失败。
操作流程
| 步骤 | 操作 |
|---|---|
| 1 | 在 PRA 中完成风险分析 |
| 2 | `File |
| 3 | 配置输出映射(使用 Add / Remove 按钮调整) |
| 4 | 点击 Update Now |
| 5 | 在警告对话框中选择 Yes(确认覆盖) |
| 6 | 按提示登录 P6 数据库 |
| 7 | 等待更新完成 |
更新内容范围
PRA 可以更新到 P6 的数据包括:
| 类别 | 具体内容 | 级别 |
|---|---|---|
| 风险输出 | P50/P80 日期、Mean 日期、Criticality Index、Duration/Cost Sensitivity、Duration Cruciality | 活动级 |
| 风险输出 | 项目完工日期分位数、项目成本分位数、完工概率 | 项目级 |
| 风险输入 | Minimum / Maximum 工期等(将 PRA 中的修改同步回 P6) | 活动级 |
风险输入也可以反向更新——如果你在 PRA 中调整了某些活动的 Min/Max Duration 或 Duration Correlation,这些修改可以写回 P6,保持两边数据一致。
映射编辑注意事项
- 无法编辑已有映射行:必须先用 Remove 删除旧映射,再 Add 新映射
- 只能修改目标 P6 字段:不能修改 PRA 侧的源字段
- 建议使用统一命名前缀:所有风险相关字段加 Risk -
或Risk Input -` 前缀,方便查找和管理

在 P6 中查看更新的结果
活动级结果查看
创建「Risk Outputs」布局:
| 步骤 | 操作 |
|---|---|
| 1 | P6 中打开项目 → Activities 视图 |
| 2 | 右键列头 → Columns... → 添加风险输出列 |
| 3 | `View |
推荐的输出列组合:
| 列 | 内容 | 用途 |
|---|---|---|
| Activity ID | 活动编号 | 唯一标识 |
| Activity Name | 活动名称 | 描述 |
| Original Duration | 原工期 | 对比基准 |
| Risk - P50 Finish | P50 完成日期 | 中位数风险评估 |
| Risk - P80 Finish | P80 完成日期 | 保守风险评估 |
| Risk - Criticality Index | 关键度指数 | 优先级排序 |
| Risk - Duration Sensitivity | 工期敏感度 | 风险驱动力识别 |
创建「Risk Output - Dates」布局(带甘特图条):
| 步骤 | 操作 |
|---|---|
| 1 | 右键甘特图区域 → Bars... |
| 2 | 添加两个条:P50 Start→Finish(绿色)、P80 Start→Finish(橙色) |
| 3 | Row 值设为 2 和 3(避免与确定性 Plan Bar 重叠) |
| 4 | `View |
现在甘特图中可以看到:
- Plan Bar(第一行):P6 确定性进度
- P50 Bar(第二行):50% 置信度的风险调整进度
- P80 Bar(第三行):80% 置信度的风险调整进度

项目级结果查看
方法一:导入预置布局
| 步骤 | 操作 |
|---|---|
| 1 | P6 中 `Enterprise |
| 2 | `View |
| 3 | 选择 PRA 安装目录 Others 文件夹中的 Risk - Project Level Results.plf |
| 4 | Open → Available to: All Users → Save → Apply |
方法二:手动配置
| 步骤 | 操作 |
|---|---|
| 1 | P6 中 `Enterprise |
| 2 | `View |
| 3 | 添加 User Defined 列,使用 Edit Column 修改标题 |
| 4 | OK |
手动配置完成后,Project 屏幕会以类似表格的形式显示项目级风险结果。
风险基线的版本管理
将 P80 日期写回 P6 后,就拥有了两套进度日期:
| 日期类型 | 来源 | 含义 |
|---|---|---|
| 确定性日期(Deterministic Dates) | P6 进度计算 | 单一值,不考虑不确定性 |
| P80 风险日期(P80 Dates) | PRA 蒙特卡洛模拟 | 80% 置信度下不晚于此日期 |
| P50 风险日期(P50 Dates) | PRA 蒙特卡洛模拟 | 中位数,50% 置信度 |
版本管理策略
建议建立以下版本命名规范:
| 版本标识 | 内容 | 更新频率 |
|---|---|---|
vYYYYMM_Plan | P6 确定性计划 | 每次进度更新后 |
vYYYYMM_Risk_P50 | 风险分析 P50 结果 | 每次风险分析后 |
vYYYYMM_Risk_P80 | 风险分析 P80 结果 | 每次风险分析后 |
vYYYYMM_Risk_Report | 完整风险分析报告 | 每次风险分析后 |
为什么要管理多个版本
- 趋势分析:观察 P80 延期量是收窄还是扩大(风险是在被消化还是在累积)
- 业主沟通:用 P80 日期作为内部底线,避免对外承诺太紧
- 变更管理:重大范围变更后对比新旧 P80 日期,量化变更对风险的影响
- 审计追溯:保留每次风险分析的完整记录
实操建议
- 在 P6 中建立专用的 "风险输出"视图,一键切换到 P80 甘特图
- P80 日期列可作为 P6 中新建 Baselines 的日期来源
- 每月更新后,比较上月和本月的 P80 日期差异
P6 中的进度计算差异处理
Import Check 的工作原理
每次从 P6 导入项目到 PRA 时,PRA 会在 Import Check 工作表中显示两类日期对比:
| 检查列 | 来源 | 对比目标 |
|---|---|---|
| Start Check | P6 计算的开始日期 | PRA 计算的开始日期 |
| Finish Check | P6 计算的结束日期 | PRA 计算的结束日期 |
可能出现差异的原因:
| 原因 | 表现 | 是否影响分析 |
|---|---|---|
| 导入前未在 P6 中做进度计算 | 大量活动差异 | 否(但不便于排查真差异) |
| 零工期活动 | Finish 差 1 天 | 否 |
| P3 项目中的 Expected Finish | FF 逻辑被覆盖 | 是 |
| SF(开始-完成)逻辑关系 | 调度结果不一致 | 可能 |
| PRA 不支持的调度选项 | 具体看差异项 | 视情况 |
务必在 P6 中先做进度计算(F9)再导出/导入! 如果导入的是未做进度计算的项目,Import Check 会产生大量"人为差异",掩盖真正的调度不一致问题。
PRA 不支持的 P6 调度选项
| P6 调度选项 | PRA 处理方式 |
|---|---|
| Ignore relationships to and from other projects | 不读取。单项目导入时显示警告并施加约束模拟 |
| Make open-ended activities critical | 不自动支持。可手动设置 Always Critical 约束 |
| Use Expected Finish Dates | 不读取。PRA 中 Expected Finish 不覆盖 FF 逻辑(P6 v6/v7 同) |
| Schedule automatically when a change affects dates | 不读取。PRA 默认自动调度 |
| Level resources during scheduling | 不读取。手动使用 Plan |
| Recalculate assignment costs after scheduling | 不读取。PRA 始终重新计算 |
| Actual Dates(进度更新方式) | 不支持。仅支持 Retained Logic 和 Progress Override |
| Compute Total Float as | PRA 始终取 Total Start Float 和 Total Finish Float 中较小者 |
调度选项详解
进度覆盖方式
PRA 支持以下两种方式处理已开始但尚未完成的作业:
| 方式 | 行为 | 适用场景 |
|---|---|---|
| Retained Logic(保留逻辑) | 剩余工期严格按原逻辑关系执行 | 大多数工程场景(推荐) |
| Progress Override(进度覆盖) | 忽略原逻辑关系,剩余工期尽可能早开始 | 需紧急赶工时 |
PRA 不支持 P6 的 Actual Dates 选项。
计算 SS Lags 的起始点
支持两种方式:
- Actual Start:从实际开始时间计算 Start-to-Start 滞后
- Early Start:从最早开始时间计算
PRA 会读取 P6 中此选项的设置。
定义关键路径
PRA 支持两种方式(不读取 P6 设置):
| 方式 | PRA 中设置路径 |
|---|---|
| Total Float ≤ X days(默认 0) | `Plan |
| Longest Path(最长路径) | `Plan |
实战案例:某 EPC 项目的风险基线建立
案例:中东某燃气电站 EPC 项目的风险基线管理
项目背景
中东某 2×650MW 燃气联合循环电站 EPC 项目,合同金额 $5.2 亿,合同工期 28 个月(含 2 个月调试)。P6 Professional 管理约 4,500 条作业。业主合同要求:每季度提交风险量化分析报告,并提供 P80 置信度工期。
风险基线构建策略
| 基线类型 | 日期来源 | 用途 | 更新频率 |
|---|---|---|---|
| BL1 - Contract(合同基线) | 合同里程碑 | 对外(业主) | 不变(除非变更令) |
| BL2 - Deterministic(确定性基线) | P6 进度计算 | 对内(计划) | 月度 |
| BL3 - P50 Risk(风险中位数基线) | PRA 分析 → P6 回写 | 对内(控制) | 季度 |
| BL4 - P80 Risk(风险保守基线) | PRA 分析 → P6 回写 | 对内(底线) | 季度 |
季度更新流程
- P6 中完成季度进度更新(实际日期、剩余工期、变更单更新)
- 导出当前 Data Date 的 P6 状态 → PRA 打开
- 重新评估风险数据:
- 已完成活动:移除不确定性(已无风险)
- 正在进行的活动:调整 Min/Max 范围(部分风险已消除)
- 未来活动:根据最新外部条件更新分布参数
- 运行风险分析(1000 次迭代)
- 对比本季度 BL3/BL4 与上季度:
- P80 延期缩小 → 风险管理有效
- P80 延期扩大 → 需重点关注原因
- 更新 BL3/BL4 到 P6:File | Primavera | Update Primavera P6 Project...`
- 在 P6 中切换到 "Risk Output - Dates" 视图,确认 BL3/BL4 甘特条显示正确
四个季度的趋势数据
| 季度 | BL2 确定性完工 | BL3 P50 完工 | BL4 P80 完工 | P80-BL2 差距 | 趋势 |
|---|---|---|---|---|---|
| Q1-2024 | 2025-06-15 | 2025-09-20 | 2026-01-05 | +6.7 月 | 初始基线 |
| Q2-2024 | 2025-08-01 | 2025-11-10 | 2026-02-15 | +6.5 月 | 轻微改善 |
| Q3-2024 | 2025-10-01 | 2025-12-20 | 2026-03-10 | +5.3 月 | 风险收窄 |
| Q4-2024 | 2025-12-15 | 2026-02-01 | 2026-03-25 | +3.3 月 | 显著改善 |
BL2 确定性完工日期也在推迟——说明实际施工进度也有延误。但 P80-BL2 差距从 6.7 月降至 3.3 月,说明剩余风险的不确定性正在被消化。
向业主的报告策略
| 报告内容 | 使用的基线 | 理由 |
|---|---|---|
| 合同里程碑完成百分比 | BL1 vs Actual | 合规要求 |
| 进度偏差分析 | BL2 vs Actual | 项目管理层面 |
| 风险量化报告 | BL3 & BL4 | 不向业主展示——仅内部控制用 |
| 向业主承诺的预计完工日期 | BL2 + 经验缓冲 | 基于确定性基线外加管理评估,避免直接暴露 P80 日期 |
踩坑记录
- **坑1:**第一次更新回 P6 时,只映射了 P80 Finish 日期,漏了 P80 Start。导致 P6 甘特条的 P80 条只有结束端正确、开始端用的是确定性开始日期——两个 P80 条看起来"不成比例"。教训: 映射时 P80 Start 和 P80 Finish 成对配置。
- **坑2:**某季度更新后 P6 中 P80 日期全部显示为 N/A。排查发现 PRA 分析选项中 "Create Task Percentiles" 被误关掉了。教训: 建立分析 Checklist,每次运行前确认关键选项。
- **坑3:**P60 结果从 PRA 看是 2025-06-01,但更新到 P6 后显示 2025-06-02。原因是 P6 的日历与 PRA 的日历存在 1 天差异(P6 在某些假日定义上不一致)。教训: 更新后用 Import Check 交叉验证,容许 ±1 天的舍入差异。
成果总结
12 个月的季度更新后:
- P80 延期从 6.7 月缩小到 3.3 月——风险驱动因素在项目执行中被逐步消除
- 风险分析成为季度管理评审会的规定议题,Top 10 关键活动列入重点监控清单
- P6 中的 P80 甘特图视图成为项目控制团队的标准工作视图
本章小结
| 要点 | 一句话 |
|---|---|
| 输出映射 | 将 PRA 结果(P80 日期、关键度、敏感度)映射到 P6 用户字段 |
| 两级映射 | 活动级(每条作业的风险输出)+ 项目级(整体完工概率和分位数) |
| 更新前提 | P6 中关闭目标项目,避免更新失败 |
| 映射编辑 | Remove → Add,不可直接编辑已有映射 |
| P6 查看 | "Risk Outputs" 布局看数字,"Risk Output - Dates" 布局看甘特图条 |
| 版本管理 | BL1 合同基线 + BL2 确定性基线 + BL3 P50 + BL4 P80 |
| 趋势分析 | 每期对比 P80 延期量是扩大还是缩小 |
| 调度差异 | Import Check 排查差异,导入前务必在 P6 中做 F9 进度计算 |
英文原版内容版权归 Oracle Corporation 所有。中文翻译、案例、习题由 计划工程师 独立创作。
