如何遍历每个表中的所有表和字段以获取丢失值的百分比

时间:2019-10-24 00:38:44

标签: sql-server ssis etl data-profiling

我正在尝试使用SSIS获取一个表,以获取SQL Server数据库每个表中每个字段的缺失值的百分比。

理想情况下,我想在另一个具有4个字段的数据库中创建一个新表

表/字段/类型/ PctMissingValues

在表的每个字段中都有一行。类型将是字段类型

我的想法是使用foreach循环容器循环遍历表和字段,在容器内进行一个由OLE DB Source> Aggregate> OLE DB Destination组成的数据流任务,但我不知道该怎么做对SSIS和ETL来说是新的

2 个答案:

答案 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值比率。在线上有许多链接,可提供逐步指南: