Tworzenie tabel

Tabele trwałe i tymczasowe pomagają usprawnić obsługę zapytań, ponieważ ułatwiają ich analizowanie i utrzymywanie. Dzięki tworzeniu wyników pośrednich wielokrotnego użytku, które pozwalają przechowywać niezagregowane dane tymczasowe, możesz ograniczyć ilość zasobów niezbędnych do wykonywania zapytań, polepszając w ten sposób wydajność systemu.

Utworzone tabele podlegają tym samym statycznym mechanizmom kontroli prywatności, dozwolonym funkcjomograniczeniom złączania pól, które są zwyczajowo stosowane w Centrum danych reklam. Standardowe mechanizmy kontroli prywatności mają zastosowanie, gdy dane z końcowej instrukcji SELECT są przekazywane do BigQuery.

Przy tworzeniu tabel przestrzegaj składni BigQuery:

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

Te klauzule nie są obsługiwane:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tabele tymczasowe

Tabele tymczasowe zwiększają czytelność zapytań i umożliwiają tworzenie wyników pośrednich, które nie podlegają wymaganiom dotyczącym agregacji ani różnicowania.

Tabele tymczasowe:

  • występują tylko na poziomie sesji i tracą ważność po wykonaniu zapytania;
  • mogą być używane tylko w obrębie zapytania, w którym je utworzono;
  • nie podlegają wymaganiom dotyczącym agregacji ani prywatności różnicowej;
  • obsługują opcjonalną przestrzeń nazw tmp.

Do tworzenia tabel tymczasowych służy instrukcja CREATE TEMP TABLE. W tym przykładzie tworzymy tabelę tymczasową do przechowywania wyników zapytania, a następnie używamy jej w zapytaniu podrzędnym:

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

Tabele trwałe

Jeśli potrzebujesz tabeli pośredniej do użycia w innych zapytaniach, możesz utworzyć tabelę trwałą. Składnia jest taka sama jak w przypadku tabel tymczasowych, ale bez klauzuli TEMP. Tabele trwałe są wstępnie przefiltrowane, co oznacza, że nie są do nich stosowane mechanizmy kontroli agregacji. Tabele takie zachowują ważność przez 72 godziny. Jeśli istnieje już tabela o wybranej nazwie, zostanie ona zastąpiona.

Tabele trwałe:

  • tracą ważność po 72 godzinach;
  • mogą być używane poza zapytaniem, w którym je utworzono;
  • podlegają wymaganiom dotyczącym agregacji;
  • wymagają przestrzeni nazw tmp tylko wtedy, gdy uzyskuje się do nich dostęp z poziomu późniejszego zapytania.

Do tworzenia tabel trwałych służy instrukcja CREATE TABLE. W tym przykładzie tworzymy tabelę trwałą do przechowywania wyników zapytania, a następnie używamy jej w późniejszym zapytaniu:

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

Zapytanie 2

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

Stosowanie mechanizmów kontroli prywatności

Centrum danych reklam obsługuje też składnię SQL, aby tworzyć tabele wyników pośrednich, które podlegają mechanizmom kontroli prywatności.

Aby utworzyć tabelę, która podlega tym mechanizmom, dodaj do zapytania klauzulę OPTIONS:

OPTIONS(privacy_checked_export=true)

W tym przykładzie tworzymy tabelę tymczasową na poziomie sesji i stosujemy do niej mechanizmy kontroli prywatności:

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

W tym przykładzie tworzymy tabelę trwałą, stosujemy do niej mechanizmy kontroli prywatności i eksportujemy ją do projektu 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
);

Eksportowanie wielu tabel za pomocą jednego zapytania

Centrum danych reklam obsługuje elastyczną składnię SQL, aby eksportować widoczne tabele wyników w przypadkach, gdy jedna tabela na zapytanie to za mało. Tabele te podlegają tym samym mechanizmom kontroli prywatności, które są zwyczajowo stosowane w Centrum danych reklam.

Składnia eksportowania tabeli wraz z głównym wyrażeniem SQL:


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

Aby np. wyeksportować tabelę do miejsca docelowego BigQuery myproject.mydataset.mytable, które zawiera liczbę wierszy przypadającą na każdy identyfikator kampanii z tabeli 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;

Do tabel można się też odwoływać w tym samym zapytaniu, w którym zostały one utworzone. Na przykład zapytanie:


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

zwraca 2 tabele:

  • jedną z kolumnami campaign_idct w miejscu docelowym myproject.mydataset.mytable,
  • a drugą tylko z kolumną ct w lokalizacji określonej w polu Tabela docelowa w argumentach zadania.

Do tych tabel możesz też dodawać podsumowanie wierszy po zastosowaniu filtra. Więcej informacji o podsumowaniach wierszy po zastosowaniu filtra