2017-07-06 32 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