【发布时间】:2019-07-18 21:31:21
【问题描述】:
我正在将 Stackdriver 日志流式传输到 Bigquery,它们最终以以下格式显示在 textPayload 字段中:
member_id_hashed=123456789,
member_age -> Float(37.0,244),
operations=[92967,93486,86220,92814,92943,93279,...],
scores=[3.214899,2.3641025E-5,2.5823574,2.3818345,3.9919448,0.0,...],
[etc]
然后,我使用原始日志条目在表上定义一个查询/视图,如下所示:
SELECT
member_id_hashed as member_id, member_age,
split(operations,',') as operation,
split(scores,',') as score
FROM
(
SELECT
REGEXP_EXTRACT(textPayload, r'member_id=([0-9]+)') as member_id_hashed,
REGEXP_EXTRACT(textPayload, r'member_age -> Float\(([0-9]+)') as member_age,
REGEXP_EXTRACT(textPayload, r'operations=\[(.+)') as operations,
REGEXP_EXTRACT(textPayload, r'scores=\[(.+)') as scores
from `myproject.mydataset.mytable`
)
导致一行有两个单个字段和两个数组:
理想情况下,为了进一步分析,我希望将两个数组嵌套(例如 operation.id 和 operation.score)或在保持位置的同时逐行展平数组(即数组 1 的第 1 行应该出现在数组 2 的第 1 行等):
任何人都可以指出一种从数组中生成嵌套字段或展平数组的方法吗?我尝试了取消嵌套和加入,但这会给我的结果带来太多可能的交叉组合。
感谢您的帮助!
【问题讨论】:
标签: google-bigquery