获取Hive中所有列的NULL百分比

时间:2017-07-06 16:45:48

标签: sql hadoop hive

我想在Hive中的表中获取NULL值的百分比。是否有一种简单的方法可以在不必枚举查询中的所有列名的情况下执行此操作?在这种情况下,大约有50k行和20列。提前谢谢!

类似的东西:

ALTER USER username SET search_path = schema1,schema2;

2 个答案:

答案 0 :(得分:2)

如果您使用代码执行此操作,则需要列出列。这是一种方式:

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;

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

答案 1 :(得分:1)

您需要的方法取决于您拥有的情况:

  • 对于20个固定列:只需输入您的查询
  • 对于200个固定列:将列名复制到您喜欢的工具(excel)并在那里构建查询
  • 对于可能无法修复的n列:编写脚本以生成代码

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

  1. 查询表的前1行(或0?)行,以获取所有标题。
  2. 构建所需的查询以生成基于列的统计信息(如空值的百分比)并合并结果
  3. 然后执行查询。
  4. 当然,它可以扩展为针对不同的表和统计数据运行,但确实意识到这可能无法很好地扩展。

    在我的情况下,我认为我必须每次批量删除20列的查询,之后会连接,因为在400列上运行它只会生成一个太复杂的查询。