BigQuery 检查整个表的空值

Can*_*ice 1 google-bigquery

不确定这里是否需要可重现的示例。我在 BigQuery 中有一个大表和宽表(10K 行 x 100 列),我想知道是否有任何列有空值,以及有多少空值。是否有我可以运行的查询,该查询将返回一个 1 行表,指示每列中的空值数,不需要 100 次ifnull调用?

谢谢!

Mik*_*ant 6

下面是 BigQuery 标准 SQL

#standardSQL
SELECT col_name, COUNT(1) nulls_count
FROM `project.dataset.table` t,
UNNEST(REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(\w+)":null')) col_name
GROUP BY col_name 
Run Code Online (Sandbox Code Playgroud)

而不是只返回一行 - 它返回那些包含 NULL 的列 - 每列并在单独的行中计数 - 如下例所示

Row col_name    nulls_count  
1   col_a       21   
2   col_d       12   
Run Code Online (Sandbox Code Playgroud)