建立資料表

運用臨時資料表和永久資料表即可簡化查詢,以便您進行解讀及管理。您可以建立可重複使用的中繼結果,以及選擇將臨時資料維持在未經匯總的狀態,因此執行查詢所需的資源便會減少,有助於提升效能。

建立後的資料表會經過相同的靜態隱私權檢查,且有允許使用的函式,以及廣告資料中心強制執行的欄位彙整限制。如果最終 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

臨時資料表

臨時資料表可提高查詢的可讀性,以及可讓您建立不受匯總或差異檢查規定影響的中繼結果。

臨時資料表:

  • 只存在於工作階段層級,且會在執行查詢後失效
  • 只能在建立時所在的查詢內使用
  • 不受匯總或差異化隱私規定的影響
  • 支援自選 tmp 命名空間

如要建立臨時資料表,請使用 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 -- Alternative: tmp.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
);

查詢 2

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

執行隱私權檢查

廣告資料中心也支援使用 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 `myproject.mydataset.creative_list` OPTIONS(privacy_checked_export=true) AS (
  SELECT
    adgroup_id,
    advertiser_id,
    creative_id
  FROM
    adh.dv360_youtube_impressions
);

同筆查詢匯出多個資料表

如果每筆查詢需用到多個資料表,廣告資料中心也支援彈性的 SQL 語法,可匯出可視結果資料表。這些資料表同樣須接受廣告資料中心強制執行的隱私權檢查

隨主要 SQL 運算式匯出資料表的語法如下:


CREATE TABLE <project_name.dataset_name.table_name>
  OPTIONS(privacy_checked_export=true) AS query_statement;

舉例來說,將資料表匯出至 BigQuery 目的地 myproject.mydataset.mytable,其中包含資料表 adh.google_ads_impressions 中每個廣告活動 ID 的資料列:


CREATE TABLE `myproject.mydataset.mytable` OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;

查詢時建立的資料表也能當成同筆查詢的參照資料表,請參閱下方查詢範例:


CREATE TABLE `myproject.mydataset.mytable` OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;
SELECT ct FROM `myproject.mydataset.mytable`;

這筆查詢會輸出兩個資料表:

  • 一個位於 myproject.mydataset.mytable,內含 campaign_idct
  • 一個位於工作引數的「目的地資料表欄位中指定的位置,內含 ct

此外,您也可以在這些表格中新增篩除資料列摘要。如要瞭解篩除資料列摘要,請參閱本文