DataStage - 列出具有无效日期的字段

时间:2017-10-16 02:47:29

标签: etl datastage

我想列出日期无效的字段。目前我只提出以下条件来检查日期有效性。

If 
IsValid('%dd-%mm-%yyyy',ln_source_1.A_Date) or
IsValid('%dd-%mm-%yyyy',ln_source_1.B_Date) or
IsValid('%dd-%mm-%yyyy',ln_source_1.C_Date) 
then 1 else 0

日期表

ID | A_Date | B_DATE | C_Date

001 | 16-10-2017 | 16-31-2017 | 16-10-017

002 | 61-10-2017 | 2017年1月1日| 16-10-2017

基于上面的例子,B_Date和C_Date无效。那么,是否可以列出如下的无效日期和方式?

状态| INVALID_DATE |

001 | B_DATE,C_Date |

002 | A_Date |

注意:我有许多日期字段来检查其有效性,其中一些可以为空

由于

1 个答案:

答案 0 :(得分:0)

首先,需要像这样调用IsValid函数:

IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy")

您的结果示例不清楚,因为您的第二列显示日期,但您列出的是列名称。 连接可能是一个选项,取决于多少“许多日期f”。

你可以选择Stagevariable

svInvalid =>将其设为“”

svValid =>将其设为“”

并且像这样进行检查(假设所有输入和外场都是Varchar数据类型)

IF IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy")
THEN svValid : "A_DATE, "
ELSE svInvalid : "A_DATE, "

在输出列中,将svValid分配给新的VALID列,将svInavalid分配给新的INVALID列。