gpt4 book ai didi

amazon-athena - 在 Athena/Presto 中将数组拆分为列

转载 作者:行者123 更新时间:2023-12-02 04:26:50 27 4
gpt4 key购买 nike

我觉得这应该很简单,但我一直在努力寻找正确的术语,请耐心等待。

我有两列,timestampvoltages这是数组

如果我做一个简单的

SELECT timestamp, voltages FROM table

然后我会得到一个结果:
|timestamp | voltages |
|1544435470 |3.7352,3.749,3.7433,3.7533|
|1544435477 |3.7352,3.751,3.7452,3.7533|
|1544435484 |3.7371,3.749,3.7433,3.7533|
|1544435490 |3.7352,3.749,3.7452,3.7533|
|1544435497 |3.7352,3.751,3.7452,3.7533|
|1544435504 |3.7352,3.749,3.7452,3.7533|

但是我想拆分 voltages数组,因此其数组中的每个元素都是其自己的列。
|timestamp | v1 | v2 | v3 | v4 |
|1544435470 |3.7352 |3.749 |3.7433 |3.7533|
|1544435477 |3.7352 |3.751 |3.7452 |3.7533|
|1544435484 |3.7371 |3.749 |3.7433 |3.7533|
|1544435490 |3.7352 |3.749 |3.7452 |3.7533|
|1544435497 |3.7352 |3.751 |3.7452 |3.7533|
|1544435504 |3.7352 |3.749 |3.7452 |3.7533|

我知道我可以这样做:
SELECT timestamp, voltages[1] as v1, voltages[2] as v2 FROM table

但是我需要能够以编程方式执行此操作,而不是将它们列出来。

我错过了一些明显的东西吗?

最佳答案

如果您有固定长度的数组,这应该可以满足您的目的。
您需要首先将每个数组元素分解为它自己的行。您可以使用 UNNEST 执行此操作操作符如下:

SELECT timestamp, volt
FROM table
CROSS JOIN UNNEST(voltages) AS t(volt)

使用结果表,您可以通过引用 Gordon Linoff here 的答案将具有相同时间戳的多行转换为多列。

关于amazon-athena - 在 Athena/Presto 中将数组拆分为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com