【问题标题】:Extract Json in Presto在 Presto 中提取 Json
【发布时间】:2020-11-07 06:01:25
【问题描述】:

我有以下一些复杂格式的json数据,既不是纯json也不是数组。

我试图通过使用以下不起作用的查询来提取特定值

SELECT json_array_extract_scalar(bankdetails, '$.bank') FROM ade.evangelist_oao.oaocustomfundingupdateaoapplicationsvc ;

查询失败 (#20200717_121411_01261_cav8k):第 1:8 行:意外 函数的参数 (row(bank varchar), varchar(6)) json_extract_scalar。预期:json_extract_scalar(varchar(x), JsonPath) , json_extract_scalar(json, JsonPath) [DB Errorcode=1]

SELECT json_extract_scalar(accounts, '$.fundingsrcs.method') FROM ade.evangelist_oao.oaocustomfundingupdateaoapplicationsvc ;

查询失败 (#20200717_121600_01270_cav8k):第 1:8 行:意外 参数 (array(row(fundingsrcs array(row(method varchar,amount bigint))))、varchar(20)) 用于函数 json_extract_scalar。预期的: json_extract_scalar(varchar(x), JsonPath) , json_extract_scalar(json, JsonPath) [数据库错误代码=1]

在这种情况下,我如何获取bankdetails 字段的b840 值和accounts 字段的CUSTOMFUNDING 值?

【问题讨论】:

    标签: json extract presto


    【解决方案1】:

    实际类型是ROW(不是JSON),所以你可以用

    SELECT bankdetails.bank FROM ...
    

    【讨论】:

    • 对于银行详细信息,您的解决方案有效,但是当我运行以下命令时,从 ade.evangelist_oao.oaocustomfundingupdateaoapplicationsvc 中选择 accounts.fundingsrcs.method;然后我得到错误表达式帐户不是 ROW 类型 [DB Errorcode=1]
    • accounts列的根类型是ARRAY,所以请尝试SELECT accounts[0]...
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2022-11-23
    • 2020-09-25
    • 2021-05-06
    • 2020-01-21
    • 2021-03-01
    • 2020-04-18
    • 2020-01-08
    相关资源
    最近更新 更多