Redshift REGEXP_SUBSTR 函数的 Spark 替代方案

Posted

技术标签:

【中文标题】Redshift REGEXP_SUBSTR 函数的 Spark 替代方案【英文标题】:Spark alternative for Redshift REGEXP_SUBSTR function 【发布时间】:2017-09-27 01:23:07 【问题描述】:

尝试将部分 Redshift 查询转换为 SparkSQL 或 SQL 和 UDF 的组合:

REGEXP_SUBSTR(referrer, '[^/]+\\.[^/:]+') as referrer_domain,

尝试使用regexp_extract(referrer, '[^/]+\\.[^/:]+', 1),但这似乎不是以相同的方式工作并且返回的结果不一致。

任何指针表示赞赏!

【问题讨论】:

你可以试试 regexp_replace(referrer, '[^/]+\\.[^/:]+', $1) 【参考方案1】:

你应该可以在 spark sql 中使用 regexp_extract,像这样 -

regexp_extract(columnName, '(YourRegex)', 1) as aliasName

注意正则表达式周围的 () 以捕获组。希望对您有所帮助!

【讨论】:

请查看原始问题 - 您发布的是相同的代码提供了不同/不一致的结果。 不。您正在谈论的代码中缺少圆括号。 如果您提供示例输入和预期输出也会有所帮助。这样,解决方案提供商可以确认更多。谢谢。

以上是关于Redshift REGEXP_SUBSTR 函数的 Spark 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊 Redshift 的 REGEXP_SUBSTR 中的“匹配但排除”

regexp_substr 提取字符串中的度量单位

Oracle中REGEXP_SUBSTR函数

如何使 BigQuery 中的 REGEXP_SUBSTR() 函数匹配非贪婪?

Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结

ORA-00932: 不一致的数据类型: 预期 - 得到 CLOB - 在 regexp_substr 函数中使用 clob