【发布时间】:2019-05-13 13:17:48
【问题描述】:
我觉得这应该很简单,但我一直在努力寻找正确的术语,请多多包涵。
我有两列,timestamp 和 voltages 这是数组
如果我做一个简单的
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
但我需要能够以编程方式执行此操作,而不是列出它们。
我是否遗漏了一些明显的东西?
【问题讨论】:
-
Daniel,SQL 是静态类型的。在执行查询之前需要知道结果列的数量,因此不能有
v1, v2, ...(取决于数组的实际长度)。话虽如此,您仍然可以“以编程方式”生成 SQL。但是你不能让 SQL 单独为你做这件事。 -
谢谢 Piotr,我想知道,但我想如果是这种情况,可能有办法通过对第一个结果的二次查询来做到这一点。嗯。
标签: amazon-athena presto