簡體   English   中英

如何從 Amazon Athena 中的 JSON 獲取倒數第二個密鑰?

[英]How to get second last key from JSON in Amazon Athena?

我想從我的 json 中獲取倒數第二個密鑰,我試過了

SELECT json_extract_scalar(json_column, '$[-1]') AS last_key
FROM table_name;

但它給出了以下錯誤

awsathena 錯誤:INVALID_FUNCTION_ARGUMENT:無效的 JSON 路徑:'$[-1]'

當使用鍵名給我正確的結果時,結果

SELECT json_extract_scalar(json_column, '$.status') AS last_key
FROM table_name;

給我正確的 output

json_extract_scalar具有有限的 json 路徑支持(並且$[-1]看起來不像是訪問 json 屬性的有效 json 路徑)。 根據 Athena 版本,您可以使用 cast to map 解決方法(類似這樣的內容):

SELECT element_at(m, cardinality(m)) last_key
FROM (SELECT map_values(cast(json_column as map(varchar, json))) AS m
    FROM table_name);

另請注意,json 本質上是無序的,因此依賴實際屬性順序可能是一個有問題的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM