在雅典娜(元数据库)中选择不为空的列

Selecting Columns which are not null in Athena(Metabase)

我在 Athena(Metabase) 中有一个 table 的 1000 多个列,我想知道如何只提取那些对于特定 ID 组不为空的列。

通常,这需要将您的列反透视到行,然后检查不为空的位置,然后返回到 PIVOT。 从文档来看,Athena 可能做得更简单。 记录 here

SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)

哪个returns:

[-1,10]

不幸的是,因为在我们到达数组之前没有动态的能力,这看起来像:

WITH dataset AS (
  SELECT
    ID,
    ARRAY[field1, field2, field3, .....] AS fields
  FROM
    Your1000ColumnTable
)
SELECT ID, SELECT filter(fields, q -> q IS NOT NULL)
FROM dataset

如果您需要访问数组中的列名,请在创建数组时使用到字段名的映射,如 here