雅典娜查询折叠稀疏矩阵/柱状数据
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
假设我在 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 |