Informatica
Informatica 数列生成器
当映射需要在 PowerCenter 内部生成可预测的代理键时,使用数列生成器。
它的作用
- 在映射内部生成数值,不依赖源系统。
- 通常为维度、暂存表或行级 ID 提供代理键。
- 暴露两个端口:NEXTVAL 获取下一个生成值,CURRVAL 获取当前值。
核心端口
| 元素 | 含义 | 典型用途 |
|---|---|---|
| NEXTVAL | 序列中的下一个生成值。 | 写入新的代理键。 |
| CURRVAL | NEXTVAL 推进后的当前值。 | 在下游复用同一生成键。 |
| 起始值 | 首个输出值。 | 设定一次加载的首个键。 |
| 增量 | 值之间的步长。 | 控制键间距或分区。 |
基本流程
- 1在映射中添加数列生成器转换。
- 2配置起始值、增量与端口用法。
- 3将 NEXTVAL 连接到需要新标识符的目标键列。
- 4仅在映射中需要多次复用同一生成值时使用 CURRVAL。
代码
典型代理键模式
SRC_CUSTOMER -> EXP_CLEAN -> SEQ_CUSTOMER_KEY.NEXTVAL -> TGT_DIM_CUSTOMER.CUSTOMER_KEY常见问题
什么时候使用 CURRVAL?
当同一个生成键需要馈入同一映射中的多个下游字段时使用。
为什么用数列生成器而不是源键?
源键常跨系统冲突,或对维度模型不够稳定。
数列生成器保证代理键无空洞吗?
不保证。会话失败或行拒绝后不会回滚值,ETL 流程中出现空洞是正常现象。
可以跨多个目标表共享一个生成器吗?
技术上可以,但不推荐。共享生成器会产生交错键区间,难以判断各表键域。建议每张目标表使用独立生成器,保证键隔离清晰。
相关链接