繁体   English   中英

使用 Presto 的 Coalesce function 与 AWS Athena 上的一行

[英]Using Presto's Coalesce function with a row on AWS Athena

我正在使用 AWS Web 应用程序防火墙 (WAF)。 日志写入 S3 存储桶并由 AWS Athena 查询。

有些日志字段不是简单的数据类型,而是复杂的 JSON 类型。 例如“规则组列表”。 它包含一个 JSON 复杂类型数组,该数组可能有 0 个或多个元素。

所以我正在使用 Presto 的try() function 将错误转换为 NULL,并尝试使用coalesce() function 将破折号放在它们的位置。 (保留 null 值会导致使用 GROUP BY 时出现问题)

try() 工作正常,但 coalesce() 导致类型不匹配问题。

下面拨打function:

coalesce(try(waf.rulegrouplist[1].terminatingrule),'-')

导致此错误:

All COALESCE operands must be the same type: row(ruleid varchar,action varchar,rulematchdetails varchar)

如何将“-”转换为一行或者我还能使用什么来算作一行?

显然,您可以创建一个空行并将其转换为键入的行。

这奏效了...

coalesce(try(waf.rulegrouplist[1].terminatingrule),CAST(row('null','null','null') as row(ruleid varchar,action varchar,rulematchdetails varchar)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM