雅典娜查询折叠稀疏矩阵/柱状数据

athena query to collapse sparse matrix / columnar data

假设我在 Amazon Athena 中有以下 table table1(从技术上讲,在 Glue 中):

torg, foo, bar, x1, x2, x3, baz
-------------------------------
t1, 1, NULL,   NULL, NULL, NULL, goober
t2, 1, NULL,   NULL, NULL, NULL, NULL  -- want to ignore this row entirely, even though foo=1
t3, 1, tronic, NULL, NULL, NULL, NULL
...
t4, 2, NULL,   NULL, NULL, NULL, horse
t4, 2, zebra,  NULL, NULL, NULL, NULL
...

是否有一个 Athena 查询可以 group by foo(在这个例子中 foo=1),但忽略每一行的 NULL 列值,这样的结果会是什么样子?

foo, bar, baz
----------------
1, tronic, goober

对于上下文,我在不同的时间将 as partitioned parquet 写入 S3。使用 Athena 查询这些数据真是太棒了,但我很难想象 Athena 是否是将这些柱状数据“折叠”成按特定列(或一组列)分组的更多“按行”数据的正确位置).

虽然我可能会在 pandas 中进一步处理这些数据,并可能会在那里“折叠”它,但我希望 Athena 中可能有一个查询模式。或者也许我在想这个完全错误...

非常感谢任何见解。

如果每组只有一个值,则可以使用 max(或 min)和 group by:

WITH dataset(foo,bar, baz) AS (
   VALUES 
    (1,NULL,'tronic'),
    (1,'goober',NULL),
    (1,NULL, NULL)
 ) 
 
SELECT foo, max(bar) bar, max(baz) baz
FROM dataset
GROUP BY foo

输出:

foo bar baz
1 goober tronic