如何从 TRINO 中的键/值对象数组中提取值并创建逗号分隔的值数组

mat*_*ayu 2 sql presto trino

在 Trino(又名 Presto)工作。我有一个数据表,其结构如下:

公司 ID 公司名称 相关公司
xy12345 酷公司 [{company_id=we23456,type=PARTNER},{company_id=tr45678,type=PARTNER},{company_id=fu76354,type=PARTNER}]

related_companies字段的类型为list<struct<company_id: string, type: string>>

如何构建我的查询以获得输出结果:

公司 ID 公司名称 相关公司
xy12345 酷公司 we23456、tr45678、fu76354

Gur*_*ron 6

您可以利用数组函数-transformarray_join

-- sample data
with dataset (company_id, company_name, related_companies) as (
    values ('xy12345', 'Cool Company', array[cast(row('we23456','PARTNER') as row(company_id varchar, "type" varchar)), 
                                            cast(row('tr45678','PARTNER') as row(company_id varchar, "type" varchar))])
)

-- query
select company_id, 
   company_name, 
   array_join(transform(related_companies, r -> r.company_id), ', ') related_companies
from dataset;
Run Code Online (Sandbox Code Playgroud)

输出:

公司 ID 公司名称 相关公司
xy12345 酷公司 we23456、tr45678