BigQuery 中的正则表达式

Posted

技术标签:

【中文标题】BigQuery 中的正则表达式【英文标题】:Regexp in BigQuery 【发布时间】:2015-04-30 10:05:02 【问题描述】:

如何在 bigquery 中搜索表达式并将它们分组,即使它们被分号弄乱了?

数据库示例:

:Adidas
Adidas
Adidas;
null
adidas
7up
7UP
7UP;
:7UP
null

我想将它们分组并计数。我想得到这个结果:

adidas 4
7up    4
null   2

到目前为止,goup by 没有帮助,我在 Excel 中完成这项工作,但速度很快。

【问题讨论】:

【参考方案1】:

首先,您需要规范化文本以仅保留有效单词。下面的正则表达式只是一个简单的表达式,您需要匹配并扩展您的逻辑。

SELECT normalized,
       count(1) AS c
FROM
  (SELECT label,
          lower(REGEXP_EXTRACT(label,r'[[:punct:]]?([[:^punct:]]*)')) AS normalized
   FROM
     (SELECT string(':Adidas') AS label),
     (SELECT string('Adidas') AS label),
     (SELECT string('Adidas;') AS label),
     (SELECT string(NULL) AS label),
     (SELECT string('adidas') AS label),
     (SELECT string('7up') AS label),
     (SELECT string('7UP') AS label),
     (SELECT string('7UP;') AS label),
     (SELECT string(':7UP') AS label),
     (SELECT string(NULL) AS label),)
GROUP BY normalized
ORDER BY c DESC

这个输出:

+-----+------------+---+---+
| Row | normalized | c |   |
+-----+------------+---+---+
|   1 | adidas     | 4 |   |
|   2 | 7up        | 4 |   |
|   3 | null       | 2 |   |
+-----+------------+---+---+

【讨论】:

以上是关于BigQuery 中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

bigquery 中的正则表达式

用 Google BigQuery 中的文字替换正则表达式字符

Bigquery 正则表达式 - 删除双引号中的逗号

Bigquery 正则表达式在多个空格后提取数字

使用 mysql 正则表达式验证我的 google bigquery 数据库中的电子邮件地址

BigQuery 正则表达式从字符串中删除/替换文本列表