如何遍历所有 table 和每个 table 中的字段以获得缺失值的百分比

How to loop through all tables and fields in each table to get percentage of missing values

我正在尝试使用 SSIS 获取 table 以获取 SQL 服务器数据库的每个 table 中每个字段缺失值的百分比。

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

Table/字段/类型/PctMissingValues

table 的每个字段一行。类型将是字段类型

我的想法是使用 foreach 循环容器循环遍历 tables 和字段,在容器内部有一个由 OLE DB 源 > 聚合 > OLE DB 目标组成的数据流任务,但我想不通不知道如何做到这一点,一般来说我是 SSIS 和 ETL 的新手

以下 SQL 查询为数据库中的每一列生成一个查询,计算总行数和值为 NULL 的行数。

您可以将其加载到一个变量中并在 SSIS 中循环遍历它 运行 每行中的语句一次一个,并将查询结果记录到另一个 table。

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

可以使用SSIS data profiling task得到table中的NULL值比例。有许多在线链接可提供分步指南: