Menangani data semi-terstruktur

Pengantar Snowflake SQL

George Boorman

Senior Curriculum Manager, DataCamp

Terstruktur vs semi-terstruktur

Contoh data terstruktur

| cust_id | cust_name | cust_age | cust_email            |
|---------|-----------|----------|-----------------------|
| 1       | cust1     | 40       | cust1***@gmail.com    |
| 2       | cust2     | 35       | cust2***@gmail.com    |
| 3       | cust3     | 42       | cust3***@gmail.com    |

Contoh data semi-terstruktur

Data pelanggan semi-terstruktur dalam bentuk JSON dengan customer 2 memiliki dua email

Pengantar Snowflake SQL

Pengenalan JSON

  • JavaScript Object Notation
  • Kasus umum: Web API dan file konfigurasi
  • Struktur data JSON:
    • Pasangan kunci-nilai, mis. cust_id: 1

Contoh catatan JSON pelanggan berisi id, nama, usia, dan email

Pengantar Snowflake SQL

JSON di Snowflake

  • Dukungan JSON native
  • Fleksibel untuk skema yang berkembang

 

Perbandingan:

  • Postgres: Menggunakan JSONB
  • Snowflake: Menggunakan VARIANT
Pengantar Snowflake SQL

Cara Snowflake menyimpan data JSON

  • VARIANT mendukung tipe data OBJECT dan ARRAY
    • OBJECT: { "key": "value"}
    • ARRAY: ["list", "of", "values"]
  • Membuat tabel Snowflake untuk menangani data JSON
    CREATE TABLE cust_info_json_data (
      customer_id INT, 
      customer_info VARIANT -- VARIANT data type
    );
    
Pengantar Snowflake SQL

Fungsi data semi-terstruktur

  • PARSE_JSON

    • expr: data JSON dalam format string
    • Hasil: tipe VARIANT, objek JSON valid
Pengantar Snowflake SQL

PARSE_JSON

Contoh:

SELECT PARSE_JSON(
  -- Enclosed in strings      
  '{
  "cust_id": 1,
  "cust_name": "cust1",
  "cust_age": 40,
  "cust_email":"cust1***@gmail.com"
  }
  '-- Enclosed in strings
) AS customer_info_json

Hasil dari PARSE_JSON

Pengantar Snowflake SQL

OBJECT_CONSTRUCT

  • OBJECT_CONSTRUCT

    • Sintaks: OBJECT_CONSTRUCT( [<key1>, <value1> [, <keyN>, <valueN> ...]] )
    • Hasil: objek JSON
    SELECT OBJECT_CONSTRUCT(
      -- Comma separated values rather than : notation
          'cust_id', 1,
          'cust_name', 'cust1',
          'cust_age', 40,
          'cust_email', 'cust1***@gmail.com'
    )

Tabel dengan kolom `customer_info` berisi data dalam format JSON

Pengantar Snowflake SQL

Mengkueri data JSON di Snowflake

JSON sederhana

  • :
    SELECT
      customer_info:cust_age, -- Use colon to access cust_age from column
      customer_info:cust_name,
      customer_info:cust_email,
    FROM 
      cust_info_json_data;
    

Hasil kueri menampilkan usia, nama, dan email sebagai kolom terpisah

Pengantar Snowflake SQL

Mengkueri JSON bertingkat di Snowflake

Contoh JSON bertingkat

Data JSON bertingkat di mana address adalah objek dengan pasangan kunci-nilai street, city, dan state

  • Titik dua: :
  • Titik: .
Pengantar Snowflake SQL

Mengkueri JSON bertingkat dengan notasi titik dua/titik

Mengakses nilai dengan notasi titik dua

<column>:<level1_element>:<level2_element>:<level3_element>

SELECT 
    customer_info:address:street AS street_name 
FROM 
    cust_info_json_data

Hasil kueri menampilkan street_name

Mengakses nilai dengan notasi titik

<column>:<level1_element>.<level2_element>.<level3_element>

SELECT
    customer_info:address.street AS street_name
FROM
    cust_info_json_data

Hasil kueri menampilkan street_name

Pengantar Snowflake SQL

Ayo berlatih!

Pengantar Snowflake SQL

Preparing Video For Download...