簡體   English   中英

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

[英]Get percentage of NULL for all columns in Hive

我想在Hive的表中獲取NULL值的百分比。 有沒有一種簡單的方法,而不必枚舉查詢中的所有列名稱? 在這種情況下,大約有5萬行和20列。 提前致謝!

就像是:

SELECT count(each_column) / count(*) FROM TABLE_1 WHERE each_column = 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. 查詢表的前1(或0?)行,以獲取所有標題。
  2. 建立所需的查詢以生成基於列的統計信息(如空值的百分比)並合並結果
  3. 然后執行查詢。

當然,可以將其擴展為針對不同的表和統計信息運行,但是確實意識到這可能無法很好地擴展。

在我的情況下,我認為我必須每次將查詢構建分為20列的批處理,然后將其連接起來,因為在400列上運行它只會生成一個過於復雜的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM