Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取配置单元中所有列的NULL百分比_Sql_Hadoop_Hive - Fatal编程技术网

Sql 获取配置单元中所有列的NULL百分比

Sql 获取配置单元中所有列的NULL百分比,sql,hadoop,hive,Sql,Hadoop,Hive,我想获取配置单元中表中空值的百分比。有没有一种不必枚举查询中所有列名的简单方法?在本例中,大约有50k行和20列。提前谢谢 比如: 从表1中选择计数(每列)/count(*) 其中每个_列=NULL如果使用代码执行此操作,则需要列出列。这里有一个方法: 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.

我想获取配置单元中表中空值的百分比。有没有一种不必枚举查询中所有列名的简单方法?在本例中,大约有50k行和20列。提前谢谢

比如:

从表1中选择计数(每列)/count(*)

其中每个_列=NULL

如果使用代码执行此操作,则需要列出列。这里有一个方法:

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;

如果采用表中的列列表,则可以在电子表格中轻松构造查询。

所需的方法取决于您的情况:

  • 对于20个固定列:只需键入您的查询
  • 对于200个固定列:将列名复制到您最喜欢的工具(excel)中,并在其中生成查询
  • 对于n个可能不固定的列:编写脚本以生成代码
我曾经写过一个python脚本。我现在手头上没有,但使用以下逻辑很容易创建:

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


    在我的例子中,我认为我必须将查询构建分为20列,每次20列,然后将其连接起来,因为在400列上运行它只会生成一个太复杂的查询。

    好的,我认为我必须这样做。我正在为多个具有不同列名的表执行此操作,我希望使用一种快速简便的方法来执行此操作,而无需指定
    col1
    col2
    等。感谢您的回复。这很有帮助。