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 colonnescampaign_id
etct
- 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.