คำสั่ง Data Manipulation Language (DML)

BigQuery เบื้องต้น

Matt Forrest

Field CTO

ภาพรวมการจัดการข้อมูลใน BigQuery

  • INSERT: เพิ่มแถวข้อมูลใหม่
  • UPDATE: แก้ไขค่าในแถวที่มีอยู่
  • DELETE: ลบข้อมูลที่ไม่ต้องการออกจากตาราง
  • MERGE: คำสั่งที่รวม INSERT, UPDATE และ DELETE ไว้ในคำสั่งเดียว
  • CREATE TABLE AS: สร้างตารางใหม่จากผลลัพธ์ของคิวรี
BigQuery เบื้องต้น

ข้อควรพิจารณาและประสิทธิภาพ

  • รวมคำสั่ง DML เข้าด้วยกันเมื่อเป็นไปได้ แทนที่จะรันทีละคำสั่ง
  • ต้องใช้เงื่อนไข WHERE เมื่อรันคำสั่ง UPDATE
  • พิจารณาใช้ partition และ cluster ของตาราง
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language
BigQuery เบื้องต้น

INSERT

  • เพิ่มระเบียนลงในตาราง
-- Define the columns in the parentheses 
INSERT INTO customers (customer_id, name, email)

-- Each value is a row to be inserted
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
BigQuery เบื้องต้น

UPDATE

  • เปลี่ยนแปลงข้อมูลตามเงื่อนไข
UPDATE customers
-- Set one column for each SET statement
SET email = "[email protected]"
-- Make sure to include where otherwise all
-- rows will be updated
WHERE customer_id = 1;
  • UPDATE ร่วมกับ subquery หรือ join
    UPDATE customers c
    SET c.email = e.email
    FROM emails e
    WHERE c.customer_id = 1;
    
BigQuery เบื้องต้น

DELETE

  • DELETE ลบระเบียนอย่างถาวร และไม่สามารถย้อนกลับได้
DELETE FROM customers

-- Include WHERE to ensure only specific rows are deleted
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
BigQuery เบื้องต้น

MERGE

  • รวม INSERT, UPDATE และ DELETE ไว้ในการดำเนินการเดียว
-- Sets the customers table as the target
MERGE customers AS target

-- The source is set to new_customers USING new_customers AS source
-- Matching condition ON target.customer_id = source.customer_id
-- If the emails do not match, update the email WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email
-- If the match is not met, insert the record WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
BigQuery เบื้องต้น

CREATE TABLE

  • สร้างตารางใหม่จากคิวรี
CREATE TABLE active_customers AS
SELECT customer_id, name, email 
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
BigQuery เบื้องต้น

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

BigQuery เบื้องต้น

Preparing Video For Download...