日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

JSON函數(shù)

更新時(shí)間:

本文為您介紹實(shí)時(shí)數(shù)倉(cāng)Hologres相關(guān)的JSON函數(shù)。

GET_JSON_OBJECT

  • 語(yǔ)法

    GET_JSON_OBJECT用于解析JSON對(duì)象。在使用GET_JSON_OBJECT函數(shù)前,需要先創(chuàng)建加載擴(kuò)展(Extension),詳情請(qǐng)參見(jiàn)Extension擴(kuò)展

    --創(chuàng)建Extension
    CREATE EXTENSION IF NOT EXISTS hive_compatible SCHEMA <schema_name>;
    SELECT get_json_object ( json_string, path );
  • 參數(shù)說(shuō)明

    參數(shù)

    描述

    json_string

    JSON對(duì)象變量,TEXT類型。格式為合法JSON格式字符串。

    path

    JSON內(nèi)層對(duì)象訪問(wèn)變量。使用$表示JSON變量標(biāo)識(shí),通過(guò) . []讀取JSON內(nèi)層對(duì)象或數(shù)組。

    如果您輸入的JSON字符串無(wú)效,則系統(tǒng)返回NULL

  • 示例

    準(zhǔn)備示例數(shù)據(jù)。

    --創(chuàng)建Extension
    CREATE EXTENSION IF NOT EXISTS hive_compatible SCHEMA pg_catalog;
    --準(zhǔn)備示例數(shù)據(jù)
    BEGIN;
    CREATE TABLE hive_json_example (
        col_json text
    );
    COMMIT;
    INSERT INTO hive_json_example VALUES 
    ('{"store":{"fruit":[{"weight":8,"type":"apple"}, {"weight":9,"type":"pear"}],"bicycle":{"price":19.95,"color":"red"}},"email":"amy@only_for_json_udf_test.net","owner":"amy"}');
    • 示例1:從col_json列中查詢JSON對(duì)象中$.owner路徑下的數(shù)據(jù)。

      --返回結(jié)果為:amy
      SELECT
          get_json_object (col_json, '$.owner')
      FROM
          hive_json_example;
    • 示例2:從col_json列中查詢JSON對(duì)象中$.store.bicycle.price路徑下的數(shù)據(jù)。

      --返回結(jié)果為:19.95
      SELECT
          get_json_object (col_json, '$.store.bicycle.price')
      FROM
          hive_json_example;
    • 示例3:從col_json列中查詢JSON對(duì)象中$.store.fruit路徑下fruit數(shù)組的第一個(gè)元素(索引為0)。

      -- 返回結(jié)果為:{"weight":8, "type":"apple"}
      SELECT
          get_json_object (col_json, '$.store.fruit[0]')
      FROM
          hive_json_example;
    • 示例4:查看非JSON對(duì)象變量的數(shù)據(jù)。

      --返回值為:NULL
      SELECT
          get_json_object (col_json, '$.no_key')
      FROM
          hive_json_example;

ROW_TO_JSON

ROW_TO_JSON函數(shù)支持將多個(gè)字符串或列(最多50列)拼接成一個(gè)JSON并返回。

說(shuō)明

僅Hologres V1.3及以上版本支持ROW_TO_JSON函數(shù),若想要使用該函數(shù)您可以通過(guò)加入實(shí)時(shí)數(shù)倉(cāng)Hologres交流群申請(qǐng)升級(jí)實(shí)例或實(shí)例升級(jí),加群方式請(qǐng)參見(jiàn)如何獲取更多的在線支持?

  • 語(yǔ)法

    SELECT ROW_TO_JSON(record)
  • 參數(shù)說(shuō)明

    record:是一個(gè)行類型的參數(shù),可以是表名、視圖名或者查詢結(jié)果。

  • 示例

    --準(zhǔn)備測(cè)試數(shù)據(jù)
    CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test 
      VALUES 
      ('張三', '唱歌,跳舞'), ('李四', '踢球,跑步,畫畫'), ('王五', '插花,書法,彈琴,睡覺(jué)');
    
    SELECT
        ROW_TO_JSON(t)
    FROM (
        SELECT
            name,
            intrests
        FROM
            interests_test) AS t;

    Hologres從V1.3.52版本開(kāi)始,JSON中的Key支持根據(jù)列名生成。

    • V1.3.52以下版本返回結(jié)果如下。

      row_to_json                
      ------------------------------
      {"f1":"張三","f2":"唱歌,跳舞"}
      {"f1":"李四","f2":"踢球,跑步,畫畫"}
      {"f1":"王五","f2":"插花,書法,彈琴,睡覺(jué)"}
    • V1.3.52及以上版本返回結(jié)果如下。

      row_to_json                
      ------------------------------
      "{"name" : "王五", "intrests" : "插花,書法,彈琴,睡覺(jué)"}"
      "{"name" : "張三", "intrests" : "唱歌,跳舞"}"
      "{"name" : "李四", "intrests" : "踢球,跑步,畫畫"}"

常見(jiàn)報(bào)錯(cuò)

  • 報(bào)錯(cuò):ERROR:function get_json_object (text, unknown) does not exist

    • 可能原因一

      在SLPM模式下RAM用戶沒(méi)有創(chuàng)建extension所在Schema的查詢權(quán)限(例如extension指定創(chuàng)建在名稱為public的Schema下,RAM用戶沒(méi)有public的查詢權(quán)限)。

    • 解決方法一

      • 授予RAM用戶Schema的查詢權(quán)限。

      • 使用如下命令重新創(chuàng)建extension在pg_catalog下,所有賬號(hào)都可查詢。

        DROP EXTENSION hive_compatible;
        CREATE EXTENSION hive_compatible schema pg_catalog;
    • 可能原因二

      GET_JSON_OBJECT的第一個(gè)參數(shù)不是TEXT類型。

    • 解決方法二

      將第一個(gè)參數(shù)轉(zhuǎn)換為TEXT類型。

  • 報(bào)錯(cuò):ERROR: get_json_object for fe, should not be evaluated

    • 可能原因一

      GET_JSON_OBJECT的第一個(gè)參數(shù)是常量。

    • 解決方法一

      第一個(gè)參數(shù)使用表的列。

    • 可能原因二

      GET_JSON_OBJECT的第一個(gè)參數(shù)含有為NULL的值。

    • 解決方法二

      將第一個(gè)參數(shù)為NULL的值刪除。