我正在尝试使用SSIS获取一个表,以获取SQL Server数据库每个表中每个字段的缺失值的百分比。
理想情况下,我想在另一个具有4个字段的数据库中创建一个新表
表/字段/类型/ PctMissingValues
在表的每个字段中都有一行。类型将是字段类型
我的想法是使用foreach循环容器循环遍历表和字段,在容器内进行一个由OLE DB Source> Aggregate> OLE DB Destination组成的数据流任务,但我不知道该怎么做对SSIS和ETL来说是新的
答案 0 :(得分:2)
以下SQL查询在数据库中每列生成一个查询,该查询计算总行和值为NULL的行。
您可以将其加载到变量中,并在SSIS中遍历它,一次在每一行中运行该语句,并将查询到的结果表记录到另一个表中。
SELECT
OBJECT_SCHEMA_NAME(C.object_id) AS TableSchema
,OBJECT_NAME(C.object_id) AS TableName
,C.name AS ColumnName
,'SELECT COUNT(*) AS TotalRows, COUNT(IIF([' +C.name+ '] IS NULL,1,NULL)) AS NullRows
FROM [' + OBJECT_SCHEMA_NAME(C.object_id) + '].[' + OBJECT_NAME(C.object_id) + ']' AS CountQuery
FROM sys.columns AS C
INNER JOIN sys.tables AS T
ON C.object_id = T.object_id
答案 1 :(得分:2)
您可以使用SSIS data profiling task获取表中的NULL值比率。在线上有许多链接,可提供逐步指南: