如何使用 DataStage 比较 Netezza 中的数据
Posted
技术标签:
【中文标题】如何使用 DataStage 比较 Netezza 中的数据【英文标题】:How to compare data in Netezza using DataStage 【发布时间】:2015-07-13 05:56:10 【问题描述】:我可以使用 DataStage 比较这两行,然后在 Status 字段发生变化时更新吗?
ID | desc | ... | ... | Status | Start_Date | End_Date
------------------------------------------------------------
123456 | ... | ... | ... | Y | 12/31/2014 | 21/31/9999
123456 | ... | ... | ... | N | 12/31/2014 | current_date
一开始我只有这一行
ID | desc | ... | ... | Status | Start_Date | End_Date
------------------------------------------------------------
123456 | ... | ... | ... | Y | 12/31/2014 | 21/31/9999
那么...我想和这一行比较
ID | desc | ... | ... | Status | Start_Date | End_Date
------------------------------------------------------------
123456| ... | ... | ... | N | 12/31/2014 | current_date
如果状态字段从Y
更改为N
,我想用current_date
更新End_Date
。如果状态字段从N
更改为Y
,我想用current_date
和End_Date
再次用12/31/9999
更新Start_Date
。是否可以在 DataStage 中执行此操作?
我尝试使用 Switch Processing,但是当我想在 Netezza 连接器中更新时卡住了。
【问题讨论】:
【参考方案1】:仅从表中提取具有End_Date
= 12/31/9999
的记录
然后在查找阶段比较ID
和状态与新记录,如果匹配则插入更新文件,不匹配的可以直接插入表中。
在更新文件中,您必须保留新记录和从表中获取的数据。
现在在变压器 satge 中对 ID
和 Start_Date
上的记录进行排序,并且在阶段变量中具有 if else 条件,例如如果 Status
为 N 然后结束前一个日期的日期并填充 End_Date
= @当前日期的 987654328@。
希望这会有所帮助。
【讨论】:
感谢 Abhis 回答我的问题。这是关于使用数据阶段存储缓慢移动的维度。我尝试使用 SCD 进程但仍然失败。我想念代理键、业务键、Type1、Type2 等...以上是关于如何使用 DataStage 比较 Netezza 中的数据的主要内容,如果未能解决你的问题,请参考以下文章