Buat tabel

Tabel sementara dan tabel persisten membantu Anda menyederhanakan kueri, sehingga lebih mudah dipahami dan dikelola. Dengan membuat hasil perantara yang dapat Anda gunakan kembali, sekaligus memberi Anda opsi untuk menyimpan data sementara yang tidak diagregasi, Anda dapat mengurangi resource yang diperlukan untuk menjalankan kueri, sehingga meningkatkan performa.

Tabel yang dibuat tunduk pada pemeriksaan privasi statis, fungsi yang diizinkan, dan batasan gabungan kolom yang sama yang diterapkan di seluruh Ads Data Hub. Pemeriksaan privasi standar berlaku saat data dari pernyataan SELECT akhir ditampilkan ke BigQuery.

Untuk membuat tabel, ikuti sintaksis BigQuery:

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

Klausul berikut tidak didukung:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tabel sementara

Tabel sementara (atau temp) meningkatkan keterbacaan kueri, dan memungkinkan Anda membuat hasil menengah yang dapat mencakup data yang tidak diagregasi.

Tabel sementara:

  • Hanya ada di tingkat sesi, dan berakhir setelah eksekusi kueri
  • Hanya dapat digunakan di dalam kueri tempat kolom tersebut dibuat
  • Dapat menyimpan data yang belum digabungkan dan belum menerapkan pemeriksaan privasi
  • Direferensikan berdasarkan nama tanpa namespace yang diperlukan

Untuk membuat tabel sementara, gunakan pernyataan CREATE TEMP TABLE. Contoh ini membuat tabel sementara untuk menyimpan hasil kueri, lalu menggunakan tabel sementara dalam subkueri:

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

Tabel persisten

Jika perlu membuat tabel perantara untuk digunakan dalam kueri lain, Anda dapat membuat tabel persisten. Sintaksisnya sama seperti untuk tabel sementara, tanpa klausa TEMP. Tabel ini berlaku selama 72 jam. Jika tabel dengan nama yang dipilih sudah ada, tabel tersebut akan ditimpa.

Tabel persisten dapat menyimpan data yang tidak diagregasi, tetapi konten tabel tidak terlihat kecuali melalui hasil kueri yang diperiksa privasinya.

Tabel persisten:

  • Berakhir setelah 72 jam
  • Dapat digunakan di luar kueri yang membuatnya
  • Dapat menyimpan data yang belum digabungkan dan belum menerapkan pemeriksaan privasi
  • Direferensikan melalui namespace tmp, tetapi juga dapat direferensikan berdasarkan nama dalam kueri yang sama

Untuk membuat tabel persisten, gunakan pernyataan CREATE TABLE. Contoh ini membuat tabel persisten untuk menyimpan hasil kueri, lalu menggunakan tabel persisten dalam kueri berikutnya:

Kueri 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

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

Menerapkan pemeriksaan privasi

Ads Data Hub juga mendukung sintaks SQL untuk membuat tabel hasil sementara yang tunduk pada pemeriksaan privasi.

Untuk membuat tabel yang tunduk pada pemeriksaan privasi, tambahkan klausa OPTIONS ke kueri Anda:

OPTIONS(privacy_checked_export=true)

Contoh ini membuat tabel sementara tingkat sesi dan menerapkan pemeriksaan privasi:

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

Contoh ini membuat tabel persisten, menerapkan pemeriksaan privasi, dan mengekspornya ke project Google Cloud Anda:

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

Mengekspor beberapa tabel menggunakan satu kueri

Ads Data Hub mendukung sintaksis SQL yang fleksibel untuk mengekspor tabel hasil yang dapat dilihat jika satu tabel per kueri tidak cukup. Tabel ini tunduk pada pemeriksaan privasi yang sama yang diterapkan di seluruh Ads Data Hub.

Sintaksis untuk mengekspor tabel bersama dengan ekspresi SQL utama adalah:

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

Misalnya, untuk mengekspor tabel ke tujuan BigQuery PROJECT_NAME.DATASET.TABLE_NAME yang berisi jumlah baris untuk setiap ID kampanye dari tabel 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;

Contoh berikut memperluas ide ini dan menggunakan kueri yang sama untuk mengekspor dua tabel ke 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;

Tabel juga dapat dirujuk dalam kueri yang sama saat tabel tersebut dibuat. Misalnya, kueri berikut menghasilkan dua tabel:

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;
  • Tabel pertama dibuat di PROJECT_NAME.DATASET.TABLE_NAME,dengan kolom campaign_id dan ct.
  • Tabel kedua dibuat di lokasi yang ditentukan di kolom Destination table dari argumen tugas, dengan kolom ct.

Menambahkan ringkasan baris yang difilter

Anda juga dapat menambahkan ringkasan baris yang difilter ke tabel ini. Baca tentang ringkasan baris yang difilter.

Memberi nama beberapa tabel saat runtime

Saat membuat beberapa tabel dalam kueri, ada dua cara untuk menamainya:

  • Beri nama tabel secara eksplisit di SQL menggunakan format berikut: PROJECT_NAME.DATASET.TABLE_NAME.
  • Gunakan parameter sebagai placeholder dalam SQL, lalu beri nama tabel saat runtime.

Membuat dan memperbarui tabel BigQuery

Ads Data Hub mendukung penggunaan langsung pernyataan BigQuery tertentu dalam skrip, sehingga memungkinkan penyisipan baris ke dalam tabel hasil yang ada, bukan membuat tabel baru untuk setiap tugas. Pernyataan ini harus mereferensikan jalur tabel langsung di project BigQuery Anda, dan tidak dapat langsung mengakses tabel atau opsi Ads Data Hub (seperti privacy_checked_export).

Pernyataan yang didukung:

Contoh kueri:

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

Perhatikan bahwa pernyataan MERGE tidak mendukung pengubahan skema tabel. Jika Anda perlu menambahkan atau mengubah kolom dalam tabel laporan yang ada, Anda dapat memperbarui skema tabel di BigQuery sebelum menjalankan tugas di Ads Data Hub, atau menjalankan tugas Ads Data Hub untuk menyalin tabel dengan skema dan opsi yang diperbarui, misalnya:

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;