日期 ETL 的大查询正则表达式

Posted

技术标签:

【中文标题】日期 ETL 的大查询正则表达式【英文标题】:Big Query Regex for Date ETL 【发布时间】:2017-03-01 12:18:07 【问题描述】:

我在 Big Query 中导入日期信息的数据,格式为 2/13/2016 、 3/4/2012 等

我想将其转换为日期格式,例如 02-12-2016 和 03-04-2012。 我想使用查询来创建一个新列并使用正则表达式。

我知道匹配 2/4/2012 的第一部分 (2) 的正则表达式类似于

^(\d1)(/|-)

Reg ex 将第二部分与 / 匹配将是

(/)(\d1)(/)

我想知道如何使用这 2 个正则表达式以及 REGEXP_EXTRACT 和 REGEXP_REPLACE 来创建一个具有正确格式的这些日期的新列。

【问题讨论】:

【参考方案1】:

转换为DATE 类型的列可能是最简单的。例如:

#standardSQL
SELECT
  PARSE_DATE('%m/%d/%Y', date_string) AS date
FROM (
  SELECT '2/13/2016' AS date_string UNION ALL
  SELECT '3/4/2012' AS date_string
);

另一种选择——如果你想将日期保留为字符串——是使用REPLACE

#standardSQL
SELECT
  REPLACE(date_string, '/', '-') AS date
FROM (
  SELECT '2/13/2016' AS date_string UNION ALL
  SELECT '3/4/2012' AS date_string
);

【讨论】:

SELECT PARSE_DATE('%m/%d/%Y', date_string) 为我们工作.. 非常感谢 Elliot 如果这对您有用,请接受(并可选择投票)答案。您可以在*** help center 中阅读更多内容。谢谢!

以上是关于日期 ETL 的大查询正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式在两个日期之间进行 SQL 查询

干货 | Logstash自定义正则表达式ETL实战

Java里面效验日期的正则表达式

使用正则表达式在 Pandas 数据框中字符串开头的大括号内去除数字

jQuery验证日期的正则表达式(这种格式2015-07-03 14:24)

年月日日期正则