Временные и постоянные таблицы упрощают управление запросами и их анализ. Вы можете сохранять промежуточные результаты для повторного использования и оставлять временные данные неагрегированными. Это позволяет экономить ресурсы при выполнении запросов и повыщать общую эффективность.
К создаваемым таблицам применяются те же статические проверки конфиденциальности, ограничения на допустимые функции и ограничения на объединение полей, что и к остальным таблицам в 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
Временные таблицы
Благодаря использованию временных таблиц запросы становятся более удобочитаемыми, а промежуточные результаты не проходят проверки на агрегирование и различия.
Временные таблицы:
- существуют только на уровне сеанса и после выполнения запроса автоматически удаляются;
- могут использоваться только в пределах запроса, в котором созданы;
- не регулируются требованиями к агрегированию и дифференциальной приватности;
- поддерживают необязательное пространство имен
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
.
К этим таблицам также можно добавить сводку по отфильтрованным строкам.