【发布时间】: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