Yarı yapılandırılmış verileri işleme

Snowflake SQL'e Giriş

George Boorman

Senior Curriculum Manager, DataCamp

Yapılandırılmış ve yarı yapılandırılmış

Yapılandırılmış veri örneği

| 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    |

Yarı yapılandırılmış veri örneği

Müşteri 2'nin iki e-postası olduğu JSON biçiminde yarı yapılandırılmış müşteri verisi

Snowflake SQL'e Giriş

JSON'a giriş

  • JavaScript Object Notation
  • Yaygın kullanım alanları: Web API'leri ve yapılandırma dosyaları
  • JSON veri yapısı:
    • Anahtar-değer çiftleri, ör. cust_id: 1

Müşteri kimliği, adı, yaşı ve e-postası olan müşteri JSON kayıtları örneği

Snowflake SQL'e Giriş

Snowflake'te JSON

  • Yerel JSON desteği
  • Değişen şemalar için esnek

 

Karşılaştırmalar:

  • Postgres: JSONB kullanır
  • Snowflake: VARIANT kullanır
Snowflake SQL'e Giriş

Snowflake JSON veriyi nasıl saklar

  • VARIANT, OBJECT ve ARRAY veri türlerini destekler
    • OBJECT: { "key": "value"}
    • ARRAY: ["list", "of", "values"]
  • JSON verileri için Snowflake tablosu oluşturma
    CREATE TABLE cust_info_json_data (
      customer_id INT, 
      customer_info VARIANT -- VARIANT veri türü
    );
    
Snowflake SQL'e Giriş

Yarı yapılandırılmış veri işlevleri

  • PARSE_JSON

    • expr: Dize biçiminde JSON veri
    • Döndürür: VARIANT türü, geçerli JSON nesnesi
Snowflake SQL'e Giriş

PARSE_JSON

Örnek:

SELECT PARSE_JSON(
  -- Dizeler içinde      
  '{
  "cust_id": 1,
  "cust_name": "cust1",
  "cust_age": 40,
  "cust_email":"cust1***@gmail.com"
  }
  '-- Dizeler içinde
) AS customer_info_json

PARSE_JSON sonucu

Snowflake SQL'e Giriş

OBJECT_CONSTRUCT

  • OBJECT_CONSTRUCT

    • Sözdizimi: OBJECT_CONSTRUCT( [<key1>, <value1> [, <keyN>, <valueN> ...]] )
    • Döndürür: JSON nesnesi
    SELECT OBJECT_CONSTRUCT(
      -- : yerine virgülle ayrılmış değerler
          'cust_id', 1,
          'cust_name', 'cust1',
          'cust_age', 40,
          'cust_email', 'cust1***@gmail.com'
    )

`customer_info` sütununda JSON formatında veri olan tablo

Snowflake SQL'e Giriş

Snowflake'te JSON verilerini sorgulama

Basit JSON

  • :
    SELECT
      customer_info:cust_age, -- cust_age alanına erişmek için iki nokta kullanın
      customer_info:cust_name,
      customer_info:cust_email,
    FROM 
      cust_info_json_data;
    

Sorgu sonucu: yaş, ad ve e-posta ayrı sütunlar

Snowflake SQL'e Giriş

Snowflake'te iç içe JSON'u sorgulama

İç içe JSON örneği

Adresin street, city ve state anahtar-değer çiftlerine sahip bir nesne olduğu iç içe JSON verisi

  • İki nokta: :
  • Nokta: .
Snowflake SQL'e Giriş

İki nokta/nokta ile iç içe JSON sorgulama

İki nokta gösterimiyle değerlere erişim

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

SELECT 
    customer_info:address:street AS street_name 
FROM 
    cust_info_json_data

street_name gösteren sorgu sonucu

Nokta gösterimiyle değerlere erişim

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

SELECT
    customer_info:address.street AS street_name
FROM
    cust_info_json_data

street_name gösteren sorgu sonucu

Snowflake SQL'e Giriş

Hadi pratik yapalım!

Snowflake SQL'e Giriş

Preparing Video For Download...