【发布时间】:2015-04-11 00:21:48
【问题描述】:
所以上周我能够开始将我的 Appengine 日志流式传输到 BigQuery 中,现在我正在尝试将一些数据从日志条目中提取到一个表中。
protoPayload.resource 中的数据是请求的页面,其中包含查询字符串参数。
protoPayload.resource 的内容类似于以下示例:
/service.html?device_ID=123456
/service.html?v=2&device_ID=78ec9b4a56
我快接近了,但是当 device_ID 之前有另一个条目时,我没有得到它。正如您所看到的,我对正则表达式并不擅长,但这是我认为我可以解析查询中的数据的唯一方法。为了仅从第一个示例中获取设备 ID,我可以使用以下示例。效果很好。我的下一个挑战是第二个参数存在时的数据。设备 ID 的长度可以从大约 10 到 26 个字符不等。
SELECT
RIGHT(Regexp_extract(protoPayload.resource,r'[\?&]([^&]+)'),
length(Regexp_extract(protoPayload.resource,r'[\?&]([^&]+)'))-10) as Device_ID
FROM logs
我想要的只是来自查询字符串 device_ID 的值,例如:
123456
78ec9b4a56
【问题讨论】:
-
在您的 protoPayload.resource 示例中应该有换行符,还是每条记录实际上有 2 个查询字符串?
标签: regex google-app-engine logging google-bigquery