สร้างตาราง

ตารางชั่วคราวและตารางถาวรช่วยให้คุณเพิ่มประสิทธิภาพ คำค้นหา ทำให้เข้าใจและบำรุงรักษาได้ง่ายขึ้น การสร้างผลลัพธ์ ระดับกลางที่นำกลับมาใช้ใหม่ได้ พร้อมทั้งให้ตัวเลือกในการเก็บข้อมูล ชั่วคราวแบบไม่รวมกลุ่มจะช่วยลดทรัพยากรที่จำเป็นในการเรียกใช้การค้นหา ซึ่งจะช่วยปรับปรุงประสิทธิภาพ

ตารางที่สร้างขึ้นจะอยู่ภายใต้การตรวจสอบความเป็นส่วนตัว ฟังก์ชันที่อนุญาต และ ข้อจำกัดในการรวมฟิลด์ แบบคงที่เดียวกันซึ่งบังคับใช้ทั่วทั้ง Ads Data Hub การตรวจสอบความเป็นส่วนตัวมาตรฐานจะมีผลเมื่อส่งออกข้อมูลจากคำสั่ง SELECT สุดท้ายไปยัง BigQuery

หากต้องการสร้างตาราง ให้ทำตามไวยากรณ์ BigQuery ดังนี้

CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
 [OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;

ระบบไม่รองรับข้อความต่อไปนี้

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

ตารางชั่วคราว

ตารางชั่วคราว (หรือ temp) ช่วยปรับปรุงความสามารถในการอ่านคําค้นหา และช่วยให้คุณสร้างผลลัพธ์ระดับกลางซึ่งอาจรวมถึงข้อมูลที่ไม่ได้รวบรวม

ตารางชั่วคราว:

  • มีเฉพาะในระดับเซสชันและจะหมดอายุหลังจากเรียกใช้คำค้นหา
  • ใช้ได้เฉพาะภายในคําค้นหาที่สร้างขึ้น
  • อาจจัดเก็บข้อมูลที่ยังไม่ได้รวบรวมซึ่งยังไม่ได้ใช้การตรวจสอบความเป็นส่วนตัว
  • อ้างอิงตามชื่อโดยไม่ต้องระบุเนมสเปซ

หากต้องการสร้างตารางชั่วคราว ให้ใช้คำสั่ง CREATE TEMP TABLE ตัวอย่างนี้ สร้างตารางชั่วคราวเพื่อจัดเก็บผลลัพธ์ของการค้นหา แล้วใช้ตารางชั่วคราว ในการค้นหาย่อย

-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list AS (
  SELECT
    adgroup_id,
    advertiser_id,
    creative_id
  FROM
    adh.dv360_youtube_impressions
);
-- Return creatives with a count of impressions greater than 100
SELECT
  creative_id,
  COUNT(*) AS imps
FROM
  creative_list
WHERE
  imps > 100
GROUP BY
  creative_id;

ตารางที่นำกลับมาใช้ซ้ำได้

หากต้องการสร้างตารางกลางเพื่อใช้ในการค้นหาอื่นๆ คุณสามารถ สร้างตารางแบบถาวรได้ ไวยากรณ์จะเหมือนกับตารางชั่วคราว โดยไม่มีคําสั่ง TEMP ตารางเหล่านี้จะคงอยู่นาน 72 ชั่วโมง หากมีตารางที่มีชื่อที่เลือกอยู่แล้ว ระบบจะเขียนทับตารางนั้น

ตารางแบบถาวรอาจจัดเก็บข้อมูลที่ไม่ได้รวบรวม แต่เนื้อหาของตารางจะ มองไม่เห็น ยกเว้นผ่านผลการค้นหาที่ตรวจสอบความเป็นส่วนตัวแล้ว

ตารางที่นำกลับมาใช้ซ้ำได้

  • หมดอายุหลังจาก 72 ชั่วโมง
  • ใช้ภายนอกคำค้นหาที่สร้างได้
  • อาจจัดเก็บข้อมูลที่ยังไม่ได้รวบรวมซึ่งยังไม่ได้ใช้การตรวจสอบความเป็นส่วนตัว
  • อ้างอิงผ่านเนมสเปซ tmp แต่ก็อ้างอิงตามชื่อในคำค้นหาเดียวกันได้ด้วย

หากต้องการสร้างตารางแบบถาวร ให้ใช้คำสั่ง CREATE TABLE ตัวอย่างนี้ สร้างตารางแบบถาวรเพื่อจัดเก็บผลลัพธ์ของการค้นหา จากนั้นใช้ ตารางแบบถาวรในการค้นหาในภายหลัง

คำค้นหา 1

-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE creative_list AS (
  SELECT
    adgroup_id,
    advertiser_id,
    creative_id
  FROM
    adh.dv360_youtube_impressions
);

-- Return the total count of impressions in the table
SELECT
  COUNT(*) AS imps
FROM
  tmp.creative_list -- Alternative: creative_list

คำค้นหา 2

-- Return creatives which had more than 100 impressions
SELECT
  creative_id,
  COUNT(*) AS imps
FROM
  tmp.creative_list
WHERE
  imps > 100
GROUP BY
  creative_id;

ใช้การตรวจสอบความเป็นส่วนตัว

นอกจากนี้ Ads Data Hub ยังรองรับไวยากรณ์ SQL เพื่อสร้างตารางผลลัพธ์ระดับกลางที่ ต้องผ่านการตรวจสอบความเป็นส่วนตัว

หากต้องการสร้างตารางที่ต้องมีการตรวจสอบความเป็นส่วนตัว ให้เพิ่มข้อความOPTIONSลงใน การค้นหา

OPTIONS(privacy_checked_export=true)

ตัวอย่างนี้สร้างตารางชั่วคราวระดับเซสชันและใช้การตรวจสอบความเป็นส่วนตัว

-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list OPTIONS(privacy_checked_export=true) AS (
  SELECT
    adgroup_id,
    advertiser_id,
    creative_id
  FROM
    adh.dv360_youtube_impressions
);

ตัวอย่างนี้จะสร้างตารางแบบถาวร ใช้การตรวจสอบความเป็นส่วนตัว และส่งออกไปยังโปรเจ็กต์ Google Cloud ของคุณ

-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE project_name.dataset_name.creative_list` OPTIONS(privacy_checked_export=true) AS (
  SELECT
    adgroup_id,
    advertiser_id,
    creative_id
  FROM
    adh.dv360_youtube_impressions
);

ส่งออกหลายตารางโดยใช้การค้นหาเดียว

ฮับข้อมูลโฆษณารองรับไวยากรณ์ SQL ที่ยืดหยุ่นเพื่อส่งออกตารางผลลัพธ์ที่มองเห็นได้ ในกรณีที่ตาราง 1 ตารางต่อการค้นหาไม่เพียงพอ ตารางเหล่านี้ต้องผ่านการตรวจสอบความเป็นส่วนตัว เดียวกันซึ่งบังคับใช้ทั่วทั้งฮับข้อมูลโฆษณา

ไวยากรณ์สำหรับการส่งออกตารางควบคู่ไปกับนิพจน์ SQL หลักมีดังนี้

CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
  OPTIONS(privacy_checked_export=true) AS query_statement;

เช่น หากต้องการส่งออกตารางไปยังปลายทาง BigQuery PROJECT_NAME.DATASET.TABLE_NAME ซึ่งมีจำนวนแถวของแต่ละแคมเปญ ID จากตาราง adh.google_ads_impressions ให้ทำดังนี้

CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
  OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;

ตัวอย่างต่อไปนี้จะขยายแนวคิดนี้และใช้การค้นหาเดียวกันเพื่อส่งออก 2 ตารางไปยัง BigQuery

CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
  OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;

CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME_2
  OPTIONS(privacy_checked_export=true) AS
  SELECT advertiser_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY advertiser_id;

นอกจากนี้ คุณยังอ้างอิงตารางในคำค้นหาเดียวกันกับที่สร้างตารางได้ด้วย ตัวอย่างเช่น การค้นหาต่อไปนี้จะแสดงตาราง 2 ตาราง

CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
  OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;

SELECT ct FROM PROJECT_NAME.DATASET.TABLE_NAME;
  • ระบบจะสร้างตารางแรกที่ PROJECT_NAME.DATASET.TABLE_NAME โดยมีคอลัมน์ campaign_id และ ct
  • ตารางที่ 2 จะสร้างขึ้นในตำแหน่งที่ระบุในฟิลด์ตารางปลายทางของอาร์กิวเมนต์ของงาน โดยมีคอลัมน์ ct

การเพิ่มข้อมูลสรุปแถวที่กรอง

นอกจากนี้ คุณยังเพิ่มสรุปแถวที่กรองแล้วลงในตารางเหล่านี้ได้ด้วย อ่านเกี่ยวกับ ข้อมูลสรุปของแถวที่กรองแล้ว

การตั้งชื่อหลายตารางที่รันไทม์

เมื่อสร้างตารางหลายรายการในคำค้นหา คุณจะตั้งชื่อตารางได้ 2 วิธีดังนี้

  • ตั้งชื่อตารางอย่างชัดเจนใน SQL โดยใช้รูปแบบ PROJECT_NAME.DATASET.TABLE_NAME
  • ใช้พารามิเตอร์เป็นตัวยึดตำแหน่งใน SQL แล้วตั้งชื่อตารางที่รันไทม์

สร้างและอัปเดตตาราง BigQuery

ฮับข้อมูลโฆษณารองรับการใช้คำสั่ง BigQuery บางอย่างในสคริปต์โดยตรง จึงทำให้แทรกแถวลงในตารางผลลัพธ์ที่มีอยู่ได้แทนที่จะ สร้างตารางใหม่สำหรับทุกงาน คำสั่งเหล่านี้ต้องอ้างอิงเส้นทางตารางโดยตรงในโปรเจ็กต์ BigQuery และไม่สามารถเข้าถึงตารางหรือตัวเลือก Ads Data Hub ได้โดยตรง (เช่น privacy_checked_export)

ข้อความที่รองรับ

ตัวอย่างคำค้นหา

-- Compute new data for the current job. This table can be used with MERGE.
CREATE TEMP TABLE new_data OPTIONS(privacy_checked_export=TRUE) AS
SELECT
  DATE(event_time, @time_zone) AS event_date,
  <more grouping keys>,
  COUNT(*) AS impressions,
  <more metrics>
FROM ...
GROUP BY ALL;

-- Initialize a result table on the first run of the query, which may include
-- date partitioning and/or clustering for efficiency.
CREATE TABLE IF NOT EXISTS PROJECT_NAME.DATASET.TABLE_NAME (<columns>)
PARTITION BY event_date CLUSTER BY ...
OPTIONS(partition_expiration_days=365);

-- Atomically insert new results or update existing ones.
MERGE PROJECT_NAME.DATASET.TABLE_NAME a
USING new_data b ON a.data_date = b.data_date AND <more grouping keys>
WHEN MATCHED THEN
  UPDATE SET a.impressions = b.impressions, <more metrics>
WHEN NOT MATCHED THEN
  INSERT (<all columns>) VALUES(<all columns>);

โปรดทราบว่าคำสั่ง MERGE ไม่รองรับการแก้ไขสคีมาของตาราง หากต้องการเพิ่มหรือเปลี่ยนคอลัมน์ในตารางรายงานที่มีอยู่ คุณสามารถอัปเดตสคีมาตารางใน BigQuery ก่อนที่จะเรียกใช้ชื่องานในฮับข้อมูลโฆษณา หรือเรียกใช้ชื่องานฮับข้อมูลโฆษณาเพื่อคัดลอกตารางที่มีสคีมาและตัวเลือกที่อัปเดตแล้ว เช่น

CREATE OR REPLACE TABLE PROJECT_NAME.DATASET.TABLE_NAME
PARTITION BY event_date CLUSTER BY ... OPTIONS(...) AS
SELECT
  <new columns>
FROM PROJECT_NAME.DATASET.TABLE_NAME;