[英]BigQuery convert arrays of key:val items to table of rows where the columns are the keys
假设我在 bigquery 中有这个 arrays (拆分字符串的结果)
["user_id: 1342", "foo: bar", "baz: xxx"]
["user_id: 4312", "foo: ds", "baz: dss"]
["user_id: 512", "foo: fsf", "baz: aas"]
....
我想知道是否有一个选项 get result 作为一个看起来像这样的表:
用户身份 | 富 | 巴兹 |
---|---|---|
1342 | 酒吧 | xxx |
4312 | ds | dss |
512 | fsf | aas |
... | ... | ... |
我要做的是解析具有这种结构的日志消息: some log text... user_id: 123, foo: bar, baz: xxx
我已经使用 SUBSTR、STRPOS 和 SPLIT 将字符串解析为具有初始 arrays,但我不知道如何将键移动到列并获得最终结果。
考虑下面的 PIVOT查询。
WITH sample_table AS (
SELECT ["user_id: 1342", "foo: bar", "baz: xxx"] arr UNION ALL
SELECT ["user_id: 4312", "foo: ds", "baz: dss"] UNION ALL
SELECT ["user_id: 512", "foo: fsf", "baz: aas"]
)
SELECT * EXCEPT(rn) FROM (
SELECT SPLIT(kv, ':')[OFFSET(0)] k,
TRIM(SPLIT(kv, ':')[OFFSET(1)]) v,
rn
FROM (SELECT *, ROW_NUMBER() OVER () rn FROM sample_table), UNNEST(arr) kv
) PIVOT (ANY_VALUE(v) FOR k IN ('user_id', 'foo', 'baz'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.