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 记录的主要内容,如果未能解决你的问题,请参考以下文章
AWS Redshift SQL - PIVOT 查询(一行/行多次计数)