【问题标题】:Parsing JSON Payload in Vertica在 Vertica 中解析 JSON 有效负载
【发布时间】:2018-09-26 08:27:40
【问题描述】:

我正在使用 Vertica DB(和 DBeaver 作为 SQL 编辑器)——我对这两种工具都是新手。

我有一个包含多个列的视图

someint | xyz   | c         | json 
5       | 1542  | none      | {"range":23, "rm": 51, "spx": 30}
5       | 1442  | none      | {"range":24, "rm": 50, "spx": 3 }
3       | 1462  | none      | {"range":24, "rm": 50, "spx": 30}

(int)   | (int) | (Varchar) | (Long Varchar)  

我想创建上述的另一个视图(或者一开始,只是能够正确查询它),但是将“json”列分隔到各个字段/列中“范围”、“rm”和“spx”。

我想象查询/新视图的输出类似于以下内容:

someint | xyz   | c    | range | rm | spx 
5       | 1542  | none | 23    | 51 | 30 
5       | 1442  | none | 24    | 50 | 3 
....

到目前为止,例如,我什至无法查询“范围”。

因此我的问题是:

  1. 如何将 json 列键值结构分成单独的列(在查询输出中)?

  2. 如何将所需的输出传输到 Vertica 中的新视图中?

我在文档中没有找到太多帮助,因为该过程是从驱动器加载 json 文本文件或对表进行操作,而我不能这样做,因为我只能访问视图。

【问题讨论】:

    标签: json vertica


    【解决方案1】:

    我已经找到了解决方案,所以对于遇到此问题的其他人:

    SELECT a, xyza, cont,
    MAPLOOKUP(MapJSONExtractor(json), 'range') AS range,
    MAPLOOKUP(MapJSONExtractor(json), 'rm') AS rm,
    MAPLOOKUP(MapJSONExtractor(json), 'spx') AS spx
    FROM test;
    

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      相关资源
      最近更新 更多