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 mogą zawierać dane niezagregowane.
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;
- Może przechowywać dane niezagregowane, które nie zostały jeszcze sprawdzone pod kątem ochrony prywatności.
- są przywoływane po nazwie bez wymaganej przestrzeni nazw,
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
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
. Te tabele są dostępne przez 72 godziny. Jeśli istnieje już tabela o wybranej nazwie, zostanie ona zastąpiona.
Tabele trwałe mogą przechowywać niezagregowane dane, ale ich zawartość jest widoczna tylko w wynikach zapytań, które przeszły kontrolę prywatności.
Tabele trwałe:
- tracą ważność po 72 godzinach;
- mogą być używane poza zapytaniem, w którym je utworzono;
- Może przechowywać dane niezagregowane, które nie zostały jeszcze sprawdzone pod kątem ochrony prywatności.
- Odwołania do nich są tworzone za pomocą przestrzeni nazw
tmp
, ale w tym samym zapytaniu można się do nich odwoływać także za pomocą nazwy.
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
);
-- Return the total count of impressions in the table
SELECT
COUNT(*) AS imps
FROM
tmp.creative_list -- Alternative: creative_list
Zapytanie 2
-- Return creatives which had more than 100 impressions
SELECT
creative_id,
COUNT(*) AS imps
FROM
tmp.creative_list
WHERE
imps > 100
GROUP BY
creative_id;
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