Vytvořit tabulky

Dočasné a trvalé tabulky pomáhají zjednodušovat dotazy a usnadňují jejich pochopení a aktuálnost. Vytvořením průběžných výsledků, které se dají opakovaně využít a zároveň umožňují ponechat dočasná data neagregovaná, můžete ušetřit prostředky potřebné k provádění dotazů a zlepšit výkon.

Na vytvořené tabulky se vztahují stejné statické kontroly ochrany soukromí, povolené funkceomezení spojování polí, která se používají všude v Ads Data Hub. Standardní kontroly ochrany soukromí se provádějí, když údaje ze závěrečného SELECT příkazu vystupují do BigQuery.

Při vytváření tabulek se řiďte syntaxí BigQuery:

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

Tyto klauzule nejsou podporovány:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Dočasné tabulky

Dočasné tabulky zlepšují čitelnost dotazu a umožňují vytvářet průběžné výsledky, které nepodléhají požadavkům na agregaci nebo rozdíly.

Dočasné tabulky:

  • Vyskytují se pouze na úrovni relace a jejich platnost vyprší po spuštění dotazu.
  • Dají se využít pouze v dotazu, ve kterém byly vytvořeny.
  • Nepodléhají požadavkům na agregaci nebo diferenční ochranu soukromí.
  • Podporují nepovinný jmenný prostor tmp.

Dočasnou tabulku vytvoříte příkazem CREATE TEMP TABLE. Na tomto příkladu vidíte, jak se vytvoří dočasná tabulka pro uložení výsledků dotazu a jak se potom využije u dílčího dotazu:

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

Trvalé tabulky

Pokud potřebujete vytvořit pomocnou tabulku, kterou byste mohli použít v dalších dotazech, můžete vytvořit trvalou tabulku. Syntaxe je stejná jako u dočasných tabulek bez klauzule TEMP. Trvalé tabulky jsou předběžně filtrované, takže nejsou potřeba agregační kontroly, a vydrží 72 hodin. Pokud už tabulka s vybraným názvem existuje, bude přepsána.

Trvalé tabulky:

  • Mají platnost 72 hodin.
  • Dají se použít mimo dotaz, který vedl k jejich vytvoření.
  • Podléhají požadavkům na agregaci.
  • Požadují jmenný prostor tmp pouze při přístupu k tabulce z pozdějšího dotazu.

Trvalou tabulku vytvoříte příkazem CREATE TABLE. Na tomto příkladu vidíte, jak se vytvoří trvalá tabulka pro uložení výsledků dotazu a jak se potom využije u pozdějšího dotazu:

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

Dotaz 2

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

Kontrolovat ochranu soukromí

Ads Data Hub také podporuje syntaxi SQL pro vytváření dočasných tabulek výsledků, které podléhají kontrolám ochrany soukromí.

Když chcete vytvořit tabulku podléhající kontrolám ochrany soukromí, přidejte do dotazu klauzuli OPTIONS:

OPTIONS(privacy_checked_export=true)

Na tomto příkladu vidíte, jak se vytvoří dočasná tabulka na úrovni relace a zapne se kontrola ochrany soukromí:

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

Na tomto příkladu vidíte, jak se vytvoří trvalá tabulka, zapne se kontrola ochrany soukromí a tabulka se exportuje do cloudového projektu Google.

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

Export více tabulek pomocí jednoho dotazu

Pro případ, že nestačí jedna tabulka na dotaz, podporuje služba Ads Data Hub flexibilní syntaxi jazyka SQL umožňující exportovat tabulky výsledků, které je možno prohlížet. Na tyto tabulky se vztahují stejné kontroly ochrany soukromí, jaké se uplatňují všude ve službě Ads Data Hub.

K exportu tabulky vedle hlavního výrazu jazyka SQL se používá tato syntaxe:


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

Níže je uveden příklad příkazu, kterým do umístění myproject.mydataset.mytable v BigQuery exportujete tabulku obsahující počet řádků pro jednotlivá ID kampaní v tabulce 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;

Na tabulky se lze odkazovat i ve stejném dotazu, v němž jsou vytvořeny. Například výstupem dotazu:


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

vzniknou dvě tabulky:

  • Jedna v myproject.mydataset.mytable se sloupci campaign_idct
  • Druhá obsahující sloupec ct, v umístění uvedeném v poli Cílová tabulka zadaném v argumentech úlohy

Do těchto tabulek je také možno přidat souhrn odfiltrovaných řádků. Přečtěte si o souhrnech filtrovaných řádků.