簡體   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