【问题标题】:Extracting Array elements in Presto w/o using unnest function使用 unnest 函数在 Presto w/o 中提取数组元素
【发布时间】:2020-12-24 01:41:22
【问题描述】:

我对这些数据有一个要求,我需要提取数组元素,但我仍然希望将它们分组,这意味着我不能使用 unnest 函数。以下是样本数据:

[ 
  { "emp_id": 8291828, "name": "bruce", }, 
  { "emp_id": 8291823, "name": "Rolli" }
]

我的数据与上面的格式相同,即(array(row(emp_id varchar, name varchar)))我需要的是去掉数组,让数据看起来像

{ "emp_id": 8291828, "name": "bruce", }, 
{ "emp_id": 8291823, "name": "Rolli" }

如果有人可以帮助我,将不胜感激。

【问题讨论】:

  • 结果集中有多少行:1 还是 2?您期望的数据类型是什么?

标签: sql arrays presto


【解决方案1】:

如果你有一个序列表(1,2,3,..),你可以使用 element_at

with numbers as 
(
    select * from 
    (
    Values
    (1),(2),(3)
    ) as x(i)
)
,emp as
(
    select *
    from (
        values
        (ARRAY[cast(ROW(8291828,'bruce') as row(emp_id bigint, name varchar)), cast(row(8291823,'Rolli') as row(emp_id bigint, name varchar))])
    ) as emp (records)
)
select 
element_at(emp.records,i) record
from numbers n
cross join emp
where n.i <= cardinality(emp.records);

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2021-05-01
    • 2019-12-16
    • 2020-09-25
    • 1970-01-01
    • 2016-04-02
    • 2020-04-21
    • 2019-01-21
    • 2019-06-24
    相关资源
    最近更新 更多