Redshift - 根据模式提取数据

Posted

技术标签:

【中文标题】Redshift - 根据模式提取数据【英文标题】:Redshift - Extracting data based on pattern 【发布时间】:2020-06-16 10:17:28 【问题描述】:

我正在尝试使用 Redshift 中的特定模式从以下文本中提取子字符串。

value
proda_cat1_subcat_a_jan2020
cat2_subcat_b_prodb_jan2020

我正在尝试从上述字符串中提取字符串cat1_subcat_acat2_subcat_b

我尝试过regexp_substr(value,'cat[^_]'),但这只会将字符串拉到第一个下划线

预期输出:

value, output
proda_cat1_subcat_a_jan2020, cat1_subcat_a
cat2_subcat_b_prodb_jan2020, cat2_subcat_b

【问题讨论】:

【参考方案1】:

尝试使用以下正则表达式模式:

cat[0-9]+_[^_]+_[^_]+

SQL 查询:

SELECT
    value,
    REGEXP_SUBSTR(value, 'cat[0-9]+_[^_]+_[^_]+') AS output
FROM yourTable;

Demo

演示在 Oracle 中,但语法应该也适用于 Redshift。

【讨论】:

我正在等待它让我接受答案。肯定会在接下来的 10 分钟内完成..

以上是关于Redshift - 根据模式提取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在架构上同步应用程序工程师 (Postgres) 和数据工程师 (Redshift)

GCP BigQuery 数据传输服务中的错误:找不到适合 jdbc:redshift:// 的驱动程序

DatagGrip 无法识别 Redshift 特定命令

Redshift 终止长时间运行的查询

尝试使用 node-redshift 从节点连接到 redshift 时超时

将 IntelliJ 连接到 Amazon Redshift