全部产品
Search
文档中心

Hologres:Fungsi JSON

更新时间:Jul 02, 2025

Topik ini menjelaskan fungsi JSON yang terkait dengan Hologres.

GET_JSON_OBJECT

  • Sintaksis

    Fungsi GET_JSON_OBJECT digunakan untuk mengekstrak objek JSON dari string JSON. Sebelum menggunakan fungsi ini, Anda harus membuat ekstensi. Untuk informasi lebih lanjut, lihat Ekstensi.

    -- Buat ekstensi.
    CREATE EXTENSION IF NOT EXISTS hive_compatible SCHEMA <schema_name>;
    SELECT get_json_object ( json_string, path );
  • Parameter

    Parameter

    Deskripsi

    json_string

    Objek JSON. Nilainya bertipe TEXT. Nilai tersebut harus berupa string JSON yang valid.

    path

    Path JSON yang menentukan objek untuk diekstraksi. Tanda dolar ($) mewakili variabel JSON. Operator titik (.) atau tanda kurung siku ([]) digunakan untuk mengakses objek atau array JSON.

    Jika string JSON tidak valid, NULL akan dikembalikan.

  • Contoh

    Siapkan data sampel.

    -- Buat ekstensi.
    CREATE EXTENSION IF NOT EXISTS hive_compatible SCHEMA pg_catalog;
    -- Siapkan data sampel.
    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"}');
    • Contoh 1: Kueri data di path $.owner dalam objek JSON dari kolom col_json.

      -- Nilai yang dikembalikan adalah amy.
      SELECT
          get_json_object (col_json, '$.owner')
      FROM
          hive_json_example;
    • Contoh 2: Kueri data di path $.store.bicycle.price dari objek JSON pada kolom col_json.

      -- Nilai yang dikembalikan adalah 19.95.
      SELECT
          get_json_object (col_json, '$.store.bicycle.price')
      FROM
          hive_json_example;
    • Contoh 3: Kueri elemen pertama dengan indeks 0 dari array fruit di path $.store.fruit dari objek JSON pada kolom col_json.

      -- Nilai yang dikembalikan adalah {"weight":8, "type":"apple"}.
      SELECT
          get_json_object (col_json, '$.store.fruit[0]')
      FROM
          hive_json_example;
    • Contoh 4: Kueri data dari variabel non-objek JSON.

      -- Nilai yang dikembalikan adalah NULL.
      SELECT
          get_json_object (col_json, '$.no_key')
      FROM
          hive_json_example;

ROW_TO_JSON

Fungsi ROW_TO_JSON digunakan untuk menggabungkan beberapa string atau kolom menjadi string JSON dan mengembalikan hasilnya sebagai string JSON. Maksimal 50 kolom dapat digabungkan.

Catatan

Hanya Hologres V1.3 ke atas yang mendukung fungsi row_to_json. Jika ingin menggunakan fungsi ini, Anda dapat bergabung dengan grup DingTalk Hologres untuk meminta peningkatan instance Hologres atau tingkatkan instance Anda. Untuk informasi lebih lanjut tentang cara bergabung dengan grup DingTalk Hologres, lihat Dapatkan dukungan online untuk Hologres.

  • Sintaksis

    SELECT ROW_TO_JSON(record)
  • Parameter

    record: Parameter bertipe baris, yang dapat berupa nama tabel, nama tampilan, atau hasil kueri.

  • Contoh

    -- Siapkan data uji.
    CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test 
      VALUES 
      ('Ava', 'menyanyi, menari'), ('Bob', 'bermain sepak bola, lari, melukis'), ('Jack', 'merangkai bunga, menulis kaligrafi, bermain piano, tidur');
    
    SELECT
        ROW_TO_JSON(t)
    FROM (
        SELECT
            name,
            intrests
        FROM
            interests_test) AS t;

    Pada Hologres V1.3.52 ke atas, kunci dalam objek JSON dapat dibuat berdasarkan nama kolom.

    • Pada versi Hologres sebelum V1.3.52, hasil berikut dikembalikan:

      row_to_json                
      ------------------------------
      {"f1":"Ava","f2":"menyanyi, menari"}
      {"f1":"Bob","f2":"bermain sepak bola, lari, melukis"}
      {"f1":"Jack","f2":"merangkai bunga, menulis kaligrafi, bermain piano, tidur"}
    • Pada Hologres V1.3.52 ke atas, hasil berikut dikembalikan:

      row_to_json                
      ------------------------------
      "{"name": "Jack", "interests": "merangkai bunga, menulis kaligrafi, bermain piano, tidur"}"
      "{"name": "Ava", "interests": "menyanyi, menari"}"
      "{"name": "Bob", "interests": "bermain sepak bola, lari, melukis"}"

Kesalahan umum

  • ERROR: function get_json_object (text, unknown) does not exist

    • Penyebab mungkin 1

      Dalam model izin tingkat skema (SLPM), pengguna RAM tidak memiliki izin untuk menanyakan skema tempat ekstensi dibuat. Misalnya, pengguna RAM tidak memiliki izin untuk menanyakan skema public tempat ekstensi dibuat.

    • Solusi 1

      • Berikan pengguna RAM izin untuk menanyakan skema.

      • Eksekusi pernyataan berikut untuk membuat ekstensi di skema pg_catalog. Dengan cara ini, semua pengguna memiliki izin untuk menanyakan skema ini.

        DROP EXTENSION hive_compatible;
        CREATE EXTENSION hive_compatible schema pg_catalog;
    • Penyebab mungkin 2

      Parameter pertama GET_JSON_OBJECT bukan bertipe TEXT.

    • Solusi 2

      Ubah tipe data parameter pertama menjadi TEXT.

  • ERROR: get_json_object for fe, should not be evaluated

    • Penyebab mungkin 1

      Parameter pertama GET_JSON_OBJECT adalah konstanta.

    • Solusi 1

      Tetapkan parameter pertama sebagai nama kolom tabel.

    • Penyebab mungkin 2

      Parameter pertama GET_JSON_OBJECT berisi nilai NULL.

    • Solusi 2

      Hapus nilai NULL dari parameter pertama.