2017-07-06 28 views
1

我想获得NULL值的百分比在蜂巢的表。有没有简单的方法来做到这一点,而不必枚举查询中的所有列名称?在这种情况下,大约有50k行和20列。提前致谢!获取所有列空的比例在蜂巢

喜欢的东西:

SELECT count(each_column)/count(*) FROM TABLE_1 WHERE each_column = NULL;

回答

1

如果你做到这一点使用的代码,你需要列出列。这里有一种方法:

select avg(case when col1 is null then 1.0 else 0.0 end) as col1_null_p, 
     avg(case when col2 is null then 1.0 else 0.0 end) as col2_null_p, 
     . . . 
from t; 

如果您获取表中的列表,您可以随时在电子表格中构建查询。

+0

好的,这就是我认为我必须做的。我正在为不同列名的多个表执行此操作,并且我想要一个快速而简单的方法来执行此操作,而无需指定'col1','col2'等。 – qbzenker

+0

保存您的工作,以便只需编写一次。 –

+0

非常真实 - 会做。谢谢大家。 – qbzenker

1

你需要的方法取决于你有这种情况:

  • 对于20个固定栏目:只需输入查询
  • 200固定列:列名复制到您喜爱的工具(EXCEL)并建立有
  • 查询对于N列可能不固定的:写一个脚本来生成代码

我曾经写过一个Python脚本。我现在手边没有它,但使用以下逻辑创建起来非常容易:

  1. 查询表的前1(或0?)行,获取所有标题。
  2. 构建所需的查询以生成基于列的统计信息(如空值的百分比)并将结果联合起来
  3. 然后执行查询。

当然,它可以扩展为运行不同的表格和统计数据,但要意识到这可能无法很好地扩展。

在我来说,我想我不得不削减在每个然后将以后连接的时间20列批次查询的建筑,因为它运行在400列的仅仅产生了过于复杂的查询。

+0

感谢您的回复。这非常有帮助。 – qbzenker