【问题标题】:Issue with REGEXP_EXTRACT functionREGEXP_EXTRACT 函数的问题
【发布时间】:2019-01-11 16:37:05
【问题描述】:

我有一个表中的字段被这样存储:

id (array<struct<peopleidl:string,householdidl:string>>)

所以示例结果如下所示:

[{peopleidl=Xi3020rmDOhU2iWYUu3AXytMOggv6jdRK8_xyzy_COup1vd3uU0-OcWz4C3vW-ew9IeZEN, householdidl=null}]

我正在尝试使用REGEXP_EXTRACT 函数来捕获= 符号和, 之间的所有内容,因此新字段将只是Xi3020rmDOhU2iWYUu3AXytMOggv6jdRK8_xyzy_COup1vd3uU0-OcWz4C3vW-ew9IeZEN

但是当我尝试时:

REGEXP_EXTRACT(idls, '=(.+),') AS id

鉴于我在这里测试的内容,Regex 部分应该是正确的:

但是当我运行查询时,我遇到了这个错误:

SYNTAX_ERROR:第 1:8 行:意外参数(数组(行(peopleidl varchar,householdidl varchar)), varchar(6), integer) 用于函数 正则表达式提取。预期:regexp_extract(varchar(x), JoniRegExp, bigint) , regexp_extract(varchar(x), JoniRegExp)

有人知道我怎样才能完成我需要的吗?

【问题讨论】:

  • 您是否先尝试CAST(idls AS varchar)?另外,由于这是结构化信息,您真的不需要正则表达式,对吗?

标签: amazon-athena presto


【解决方案1】:

说实话,我不知道你为什么要使用 regexp 函数来检索数据。您应该只使用点表示法和 unnest 函数来执行此操作。

https://docs.aws.amazon.com/athena/latest/ug/rows-and-structs.html

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    相关资源
    最近更新 更多