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 colunascampaign_id
ect
- 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.