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 funkcjom i ograniczeniom 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_id
ict
w miejscu docelowymmyproject.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