Временные и постоянные таблицы помогают оптимизировать запросы, упрощая их понимание и обслуживание. Создавая промежуточные результаты, которые можно использовать повторно, и одновременно предоставляя возможность сохранять временные данные неагрегированными, вы можете сократить ресурсы, необходимые для выполнения запросов, повысив производительность.
Созданные таблицы подлежат тем же статическим проверкам конфиденциальности , разрешенным функциям и ограничениям на объединение полей , которые применяются во всем Ads Data Hub. Стандартные проверки конфиденциальности применяются, когда данные из окончательного оператора SELECT
выводятся в BigQuery.
Чтобы создавать таблицы, следуйте синтаксису BigQuery:
CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
[OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;
Эти предложения не поддерживаются:
-
IF NOT EXISTS
-
PARTITION BY
-
CLUSTER BY
Временные таблицы
Временные таблицы (или temp ) улучшают читаемость запросов и позволяют создавать промежуточные результаты, на которые не распространяются требования агрегирования или различия.
Таблицы температур:
- Существуют только на уровне сеанса и истекают после выполнения запроса.
- Может использоваться только внутри запроса, в котором он был создан.
- Не подлежат агрегированию или дифференциальным требованиям конфиденциальности.
- Поддержка дополнительного пространства имен
tmp
.
Чтобы создать временную таблицу, используйте оператор CREATE TEMP TABLE
. В этом примере создается временная таблица для хранения результатов запроса, а затем используется временная таблица в подзапросе:
-- 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;
Постоянные таблицы
Если вам нужно создать промежуточную таблицу для использования в других запросах, вы можете создать постоянную таблицу . Синтаксис тот же, что и для временных таблиц, без предложения TEMP
. Постоянные таблицы предварительно фильтруются, то есть проверки агрегирования не применяются, и действуют в течение 72 часов. Если таблица с выбранным именем уже существует, она перезаписывается.
Постоянные таблицы:
- Срок действия истекает через 72 часа
- Может использоваться вне запроса, который его создал.
- Подпадают под требования агрегирования
- Требовать пространство имен
tmp
только при доступе к таблице из более позднего запроса.
Чтобы создать постоянную таблицу, используйте оператор CREATE TABLE
. В этом примере создается постоянная таблица для хранения результатов запроса, а затем используется постоянная таблица в более позднем запросе:
Запрос 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
);
Запрос 2
-- Return creatives which had more than 100 impressions
SELECT
creative_id,
COUNT(*) AS imps
FROM
tmp.creative_list
WHERE
imps > 100;
Применить проверки конфиденциальности
Ads Data Hub также поддерживает синтаксис SQL для создания таблиц промежуточных результатов, которые подлежат проверке конфиденциальности.
Чтобы создать таблицу, которая подлежит проверке конфиденциальности, добавьте в запрос предложение OPTIONS
:
OPTIONS(privacy_checked_export=true)
В этом примере создается временная таблица уровня сеанса и применяются проверки конфиденциальности:
-- 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
);
В этом примере создается постоянная таблица, применяются проверки конфиденциальности и экспортируется ее в проект 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
);
Экспорт нескольких таблиц с помощью одного запроса
Ads Data Hub поддерживает гибкий синтаксис SQL для экспорта видимых таблиц результатов в тех случаях, когда одной таблицы на запрос недостаточно. Эти таблицы подлежат тем же проверкам конфиденциальности , что и в Ads Data Hub.
Синтаксис экспорта таблицы вместе с основным выражением SQL:
CREATE TABLE <project_name.dataset_name.table_name>
OPTIONS(privacy_checked_export=true) AS query_statement;
Например, чтобы экспортировать таблицу в целевой ресурс BigQuery myproject.mydataset.mytable
, которая содержит количество строк для каждого идентификатора кампании из таблицы 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;
На таблицы также можно ссылаться в том же запросе, в котором они были созданы. Например, запрос:
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`;
выводит две таблицы:
- Один по адресу
myproject.mydataset.mytable
со столбцамиcampaign_id
иct
- Один в месте, указанном в поле «Таблица назначения» аргументов задания, со столбцом
ct
В эти таблицы также можно добавить сводку отфильтрованных строк. Прочтите о сводках отфильтрованных строк .