簡體   English   中英

BigQuery 將 arrays 的 key:val 項目轉換為以列為鍵的行表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM