如何在 BigQuery 中使用 REGEX 通过旧列创建新列?

Posted

技术标签:

【中文标题】如何在 BigQuery 中使用 REGEX 通过旧列创建新列?【英文标题】:How to create a new column through a old one with REGEX in BigQuery? 【发布时间】:2020-02-01 08:49:48 【问题描述】:

我想通过旧列创建一个新列。

我有这个专栏:name。这是一个String 专栏。我有这样的数据:

ALUMNNAME_SURNAME_CLASS_UNIVERSITY_YEAR_(16/09 - 22/09)

我想创建新的列拆分每个_

在 Google 表格中,我知道如何操作 (INDEX(SPLIT(C2:C;"_");0;1...),但我如何在 BigQuery 中操作?

我理解是这样的:

SELECT
   name,
   REGEXP_EXTRACT(name, regex) AS Name,
   REGEXTRACT(name, regex) AS Surname,
   ...

您能帮我创建 RegRx 吗?我找不到如何划分每个部分。

【问题讨论】:

列中的每个值是否总是正好有 5 个下划线? 是的。所有值都具有相同的格式。我可以用这个提取第一个:^[a-zA-Z\ ]+ 但我想全部拆分。 【参考方案1】:

在标准 SQL 中,我们可以尝试使用SPLIT() 函数:

SELECT
    SPLIT(input, '_')[OFFSET(0)] part1,
    SPLIT(input, '_')[OFFSET(1)] part2,
    SPLIT(input, '_')[OFFSET(2)] part3,
    SPLIT(input, '_')[OFFSET(3)] part4,
    SPLIT(input, '_')[OFFSET(4)] part5
FROM (SELECT "ALUMNNAME_SURNAME_CLASS_UNIVERSITY_YEAR_(16/09 - 22/09)" input)

【讨论】:

以上是关于如何在 BigQuery 中使用 REGEX 通过旧列创建新列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有环视的情况下在 RegEx 中捕获“搜索”而不是“/搜索”?

在 redshift 中使用正则表达式和 casestatements 语句

BigQuery Regex_Replace 重复子字符串的第一个实例

在 Google BigQuery 中将字符串保存为正则表达式

如何通过 Java 程序获取 Bigquery 表的架构?

BigQuery 正则表达式提取