SQL:有没有办法从 Redshift 中的信息模式中计算 Null 记录

Posted

技术标签:

【中文标题】SQL:有没有办法从 Redshift 中的信息模式中计算 Null 记录【英文标题】:SQL: Is there a way to count Null records from Information Schema in Redshift 【发布时间】:2020-12-21 22:51:24 【问题描述】:

我目前有一个脚本可以提取所有表名、列和数据类型。我正在尝试添加一个列来计算每列的空记录数。

我尝试将其添加到脚本中,但无法正常工作。

当前脚本:

选择不同的表名、列名、数据类型 来自 information_schema.columns 其中 table_schema = '模式'

有什么我可以添加类似于以下内容的吗?

    sum(列为空则为1,否则为0结束的情况) select count(column) where column is not null

【问题讨论】:

【参考方案1】:

由于 count() 只计算非空值,我们可以轻松计算列中非空条目的数量。从总行数中减去,您有空条目数。

select count(*) - count(column) as num_null_in_column;

【讨论】:

谢谢比尔。这是有道理的,但我仍然无法在我的脚本中使用它 那么您的脚本是在什么基础上运行和编写的?问题是错误还是错误的结果?您能否提供您发出的错误或产生错误结果的 SQL? 嗨,比尔,感谢您回复我。我的脚本在亚马逊红移上运行。我目前正在运行以下脚本来为我提供架构中的所有表和列名。结果在每一行中都有列名。我希望然后看到这些列中有多少空值。最终结果类似于第 1 行:表 1,列名 1,0 个空值行 2 表 1,列名 2,5 个空值... 从 information_schema.columns 中选择不同的 table_name、column_name、data_type where table_schema = 'schema' 我认为这个线程是我想要做的,但我无法调整它以与我的表格一起使用。 ***.com/questions/40850949/… 我想我知道您现在正在寻找什么 - 您希望“脚本”位于 Redshift 中。所以你可以从 SVV_COLUMNS 得到你的前 2 列,对吗?您希望“脚本”灵活,并随着时间的推移而调整数据库具有的表和列的数量,对吗?这可以通过存储过程来完成 AFAIK,该存储过程采用模式、表和列并返回答案中描述的差异。另一种方法是通过 SVV_COLUMNS 使用外部工具循环,并将结果放入您可能想要的汇总表中。续。

以上是关于SQL:有没有办法从 Redshift 中的信息模式中计算 Null 记录的主要内容,如果未能解决你的问题,请参考以下文章

控制台中的 Redshift Vacuum 进度

有没有办法将数据从 redshift 加载到 HDFS?

从 Redshift 表中获取 JSON 数据

AWS Redshift SQL - PIVOT 查询(一行/行多次计数)

Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?

将结果从 Pig 直接存储到 Redshift?