【问题标题】:BigQuery REGEXP_EXTRACT return nullBigQuery REGEXP_EXTRACT 返回 null
【发布时间】:2016-02-09 15:10:09
【问题描述】:

从谷歌分析导出我正在尝试从下一个查询的 trafficSource.campaign 字段中提取最后一个数字:

SELECT
 REGEXP_EXTRACT(trafficSource.campaign,r':(\d+$)') as campaign,
FROM
  [95677969.ga_sessions_20160109] AS results,
WHERE
  hits.type IN ('TRANSACTION','PAGE')

此查询在 UI 中运行良好,并且每行都返回与 reg 表达式匹配的数字,但是当我将这个查询复制粘贴到我的脚本中时,总是返回空值。

trafficSource.campaign 值如下:

_dfa_107202:4637224:8531522

有人可以帮帮我吗?

【问题讨论】:

  • 你能在这里发布你的脚本吗?
  • 感谢您的评论@VadimSolovey,问题出在正则表达式引擎上,它不接受 re2 perl 字符类。

标签: regex google-bigquery


【解决方案1】:

转义是这里的问题。

当您向 BigQuery 提供以下内容时:

SELECT COUNT(*) FROM [publicdata:samples.shakespeare] WHERE REGEXP_MATCH(word, r'^\w$')

这在 BigQuery UI 中可以正常工作(结果为 283)。但是,如果您将相同的字符串复制到您最喜欢的编程语言中,它可能会尝试将 \ 读取为其转义字符之一,因此您将不得不对其进行双重转义 - 或者想出另一种方法来将字符串原样提供给它由您的脚本解释器执行。

【讨论】:

  • 嗨 Felipe,你是对的,问题出在正则表达式引擎中,它适用于 r'([[:digit:]]{3,}$)'
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多