将文本字符串拆分为 presto 中的匹配列
splitting a text string to matching columns in presto
我有一份来自 presto 查询的报告,它以字符串形式提供了我的信息
原始数据如下所示:
c_pre=CI2UhdX95uACFcKIdwodZ8QETQ;gtm=2od241;auiddc=*;u1=cz;u10=Not
Available;u11=Not Available;u12=1;u13=Not Available;u14=SGD;u15=Not
Available;u3=pdp;u4=undefined;u6=Not Available;~oref=https://www.bbc.com/
我找到了一个 excel 解决方法,将其拆分为单独的列。 screenshot attached for reference
这个过程仍然需要很长时间才能完成,我希望使用 presto 仪表板将其自动化。
所有具有相同 u 前缀的项目(上例中的 u3、u13 等)都必须进入同一列,否则我只会做一个字符串切片。不幸的是,不同的字符串根据存储的数据有不同的结果,导致同一列中的u前缀不同。Screenshot to show why this is confusing
Excel查询:
=IFERROR(
RIGHT(
INDEX(RD!2:2,1,
MATCH('Data LU'!A&"="&"*",RD!2:2,0)),
(LEN(
INDEX(RD!2:2,1,
MATCH('Data LU'!A&"="&"*",RD!2:2,0)))-(LEN(A)+1))),"")
如果有帮助的话
假设您知道所有可能前缀的集合,您可以这样做:
with t as (select split_to_map(<column>,';','=') map from <table>)
select
element_at(map, 'u1') as u1,
element_at(map, 'u2') as u2,
element_at(map, 'u3') as u3,
...
from t
遗憾的是,目前(从版本 304 开始)无法将值动态分解为单独的列。
您可以在此处找到 split_to_map
和 element_at
的文档:
https://trino.io/docs/current/functions/string.html#split_to_map
https://trino.io/docs/current/functions/map.html
我有一份来自 presto 查询的报告,它以字符串形式提供了我的信息
原始数据如下所示:
c_pre=CI2UhdX95uACFcKIdwodZ8QETQ;gtm=2od241;auiddc=*;u1=cz;u10=Not
Available;u11=Not Available;u12=1;u13=Not Available;u14=SGD;u15=Not
Available;u3=pdp;u4=undefined;u6=Not Available;~oref=https://www.bbc.com/
我找到了一个 excel 解决方法,将其拆分为单独的列。 screenshot attached for reference
这个过程仍然需要很长时间才能完成,我希望使用 presto 仪表板将其自动化。
所有具有相同 u 前缀的项目(上例中的 u3、u13 等)都必须进入同一列,否则我只会做一个字符串切片。不幸的是,不同的字符串根据存储的数据有不同的结果,导致同一列中的u前缀不同。Screenshot to show why this is confusing
Excel查询:
=IFERROR(
RIGHT(
INDEX(RD!2:2,1,
MATCH('Data LU'!A&"="&"*",RD!2:2,0)),
(LEN(
INDEX(RD!2:2,1,
MATCH('Data LU'!A&"="&"*",RD!2:2,0)))-(LEN(A)+1))),"")
如果有帮助的话
假设您知道所有可能前缀的集合,您可以这样做:
with t as (select split_to_map(<column>,';','=') map from <table>)
select
element_at(map, 'u1') as u1,
element_at(map, 'u2') as u2,
element_at(map, 'u3') as u3,
...
from t
遗憾的是,目前(从版本 304 开始)无法将值动态分解为单独的列。
您可以在此处找到 split_to_map
和 element_at
的文档:
https://trino.io/docs/current/functions/string.html#split_to_map
https://trino.io/docs/current/functions/map.html