[英]Extract from Array of Rows in Presto
我有一個包含字典列表的表。 在示例中,列表中只有一本字典。
項目 |
---|
[{'a': '蘋果', b: '香蕉'}] |
我想選擇“a”的值,它是蘋果。
我試過: SELECT json_extract_scalar(json_parse(items), '$.a')
它給出了錯誤:
Unexpected parameters (array(row("t" varchar,"i" varchar,"p" integer,"v" integer,"s" varchar))) for function json_parse. Expected: json_parse(varchar(x))
我也試過: SELECT TRANSFORM(CAST(JSON_PARSE(items) AS ARRAY<JSON>), x -> JSON_EXTRACT_SCALAR(x, '$.a'))
這給出了同樣的錯誤。 如果我首先執行CAST(items AS varchar)
,則會出現一個錯誤,指出它無法將數組轉換為 varchar。
提供的錯誤顯示您的數據實際上不是 varchar 或 json,而是具有 5 個字段( t
、 i
、 p
、 v
、 s
)的ROW
數組。 行不能輕易轉換為所需的 json 結構,但您可以通過名稱輕松訪問它的字段:
select item.t
from (
SELECT array [ cast (row('apple', 'banana') as row(t varchar, i varchar)) ] items -- shortened sample data
)
cross join unnest(items) as c(item) -- flatten the array
Output:
噸 |
---|
蘋果 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.