我在表中有一个字段被存储为这样:
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
鉴于我在此处进行的测试,正则表达式部分应该正确:
但是当我运行查询时,我遇到此错误:
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)
有人知道我如何能够完成我所需要的吗?
答案 0 :(得分:0)
说实话,我不知道您为什么使用regexp函数来检索数据。您应该只使用点表示法和取消嵌套功能来做到这一点。
https://docs.aws.amazon.com/athena/latest/ug/rows-and-structs.html