Créer des tables

Les tables temporaires et persistantes vous aident à simplifier vos requêtes, ce qui les rend plus faciles à comprendre et à gérer. En créant des résultats intermédiaires réutilisables, vous pouvez réduire les ressources nécessaires pour exécuter les requêtes, améliorant ainsi les performances, tout en ayant la possibilité de conserver les données temporaires non agrégées.

Les tables créées sont sujettes aux mêmes contrôles de confidentialité statiques, fonctions autorisées, et limitations de jointure de champs que ceux appliqués dans Ads Data Hub. Les contrôles de confidentialité standard s'appliquent lorsque les informations de l'instruction finale SELECT sont exportées vers BigQuery.

Pour créer des tables, suivez la syntaxe BigQuery :

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

Ces clauses ne sont pas prises en charge :

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tables temporaires

Les tables temporaires (ou "temp") améliorent la lisibilité des requêtes et vous permettent de créer des résultats intermédiaires qui ne sont pas sujets aux exigences d'agrégation ou de différence.

Les tables temporaires :

  • existent uniquement au niveau de la session et expirent après l'exécution de la requête
  • peuvent être utilisées uniquement à l'intérieur de la requête dans laquelle elles ont été créées
  • ne sont pas sujettes aux exigences d'agrégation ou de confidentialité différentielle
  • prennent en charge l'espace de noms tmp optionnel.

Pour créer une table temporaire, utilisez l'instruction CREATE TEMP TABLE. Dans cet exemple, une table temporaire est créée pour stocker les résultats d'une requête, puis elle est utilisée dans une sous-requête :

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

Tables persistantes

Si vous avez besoin de créer une table intermédiaire à utiliser dans d'autres requêtes, vous pouvez créer une table persistante. La syntaxe est la même que pour les tables temporaires, sans la clause TEMP spécifique. Les tables persistantes sont filtrées préalablement, ce qui signifie que les vérifications d'agrégation ne sont pas appliquées, et elles restent actives pendant 72 heures. Si une table portant le nom sélectionné existe déjà, elle est écrasée.

Les tables persistantes :

  • expirent au bout de 72 heures
  • peuvent être utilisées en dehors de la requête qui l'a créée
  • sont sujettes aux exigences d'agrégation
  • nécessitent l'espace de noms tmp uniquement lors de l'accès à la table à partir d'une requête ultérieure.

Pour créer une table persistante, utilisez l'instruction CREATE TABLE. Dans cet exemple, une table persistante est créée pour stocker les résultats d'une requête, puis elle est utilisée dans une requête ultérieure :

Requête 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
);

Requête 2 

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

Appliquer les contrôles de confidentialité

Ads Data Hub accepte également une syntaxe SQL pour créer des tables de résultats intermédiaires sujettes à des contrôles de confidentialité.

Pour créer une table sujette à des contrôles de confidentialité, ajoutez la clause OPTIONS à votre requête :

OPTIONS(privacy_checked_export=true)

Dans cet exemple, une table temporaire au niveau de la session est créée et des contrôles de confidentialité sont appliqués :

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

Dans cet exemple, une table persistante est créée, des contrôles de confidentialité sont appliqués, puis elle est exportée vers votre projet 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
);

Exporter plusieurs tables à l'aide d'une seule requête

Ads Data Hub accepte une syntaxe SQL flexible pour exporter les tables de résultats visibles lorsqu'une table par requête ne suffit pas. Ces tables sont sujettes aux mêmes contrôles de confidentialité que ceux appliqués dans Ads Data Hub.

Voici la syntaxe permettant d'exporter une table avec l'expression SQL principale :


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

Par exemple, pour exporter une table vers la destination BigQuery myproject.mydataset.mytable contenant un nombre de lignes pour chaque ID de campagne de la table 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;

Les tables peuvent également être référencées dans la requête dans laquelle elles ont été créées. Par exemple, la requête :


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

génère deux tables :

  • l'une à myproject.mydataset.mytable, contenant les colonnes campaign_id et ct
  • l'autre à l'emplacement spécifié dans le champ Table de destination des arguments de la tâche, contenant la colonne ct

Il est également possible d'ajouter un récapitulatif des lignes filtrées à ces tables. En savoir plus sur les récapitulatifs des lignes filtrées.