SSIS 中的条件数据验证
Conditional Data Validation In SSIS
我的情况是 table 有两个主要列 DataFieldName 和 DataFieldValue 以及一些标识符,例如 OrderNumber。
现在在 DataFieldName 中有一个名为“OrderDate”的值,相应的日期在 DataFieldValue 中。
但是“OrderDate”的一些值是非日期值。我需要根据 DataFieldName 的值为“OrderDate”的条件验证此类非日期值,然后在 SSIS 中验证 DataFieldValue 的有效日期。
您可以使用 Conditional Split
拆分数据:
或者如果您使用的是 SQL 条件查询:
SELECT DataFieldName, DataFieldValue FROM yourTable
WHERE DataFieldName LIKE 'OrderDate'
如果您正在使用 SQL 服务器:
SELECT
CASE WHEN TRY_CONVERT(date, DataFieldValue) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result
FROM yourTable
如果您使用的是 Oracle :
SELECT cast(DataFieldValue AS NUMBER DEFAULT NULL ON CONVERSION ERROR) FROM yourTable
或者,您可以使用 Data Conversion Transformation
组件:
然后您可以将输出重定向到平面文件,例如:
我的情况是 table 有两个主要列 DataFieldName 和 DataFieldValue 以及一些标识符,例如 OrderNumber。
现在在 DataFieldName 中有一个名为“OrderDate”的值,相应的日期在 DataFieldValue 中。
但是“OrderDate”的一些值是非日期值。我需要根据 DataFieldName 的值为“OrderDate”的条件验证此类非日期值,然后在 SSIS 中验证 DataFieldValue 的有效日期。
您可以使用 Conditional Split
拆分数据:
或者如果您使用的是 SQL 条件查询:
SELECT DataFieldName, DataFieldValue FROM yourTable
WHERE DataFieldName LIKE 'OrderDate'
如果您正在使用 SQL 服务器:
SELECT
CASE WHEN TRY_CONVERT(date, DataFieldValue) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result
FROM yourTable
如果您使用的是 Oracle :
SELECT cast(DataFieldValue AS NUMBER DEFAULT NULL ON CONVERSION ERROR) FROM yourTable
或者,您可以使用 Data Conversion Transformation
组件:
然后您可以将输出重定向到平面文件,例如: