Las tablas temporales y las persistentes ayudan a optimizar las consultas, lo que facilita su comprensión y mantenimiento. Si creas resultados intermedios que puedes volver a usar y, al mismo tiempo, te das la opción de mantener los datos temporales sin agregar, puedes reducir los recursos necesarios para ejecutar consultas, lo que mejora el rendimiento.
Las tablas creadas están sujetas a las mismas verificaciones de privacidad estáticas, funciones permitidas y limitaciones de unión de campos que se aplican en todo el Centro de Datos de Anuncios. Las verificaciones de privacidad estándar se aplican cuando los datos de la declaración SELECT
final se envían a BigQuery.
Para crear tablas, sigue la sintaxis de BigQuery:
CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
[OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;
Estas cláusulas no son compatibles:
IF NOT EXISTS
PARTITION BY
CLUSTER BY
Tablas temporales
Las tablas temporales (o temp) mejoran la legibilidad de las consultas y te permiten crear resultados intermedios que no están sujetos a requisitos de agregación o diferencia.
Tablas temporales:
- Solo existen a nivel de la sesión y vencen después de la ejecución de la consulta
- Solo se puede usar dentro de la consulta en la que se creó
- No están sujetos a requisitos de privacidad diferenciales o agregados
- Admite el espacio de nombres
tmp
opcional
Para crear una tabla temporal, usa la sentencia CREATE TEMP TABLE
. En este ejemplo, se crea una tabla temporal para almacenar los resultados de una consulta y, luego, se usa la tabla temporal en una 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;
Tablas persistentes
Si necesitas crear una tabla intermedia para usarla en otras consultas, puedes crear una tabla persistente. La sintaxis es la misma que para las tablas temporales, sin la cláusula TEMP
. Las tablas persistentes están prefiltradas, lo que significa que no se aplican verificaciones de agregación y duran 72 horas. Si ya existe una tabla con el nombre seleccionado, se reemplazará.
Tablas persistentes:
- Vence después de 72 horas
- Se puede usar fuera de la consulta que la creó
- Están sujetos a requisitos de agregación
- Solicita el espacio de nombres
tmp
solo cuando accedas a la tabla desde una consulta posterior.
Para crear una tabla persistente, usa la declaración CREATE TABLE
. En este ejemplo, se crea una tabla persistente para almacenar los resultados de una consulta y, luego, se usa en una 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;
Aplica verificaciones de privacidad
El Centro de Datos de Anuncios también admite una sintaxis de SQL para crear tablas de resultados intermedias que estén sujetas a verificaciones de privacidad.
Para crear una tabla sujeta a verificaciones de privacidad, agrega la cláusula OPTIONS
a tu consulta:
OPTIONS(privacy_checked_export=true)
En este ejemplo, se crea una tabla temporal a nivel de la sesión y se aplican verificaciones de privacidad:
-- 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
);
En este ejemplo, se crea una tabla persistente, se aplican verificaciones de privacidad y se la exporta a tu proyecto de 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
);
Exporta varias tablas con una sola consulta
El Centro de Datos de Anuncios admite una sintaxis de SQL flexible para exportar tablas de resultados visibles en los casos en que una tabla por consulta no sea suficiente. Estas tablas están sujetas a las mismas verificaciones de privacidad que se aplican en el Centro de Datos de Anuncios.
La sintaxis para exportar una tabla junto con la expresión SQL principal es la siguiente:
CREATE TABLE <project_name.dataset_name.table_name>
OPTIONS(privacy_checked_export=true) AS query_statement;
Por ejemplo, para exportar una tabla al destino myproject.mydataset.mytable
de BigQuery que contiene un recuento de filas para cada ID de campaña de la tabla adh.google_ads_impressions
, haz lo siguiente:
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;
También se puede hacer referencia a las tablas en la misma consulta en la que se crearon. Por ejemplo:
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`;
genera dos tablas:
- Uno en
myproject.mydataset.mytable
, con las columnascampaign_id
yct
- Uno en la ubicación especificada en el campo Tabla de destino de los argumentos del trabajo, con la columna
ct
.
También es posible agregar un resumen de filas filtradas a estas tablas. Obtén información sobre los resúmenes de filas filtradas.