Redshift:分析数据库中所有表中具有空值的所有列
Posted
技术标签:
【中文标题】Redshift:分析数据库中所有表中具有空值的所有列【英文标题】:Redshift: Analysis of all columns with null values in all the tables in a database 【发布时间】:2018-06-29 11:29:05 【问题描述】:需要在我的数据库中所有表的所有列中查找 null 和非 null 值的计数。通过以下查询,我可以获得单个表的信息。
SELECT
'A' as col_name,
COUNT(*) - COUNT(A) as nul_val,
COUNT(A) as nnul_val
FROM table1
UNION
SELECT
'B' as col_name,
COUNT(*) - COUNT(B) as nul_val,
COUNT(B) as nnul_val
FROM table1
我可以查询 information_schema 以获取列名和表名的列表。
SELECT column_name, table_name from information_schema.columns;
如何将此处的 column_name 和 table_name 值传递给我的主查询?我的数据库是 Redshift,它没有提供变量。很可能需要使用 python UDF,但我不确定如何为我的案例编写它们。
【问题讨论】:
【参考方案1】:Python UDF 对您没有帮助 - 它们只能返回一个值。
您需要在 Redshift 外部编写一个程序来收集表及其列的列表,然后针对每个表和表的特定列运行查询。
顺便说一句,可能有一种更简单的方法来计算空值,如下所示:
SELECT
SUM(CASE WHEN column1 IS NULL THEN 1 END) as column1_null_count,
SUM(CASE WHEN column1 IS NOT NULL THEN 1 END) as column1_not_null_count,
SUM(CASE WHEN column2 IS NULL THEN 1 END) as column2_null_count,
SUM(CASE WHEN column2 IS NOT NULL THEN 1 END) as column2_not_null_count
FROM table
【讨论】:
以上是关于Redshift:分析数据库中所有表中具有空值的所有列的主要内容,如果未能解决你的问题,请参考以下文章