REGEXP_EXTRACT函数的问题

时间:2018-08-03 18:47:16

标签: amazon-athena presto

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

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

鉴于我在此处进行的测试,正则表达式部分应该正确:

That's correct, right?

但是当我运行查询时,我遇到此错误:

  

SYNTAX_ERROR:第1:8行:意外的参数(array(row(peopleidl   varchar,householdidl varchar)),varchar(6),integer)函数   regexp_extract。预期:regexp_extract(varchar(x),JoniRegExp,   bigint),regexp_extract(varchar(x),JoniRegExp)

有人知道我如何能够完成我所需要的吗?

1 个答案:

答案 0 :(得分:0)

说实话,我不知道您为什么使用regexp函数来检索数据。您应该只使用点表示法和取消嵌套功能来做到这一点。

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