如何在 BigQuery 中选择具有所有 NULL 值的数据列

Pra*_*nav 3 sql google-bigquery

如何在 BigQuery 中选择具有所有 NULL 值的数据列

A          B          C 
NULL       1           NULL
NULL       NULL        NULL
NULL       2           NULL
NULL       3           NULL
Run Code Online (Sandbox Code Playgroud)

我想检索 A 列和 C 列。请您帮忙!

Ell*_*ard 9

扩展我对米哈伊尔回答的评论,这就是我的想法。它不需要生成查询字符串,如果您有大量列,查询字符串可能会很长。它将每个列名的空值计数与表中的总行数进行比较,以确定是否应将列包含在结果中。

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT NULL A,  1 B,  NULL C  UNION ALL
      SELECT NULL,    NULL, NULL    UNION ALL
      SELECT NULL,    2,    NULL    UNION ALL
      SELECT NULL,    3,    NULL 
    )
    SELECT null_column
    FROM `project.dataset.table` AS t,
      UNNEST(REGEXP_EXTRACT_ALL(
        TO_JSON_STRING(t),
        r'\"([a-zA-Z0-9\_]+)\":null')
      ) AS null_column
    GROUP BY null_column
    HAVING COUNT(*) = (SELECT COUNT(*) FROM `project.dataset.table`);
Run Code Online (Sandbox Code Playgroud)