การจัดการข้อมูลกึ่งโครงสร้าง

Snowflake SQL เบื้องต้น

George Boorman

Senior Curriculum Manager, DataCamp

ข้อมูลแบบโครงสร้างและกึ่งโครงสร้าง

ตัวอย่างข้อมูลแบบโครงสร้าง

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

ตัวอย่างข้อมูลแบบกึ่งโครงสร้าง

ข้อมูลกึ่งโครงสร้างของลูกค้าในรูปแบบ JSON โดยลูกค้ารายที่ 2 มีอีเมลสองที่อยู่

Snowflake SQL เบื้องต้น

แนะนำ JSON

  • JavaScript Object Notation
  • กรณีใช้งานทั่วไป: Web APIs และไฟล์ Config
  • โครงสร้างข้อมูล JSON:
    • คู่ Key-Value เช่น cust_id: 1

ตัวอย่างเรคอร์ด JSON ของลูกค้า ประกอบด้วย id, ชื่อ, อายุ และอีเมล

Snowflake SQL เบื้องต้น

JSON ใน Snowflake

  • รองรับ JSON โดยตรง
  • ยืดหยุ่นรองรับ schema ที่เปลี่ยนแปลงได้

 

การเปรียบเทียบ:

  • Postgres: ใช้ JSONB
  • Snowflake: ใช้ VARIANT
Snowflake SQL เบื้องต้น

วิธีที่ Snowflake จัดเก็บข้อมูล JSON

  • VARIANT รองรับชนิดข้อมูล OBJECT และ ARRAY
    • OBJECT: { "key": "value"}
    • ARRAY: ["list", "of", "values"]
  • การสร้างตาราง Snowflake สำหรับข้อมูล JSON
    CREATE TABLE cust_info_json_data (
      customer_id INT, 
      customer_info VARIANT -- VARIANT data type
    );
    
Snowflake SQL เบื้องต้น

ฟังก์ชันสำหรับข้อมูลกึ่งโครงสร้าง

  • PARSE_JSON

    • expr: ข้อมูล JSON ในรูปแบบสตริง
    • คืนค่า: ชนิด VARIANT ซึ่งเป็น JSON object ที่ถูกต้อง
Snowflake SQL เบื้องต้น

PARSE_JSON

ตัวอย่าง:

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

ผลลัพธ์ของ PARSE_JSON

Snowflake SQL เบื้องต้น

OBJECT_CONSTRUCT

  • OBJECT_CONSTRUCT

    • ไวยากรณ์: OBJECT_CONSTRUCT( [<key1>, <value1> [, <keyN>, <valueN> ...]] )
    • คืนค่า: JSON object
    SELECT OBJECT_CONSTRUCT(
      -- Comma separated values rather than : notation
          'cust_id', 1,
          'cust_name', 'cust1',
          'cust_age', 40,
          'cust_email', 'cust1***@gmail.com'
    )

ตารางที่มีคอลัมน์ `customer_info` ซึ่งเก็บข้อมูลในรูปแบบ JSON

Snowflake SQL เบื้องต้น

การคิวรีข้อมูล JSON ใน Snowflake

JSON แบบเรียบง่าย

  • :
    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;
    

ผลลัพธ์ของคิวรีแสดงอายุ ชื่อ และอีเมลของลูกค้าเป็นคอลัมน์แยกกัน

Snowflake SQL เบื้องต้น

การคิวรีข้อมูล JSON แบบซ้อนกันใน Snowflake

ตัวอย่าง JSON แบบซ้อนกัน

ข้อมูล JSON แบบซ้อนกัน โดย address เป็น object ที่มีคู่ key-value ของ street, city และ state

  • โคลอน: :
  • จุด: .
Snowflake SQL เบื้องต้น

การคิวรี JSON แบบซ้อนกันด้วย colon/dot notation

การเข้าถึงค่าด้วย colon notation

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

SELECT 
    customer_info:address:street AS street_name 
FROM 
    cust_info_json_data

ผลลัพธ์ของคิวรีแสดง street_name

การเข้าถึงค่าด้วย dot notation

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

SELECT
    customer_info:address.street AS street_name
FROM
    cust_info_json_data

ผลลัพธ์ของคิวรีแสดง street_name

Snowflake SQL เบื้องต้น

มาฝึกกันเถอะ!

Snowflake SQL เบื้องต้น

Preparing Video For Download...