Google Cloud日志分析中~运算符匹配报错,求解决方案
Google Cloud日志分析查询报错解决思路
错误原因
BigQuery 中的 ~ 运算符是位取反操作,仅支持 INT64 类型,并非正则匹配语法。用字符串与它匹配会触发类型不兼容的错误。
可行解决方法
方法一:使用 REGEXP_CONTAINS 函数(推荐)
这是 BigQuery 官方推荐的正则匹配函数,语法直观清晰:
SELECT http_request.user_agent, count(*) as num FROM `tympa-health-production.global._Default._AllLogs` WHERE REGEXP_CONTAINS(CAST(http_request.user_agent AS STRING), r"^google.*")
- 若
http_request.user_agent本身就是字符串类型,可省略CAST转换; - 正则表达式前加
r前缀表示原始字符串,避免转义字符干扰。
方法二:使用 RLIKE 运算符
这是类似传统 SQL 的正则匹配写法,功能与 REGEXP_CONTAINS 等价:
SELECT http_request.user_agent, count(*) as num FROM `tympa-health-production.global._Default._AllLogs` WHERE CAST(http_request.user_agent AS STRING) RLIKE r"^google.*"
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

