BigQuery 值拆分
Posted
技术标签:
【中文标题】BigQuery 值拆分【英文标题】:BigQuery Value Splitting 【发布时间】:2021-08-22 12:55:09 【问题描述】:我正在尝试将日志数据分离/提取到列中。 我尝试使用“空格”作为分隔符,但值之间也有空格。 我也尝试使用正则表达式,但由于值中的“空格”而遇到困难。
由于是不同键值的日志数据,我想避免硬编码键,即:rt、shost、src...
部分样本数据:
rt=Aug 19 2021 00:00:02 UTC+00:00 shost=dns.google src=8.8.8.8
BigQuery 脚本来拆分数据,所以我可以使用 SAFE_OFFSET 来获取数组:
SELECT split(details, ' ') FROM (SELECT 'rt=Aug 19 2021 00:00:02 UTC+00:00 shost=dns.google src=8.8.8.8' details)
BigQuery 脚本 regexp_extract:
SELECT regexp_extract_all(details, r'[\w=.:]*') FROM (SELECT 'rt=2021 年 8 月 19 日 00:00:02 UTC+00:00 shost=dns.google src=8.8.8.8'详情)
我想不出任何其他方法来解决这个问题,并且很乐意接受任何建议。
【问题讨论】:
【参考方案1】:用特殊字符标记新的日志参数怎么样?然后分裂在这些。由于我不知道您的数据输入,特殊字符在这里是@<*>@
,它不应该出现在任何日志中。
SELECT
split(REGEXP_replace(details, r' (\w*=)',r'@<*>@\1'),'@<*>@')
FROM (
SELECT
'rt=Aug 19 2021 00:00:02 UTC+00:00 shost=dns.google src=8.8.8.8' details)
【讨论】:
以上是关于BigQuery 值拆分的主要内容,如果未能解决你的问题,请参考以下文章