Creare tabelle

Le tabelle temporanee e quelle permanenti ti aiutano a semplificare le query, rendendole più facili da capire e gestire. Generando risultati intermedi riutilizzabili e grazie alla possibilità di mantenere i dati temporanei non aggregati, puoi ridurre il numero di risorse necessarie per eseguire le query, migliorando così il rendimento.

Le tabelle create sono soggette agli stessi controlli per la privacy statici, alle stesse funzioni consentite, e alle stesse limitazioni dell'unione dei campi applicati in Ads Data Hub. I controlli per la privacy standard vengono applicati quando i dati dell'istruzione finale SELECT vengono inviati a BigQuery.

Per creare le tabelle, utilizza la sintassi di BigQuery:

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

Queste clausole non sono supportate:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tabelle temporanee

Le Tabelle temporanee (temp) migliorano la leggibilità delle query e ti consentono di generare risultati intermedi che non sono soggetti a requisiti di aggregazione o per le differenze.

Le tabelle temporanee:

  • Esistono solo a livello di sessione e scadono dopo l'esecuzione della query.
  • Possono essere utilizzate solo all'interno della query in cui sono state create.
  • Non sono soggette a requisiti di aggregazione o privacy differenziale.
  • Supportano lo spazio dei nomi facoltativo tmp.

Per creare una tabella temporanea, utilizza l'istruzione CREATE TEMP TABLE. In questo esempio, viene creata una tabella temporanea per archiviare i risultati di una query e poi utilizzare la tabella temporanea in una sottoquery:

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

Tabelle permanenti

Se hai bisogno di creare una tabella intermedia da utilizzare in altre query, puoi creare una tabella permanente. La sintassi è la stessa delle tabelle temporanee, ma senza la clausola TEMP. Le tabelle permanenti sono prefiltrate, il che significa che i controlli di aggregazione non vengono applicati e le tabelle durano 72 ore. Se c'è già una tabella con il nome selezionato, questa viene sovrascritta.

Le tabelle permanenti:

  • Scadono dopo 72 ore.
  • Possono essere utilizzate al di fuori della query in cui sono state create.
  • Sono soggette a requisiti di aggregazione.
  • Richiedono lo spazio dei nomi tmp solo quando si accede alla tabella da una query successiva.

Per creare una tabella persistente, utilizza l'istruzione CREATE TABLE. In questo esempio, viene creata una tabella persistente per archiviare i risultati di una query e poi utilizzare la tabella permanente in una query successiva:

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

Query 2

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

Applicare i controlli per la privacy

Ads Data Hub supporta anche la sintassi SQL per creare tabelle di risultati intermedi soggette a controlli per la privacy.

Per creare una tabella soggetta a controlli per la privacy, aggiungi la clausola OPTIONS alla query:

OPTIONS(privacy_checked_export=true)

In questo esempio, viene creata una tabella temporanea a livello di sessione e vengono applicati i controlli per la privacy:

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

In questo esempio viene creata una tabella persistente, vengono applicati i controlli per la privacy e viene eseguita l'esportazione nel progetto 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
);

Esportare più tabelle utilizzando una sola query

Ads Data Hub supporta una sintassi SQL flessibile per esportare le tabelle di risultati visibili nei casi in cui una tabella per query non sia sufficiente. Queste tabelle sono soggette agli stessi controlli per la privacy applicati in Ads Data Hub.

La sintassi per esportare una tabella insieme all'espressione SQL principale è:


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

Ad esempio, per esportare una tabella nella destinazione BigQuery myproject.mydataset.mytable contenente un conteggio di righe per ogni ID campagna dalla tabella adh.google_ads_impressions:


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;

È inoltre possibile fare riferimento alle tabelle nella stessa query in cui sono state create. Ad esempio, la query


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

genera 2 tabelle:

  • Una in myproject.mydataset.mytable, con le colonne campaign_id e ct.
  • Una nella posizione indicata nel campo Tabella di destinazione degli argomenti del job, con la colonna ct.

È anche possibile aggiungere un riepilogo di righe filtrate a queste tabelle. Scopri cosa sono i riepiloghi di righe filtrate.