Создать таблицы

Временные и постоянные таблицы упрощают управление запросами и их анализ. Вы можете сохранять промежуточные результаты для повторного использования и оставлять временные данные неагрегированными. Это позволяет экономить ресурсы при выполнении запросов и повыщать общую эффективность.

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

К этим таблицам также можно добавить сводку по отфильтрованным строкам.