Skip to content

5.3 数据库连接教程 · 风险分析的双向闭环 ​

阅读提示: 本教程演示 PRA 直连 P6 数据库的完整流程——从导入样例项目到运行分析再到更新结果回 P6。前置条件是已完成 Connection Wizard 的连接配置(参见 5.1 打开P6项目)。所有菜单和字段名保留英文原文。

数据库连接是 PRA 风险分析的完整形态。与 XER 方式的单向读取不同,数据库方式支持:读取 P6 中的风险输入数据 → PRA 分析 → 将结果(P80 日期、Criticality Index 等)写回 P6 数据库。这为建立持续更新的风险基线提供了技术基础。

如果你没有 P6 数据库环境,可先阅读 5.2 XER 文件教程 做离线分析。


教程概述 ​

本教程包含六个步骤:

  1. 将样例项目导入 P6 数据库
  2. 在 PRA 中打开 P6 项目
  3. 运行风险分析
  4. 解读风险结果
  5. 将结果更新回 P6
  6. 在 P6 中查看结果

第一步:将样例项目导入 P6 ​

导入 XER 文件到 P6 数据库 ​

步骤操作
1启动 P6
2`File
3在 File Name 处浏览到 PRA 安装的 TutorialPrimaveraWithRiskData.xer,点击 Open
4Next
5在 Import To 下选择 EPS 中的合适位置
6Next → Next → Finish → OK

该样例文件通常安装在 C:\Program Files\Oracle\Primavera Risk Analysis\Samples 目录下。

图:P6 中导入样例 XER 项目

创建「进度风险输入」布局 ​

在 P6 中创建专用的风险输入视图,方便统一管理风险数据:

添加字段列:

右键点击列头 → Columns... → 在 User Defined 区域添加以下列:

列名列类型用途
Risk Input - Minimum DurationStart Date (用户字段)最乐观工期
Risk Input - Likely DurationStart Date (用户字段)最可能工期
Risk Input - Maximum DurationStart Date (用户字段)最悲观工期
Risk Input - Duration FunctionText (用户字段)分布函数
Risk Input - Duration CorrelationText (用户字段)工期相关性
Risk Input - Probabilistic BranchText (用户字段)概率分支
Risk Input - Task ExistenceNumber (用户字段)任务存在概率

保存布局:

View | Layout | Save Layout As... → 输入 "Risk Input - Schedule" → Save

图:PRA 风险输入 - Schedule 布局的列设置

理解预置的风险数据 ​

样例项目中已预填了完整风险数据。以下是对样例数据的解读:

进度风险输入 ​

数据项样例值含义
三点估算Min、Likely、Max 工期值PRA 用这三个值创建三角分布。若 Likely 留空,PRA 自动使用活动剩余工期
Uniform 分布Plaster 活动使用 Uniform 分布在 Duration Function 列输入函数,不填 Min/Likely/Max
概率分支0090[80];0100[20]80% 走电气测试通过(活动 0090),20% 走电气测试失败(活动 0100)
工期相关性Upper brickwork → 0070[95]砌上层砖墙的工期不确定性 95% 相关于砌下层砖墙(活动 0070)
任务存在性Dry Rot = 10%有 10% 概率发现屋顶腐烂(需要修复)
零工期概率活动Dry Rot & Electrics fail 工期为 0防止其在确定性计划中影响完工日期和成本。Likely Dur 必须输入,否则系统默认使用 0

Remaining Durations 列的值与 P6 中 Hours/Day 设置相关。如果 P6 中设置为 8 小时/天,显示值将与样例截图一致。可在 Edit | User Preferences | Time Units或Admin | Admin Preferences | Time Periods` 中修改。

创建「成本风险输入」布局 ​

添加字段列:

列名列类型用途
Risk Input - Resource FunctionsText (用户字段)资源分布函数
Risk Input - Minimum LaborNumber (用户字段)最乐观劳动力成本
Risk Input - Likely LaborNumber (用户字段)最可能劳动力成本
Risk Input - Maximum LaborNumber (用户字段)最悲观劳动力成本
Risk Input - Minimum ExpenseNumber (用户字段)最乐观费用
Risk Input - Likely ExpenseNumber (用户字段)最可能费用
Risk Input - Maximum ExpenseNumber (用户字段)最悲观费用

保存布局:

View | Layout | Save Layout As... → 输入 "Risk Input - Cost" → Save

成本风险输入解读 ​

数据项说明
Labor Cost从劳动力资源分配计算得来,可在 PRA 中映射为 Duration Dependent(工期依赖)——工期变化按比例影响成本
Expense固定费用,可在 PRA 中映射为 Duration Independent(工期独立)——工期变化不影响成本。可通过 Min/Max Expense 添加不确定性
零成本概率活动Dry Rot 和 Electrics fail 的成本也设为零(工期为零,成本也应为零)

第二步:在 PRA 中打开 P6 项目 ​

方式一:从 PRA 打开 ​

步骤操作
1启动 PRA
2`File
3如果提示连接未完成,先打开 P6 并从 `Tools
4登录 P6 数据库(如 admin / admin)
5在 EPS 中找到并选择 "HOUSE - Primavera Risk Tutorial (with risk data)"
6OK

PRA 使用 P6 的安全机制,你只能访问在 P6 中有权限查看的项目。

方式二:从 P6 发起 ​

打开 P6 项目后,使用 Tools | Primavera Risk Analysis...` 直接启动 PRA 并加载当前项目。

方式一对 P6 R8 连接是必需的。

配置导入设置 ​

项目打开后弹出 Primavera Enterprise Import Settings 对话框。

General 选项卡:

设置项选择
Planning UnitDay
One day equals8 hours
Import the WBS Structure勾选

Tasks 选项卡:

映射以下字段(样例中数据已预填):

PRA 字段映射来源
Minimum DurationRisk Input - Minimum Duration
Likely DurationRisk Input - Likely Duration
Maximum DurationRisk Input - Maximum Duration
Duration FunctionRisk Input - Duration Function
Duration CorrelationRisk Input - Duration Correlation

图:打开 P6 项目时的导入映射 - Tasks 选项卡

Probabilistic 选项卡:

PRA 字段映射来源
Probabilistic BranchRisk Input - Probabilistic Branch
Task ExistenceRisk Input - Task Existence

Resources and Costs 选项卡:

选择 "Import Activity Costs summarized as Labor, Non-Labor, Materials and Expenses",按类别汇总导入成本。

分别设置 Labor 为 Duration Dependent(工期依赖),Material 和 Expense 为 Duration Independent(工期独立)。

图:资源与成本映射设置

重要操作:完成所有映射后,务必勾选"Use as default for new projects" 复选框!这样以后打开同一数据库中的项目时无需重复配置。

导入完成 ​

点击 OK,PRA 开始导入。导入完成后弹出 Save As 对话框,使用默认名称保存。

如果按 WBS 组织,可能需要展开顶层作业才能查看详情(双击最左侧加号)。

点击 Risk Inputs 工作表查看已导入的不确定性数据。

Import Check 验证 ​

与 XER 教程相同,Import Check 工作表中的 Start Check 和 Finish Check 列显示 P6 与 PRA 之间的日期差异。灰色条为 P6 进度,上方条为 PRA 进度。

查看风险输入 ​

方式操作
全局视图Risk
单项视图点击活动 → Task Details → Risk and Uncertainty 选项卡

第三步:运行风险分析 ​

启动与配置 ​

Risk | Run Risk Analysis 或工具栏按钮。

Options 设置:

选项值
Number of Iterations1000
Create Task Percentiles勾选

点击 Percentiles... 设置需要计算的百分比值(P50、P80 等)。

开始分析 ​

点击 Analyze 启动蒙特卡洛模拟。

警告对话框显示 '0100 - Electrics fail' 和 '0140 - Dry Rot' 工期超出分布范围——这是正常的(它们被建模为零工期概率活动)。

Step vs Complete ​

  • Step 模式: 每次迭代后重绘甘特图,观察活动出现/消失、成本变化、关键路径变化
  • Complete 模式: 不重绘,速度快。确认分析正常后用此模式完成剩余迭代

使用 Step 和 Go 需要 PRA 在每次迭代后重绘,这会显著增加分析时间。确认分析按预期运行后,用 Complete 按钮会快得多。


第四步:解读风险结果 ​

分布图(Distribution Graph) ​

分析完成后自动弹出 Distribution Graph。

查看项目完工概率:

操作结果
Finish Date 选项卡Deterministic Probability = 18%(确定性计划只有 18% 的概率按时完工)
P80 日期 = 5 Jul(80% 置信度下不晚于此日期)

查看单活动完工概率:

选择 '0160 - Recover roof' → Deterministic Probability = 19%,P80 = 18 May。

查看预算概率:

操作结果
选回 Entire Plan
Cost 选项卡Deterministic Cost Probability = 27%
P80 Cost = 88,647

Risk Outputs 工作表 ​

甘特图列中显示以下风险输出指标:

指标含义
Criticality Index活动在关键路径上的频率
Duration Sensitivity活动工期与项目总工期的相关度
Cost Sensitivity活动成本与项目总成本的相关度
Task Existed概率活动的出现频率

图:甘特图列中显示的风险结果

P50/P80 甘特图 ​

操作:View | View | Insert View → 勾选 "Insert View as New Sheet" → 选择 'Gantt Chart: P50 - P80 Markers' → OK。

前提:分析选项中已勾选 Create Task Percentiles,否则用户字段不会被填充。

龙卷风图(Tornado Graph) ​

操作:Reports | Tornado Graph → 选择 Duration Sensitivity 选项卡。

双击柱子可跳转到甘特图中对应活动。

图:龙卷风图 - 数据库教程版本


第五步:将结果更新回 P6 ​

这是数据库方式对比 XER 方式的最大优势——风险分析结果可以写回 P6。

更新准备 ​

如果目标项目在 P6 中处于打开状态,更新可能部分失败。请先在 P6 中关闭该项目。

执行更新 ​

步骤操作
1PRA 中点击 File
2配置输出映射(见下文)
3点击 Update Now
4在警告对话框中选择 Yes(确认将 PRA 值覆盖到 P6 用户字段)
5按提示登录 P6

输出映射配置 ​

PRA 风险结果映射到 P6 用户字段
P80 Start DateRisk - P80 Start Date
P80 Finish DateRisk - P80 Finish Date
P50 Start DateRisk - P50 Start Date
P50 Finish DateRisk - P50 Finish Date
Risk Mean Start DateRisk - Mean Start Date
Risk Mean Finish DateRisk - Mean Finish Date
Criticality IndexRisk - Criticality Index
Duration SensitivityRisk - Duration Sensitivity
Duration CrucialityRisk - Duration Cruciality
Cost SensitivityRisk - Cost Sensitivity

提示: 无法编辑已有映射行,必须先 Remove 再 Add 新映射。

项目级输出映射 ​

PRA 风险结果映射到 P6 项目字段
选定分位数 - 项目成本Project User Cost 14 & 15
选定分位数 - 项目完成日期Project User End Date 1 & 2
满足项目完成日期的概率Project User Number 10
满足最新基线日期的概率Project User Number 9
满足项目成本的概率Project User Number 8
满足预算成本的概率Project User Number 7

第六步:在 P6 中查看结果 ​

创建「Risk Outputs」布局 ​

在 P6 中创建布局以查看活动级风险输出:

步骤操作
1打开 P6 并登录
2打开目标项目(Activities 视图)
3右键列头 → Columns... 添加以下用户字段列
4`View

添加的风险输出列:

用户字段显示内容
Risk - P80 Start DateP80 开始日期
Risk - P80 Finish DateP80 结束日期
Risk - P50 Start DateP50 开始日期
Risk - P50 Finish DateP50 结束日期
Risk - Criticality Index关键度指数
Risk - Duration Sensitivity工期敏感度

创建「Risk Outputs - Dates」布局(带甘特图条) ​

步骤操作
1添加上述风险输出列
2右键甘特图区域 → Bars...
3添加两条条:P50 Start→Finish 和 P80 Start→Finish
4设置 Row 值为 2 和 3(避免与确定性条重叠)
5`View

图:甘特图中显示确定性进度下的 P50 和 P80 风险进度条

现在你在 P6 甘特图中可以看到彩色条显示 P50 和 P80 的风险调整日期。

查看项目级风险结果 ​

在 P6 中查看项目级别的风险分析结果:

方式操作
自动`Enterprise
手动`View

实战案例:某石化企业 P6-PRA 集成 ​

案例:某大型炼化一体化项目的 P6-PRA 全闭环集成

项目背景

华东沿海某炼化一体化项目,总投资 ¥420 亿,建设期 42 个月。P6 计划包含 22,000+ 条作业,6 级 WBS,约 180 个资源角色。P6 Professional R16.2 + Oracle 数据库,PRA 8.7 SP5。

集成架构

`` P6 Professional R16.2 (Oracle DB) ↕ API Connection Primavera Risk Analysis 8.7 SP5 ↓ 月度风险分析 P80 日期回写 → P6 用户字段 → 生成风险调整基线


**连接配置**

- 连接方式:Primavera Integration API(R8.1+ API)
- 数据库:Oracle 12c,SSL 加密
- Batch Size:1024(加速 22,000 条作业的加载)
- Connection Timeout:180 秒(大项目需延长时间)
- 选择 API 远程连接模式:Standard(本地服务器无需 HTTP 隧道)

**映射配置**

**输入映射(Risk Input):**

| P6 用户字段 | PRA 字段 | 数据类型 |
|-----------|---------|---------|
| UDF_MIN_DUR (Start Date) | Minimum Duration | 工期 |
| UDF_MAX_DUR (Start Date) | Maximum Duration | 工期 |
| UDF_DUR_CORR (Text 250) | Duration Correlation | 工期相关性 |
| UDF_PROB_BRANCH (Text 250) | Probabilistic Branch | 概率分支 |
| UDF_TASK_EXIST (Number) | Task Existence | 存在概率 |

**输出映射(Risk Output):**

| PRA 结果 | P6 用户字段 | 用途 |
|---------|-----------|------|
| P80 Finish Date | UDF_P80_FINISH (Start Date) | 风险调整 P80 完工日期 |
| P50 Finish Date | UDF_P50_FINISH (Start Date) | 风险调整 P50 完工日期 |
| Criticality Index | UDF_CRIT_IDX (Number) | 关键度排序 |
| Duration Sensitivity | UDF_DUR_SENS (Number) | 工期敏感度排序 |

**月度风险分析流程**

| 步骤 | 操作 | 耗时 |
|------|------|:---:|
| 1 | P6 月度进度更新(Actual Dates, Remaining Duration) | 2 天 |
| 2 | P6 导出当前月 Data Date 的项目状态 | — |
| 3 | PRA File | Primavera | Open Primavera P6 Project...` → 登录 → 选择项目 | ~3 分钟 |
| 4 | PRA 中复核/调整风险数据(Min/Max Duration, Correlation) | ~2 小时 |
| 5 | `Risk | Run Risk Analysis`(1000 次迭代) | ~15 分钟 |
| 6 | 解读结果(Distribution Graph, Tornado, Risk Outputs) | ~1 小时 |
| 7 | `File | Primavera | Update Primavera P6 Project...` → 回写 P80 日期和关键度 | ~2 分钟 |
| 8 | P6 中打开项目,切换到 "Risk Output" 布局查看 P80 甘特图 | ~1 分钟 |
| 9 | 生成月度风险分析报告 | ~4 小时 |

**关键输出**

| 指标 | 第 1 个月 | 第 6 个月 | 第 12 个月 | 趋势 |
|------|:---:|:---:|:---:|------|
| 确定性完工概率 | 12% | 18% | 35% | 逐步改善 |
| P80 完工延期 | +8.5 月 | +6.2 月 | +4.1 月 | 风险收窄 |
| Top 1 敏感度 | 反应器安装 (0.72) | 管道预制 (0.58) | 电气调试 (0.49) | 风险源转移 |

**成果**

- 建立了月度 P6 → PRA → P6 的风险闭环流程
- P80 日期写入 P6 后,作为内部控制基线与业主的合同工期并行管理
- 12 个月后 P80 延期从 8.5 月收窄至 4.1 月——风险在项目管理过程中被逐步消化
- 第 12 个月将 Criticality Index Top 10 活动设为 P6 中的重点关注项(WBS 里程碑监控)

**踩坑记录**

- **坑1:**首次导入时没勾选 "Use as default for new projects",导致每月要重新配置 12 个映射字段。**教训:第一遍就勾上!**
- **坑2:**P6 管理员在某月新增了 2 个用户字段后,PRA 下拉列表中没有出现。原因是忘了同步。**解决方案:** 使用 File | Primavera | Edit Default Import Mappings` → Synchronize Primavera P6 Data 按钮。
- **坑3:**更新回 P6 时某个月报错,提示项目被 P6 用户锁定。**原因:**计划工程师忘了关闭 P6 中的项目。**教训:** 更新前确认项目在 P6 中已关闭。
- **坑4:** 月度分析中所有活动的 Duration Sensitivity 值突然全变为 0。排查发现 P6 在做进度更新时错误地将所有活动的 Duration Function 列清空了(批量编辑时误操作)。恢复了备份后修复。

---

## 本章小结

| 要点 | 一句话 |
|------|--------|
| 数据库 vs XER | 数据库支持双向读写(导入风险数据 + 导出分析结果),XER 仅单向读取 |
| P6 端准备 | 创建 "Risk Input - Schedule" 和 "Risk Input - Cost" 两种专用布局 |
| 导入映射 | General + Tasks + Probabilistic + Resources and Costs + Activity Codes 五个选项卡 |
| 默认映射 | 勾选 "Use as default for new projects" 避免重复配置 |
| 结果回写 | File | Primavera | Update Primavera P6 Project...` → 配置输出映射 → Update Now |
| P6 端查看 | 创建 "Risk Outputs" 和 "Risk Output - Dates" 布局,甘特图显示 P50/P80 条 |
| 项目级结果 | 项目成本分位数、完成概率等存储在项目用户字段中 |
| 同步新字段 | 使用 Synchronize Primavera P6 Data 按钮更新 PRA 中的字段列表 |

---

>  英文原版内容版权归 Oracle Corporation 所有。中文翻译、案例、习题由 [计划工程师](https://planner.cn) 独立创作。

广告位 · 合作联系