Criar tabelas

Tabelas temporárias e tabelas persistentes ajudam você a simplificar consultas, tornando mais fácil entender e manter. Ao criar resultados intermediários que podem ser reutilizados, enquanto você tem a opção de manter dados temporários não agregados, é possível reduzir os recursos necessários para executar consultas, melhorando a performance.

As tabelas criadas estão sujeitas às mesmas verificações de privacidade estáticas, funções permitidas e limitações de agrupamento de campo aplicadas em todo o Ads Data Hub. As verificações de privacidade padrão são aplicadas quando os dados da instrução SELECT final são enviados ao BigQuery.

Para criar tabelas, siga a sintaxe do BigQuery:

CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
 [OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;

Estas cláusulas não têm suporte:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tabelas temporárias

Tabelas temporárias (ou temp) melhoram a legibilidade da consulta e permitem criar resultados intermediários que não estão sujeitos a requisitos de agregação ou diferença.

Tabelas temporárias:

  • Existem apenas no nível da sessão e expiram após a execução da consulta
  • Podem ser usadas dentro da consulta em que foram criadas
  • Não estão sujeitas a normas de privacidade diferencial e agregação
  • Dão suporte ao namespace tmp opcional

Para criar uma tabela temporária, use a instrução CREATE TEMP TABLE. Este exemplo cria uma tabela temporária para armazenar os resultados de uma consulta e a usa em uma subconsulta:

-- 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;

Tabelas persistentes

Se você precisar criar uma tabela intermediária para usar em outras consultas, poderá criar uma tabela persistente. A sintaxe é igual à das tabelas temporárias, sem a cláusula TEMP. As tabelas persistentes são pré-filtradas, ou seja, as verificações de agregação não são aplicadas e duram por 72 horas. Se já existir uma tabela com o nome selecionado, ela será substituída.

Tabelas persistentes:

  • Expiram após 72 horas
  • Podem ser usadas fora da consulta que a criou
  • Estão sujeitas a normas de agregação
  • Exigem o namespace tmp apenas quando acessam a tabela de uma consulta posterior

Para criar uma tabela persistente, use a instrução CREATE TABLE. Este exemplo cria uma tabela persistente para armazenar os resultados de uma consulta e a usa em uma consulta posterior:

Consulta 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
);

Consulta 2

-- Return creatives which had more than 100 impressions
SELECT
  creative_id,
  COUNT(*) AS imps
FROM
  tmp.creative_list
WHERE
  imps > 100;

Aplicar verificações de privacidade

O Ads Data Hub também dá suporte a uma sintaxe SQL para criar tabelas de resultados intermediárias sujeitas a verificações de privacidade.

Para criar uma tabela sujeita a essas verificações, adicione a cláusula OPTIONS à consulta:

OPTIONS(privacy_checked_export=true)

Este exemplo cria uma tabela temporária no nível da sessão e aplica verificações de privacidade:

-- 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
);

Este exemplo cria uma tabela persistente, aplica verificações de privacidade e a exporta para seu projeto do 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
);

Exportar várias tabelas usando uma única consulta

O Ads Data Hub trabalha com uma sintaxe SQL flexível para exportar tabelas de resultados visíveis quando uma tabela por consulta não é suficiente. Essas tabelas estão sujeitas às mesmas verificações de privacidade usadas no Ads Data Hub.

A sintaxe para exportar uma tabela junto com a expressão SQL principal é a seguinte:


CREATE TABLE <project_name.dataset_name.table_name>
  OPTIONS(privacy_checked_export=true) AS query_statement;

Por exemplo, se você quiser exportar uma tabela para o destino myproject.mydataset.mytable do BigQuery que apresenta uma contagem de linhas para cada ID da campanha de uma tabela 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;

As tabelas também podem ser indicadas na mesma consulta em que foram criadas. Por exemplo, a consulta:


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`;

resulta em duas tabelas:

  • Uma em myproject.mydataset.mytable, com as colunas campaign_id e ct
  • Uma no local especificado no campo Tabela de destino dos argumentos do job, com a coluna ct

Também é possível adicionar um resumo de linhas com filtro a essas tabelas. Leia mais sobre os resumos de linhas com filtros.