運用臨時資料表和永久資料表即可簡化查詢,以便您進行解讀及管理。您可以建立可重複使用的中繼結果,以及選擇將臨時資料維持在未經匯總的狀態,因此執行查詢所需的資源便會減少,有助於提升效能。
建立後的資料表會經過相同的靜態隱私權檢查,且有允許使用的函式,以及廣告資料中心強制執行的欄位彙整限制。如果最終 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_id
和ct
欄 - 一個位於工作引數的「目的地資料表」欄位中指定的位置,內含
ct
欄
此外,您也可以在這些表格中新增篩除資料列摘要。如要瞭解篩除資料列摘要,請參閱本文。