Crear tablas

Las tablas temporales y las persistentes te ayudan a optimizar para facilitar su comprensión y mantenimiento. Mediante la creación de resultados que puedes reutilizar, a la vez que te da la opción de mantener sin agregar, puede reducir los recursos necesarios para ejecutar consultas, lo que mejora el rendimiento.

Las tablas creadas están sujetas a la misma verificaciones de privacidad, funciones permitidas, y limitaciones de la unión de campos se aplican en todo el Centro de Datos de Anuncios. Se aplican verificaciones de privacidad estándar cuando los datos de la declaración final SELECT se envía 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;

No se admiten estas cláusulas:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tablas temporales

Las tablas temporales (o temporales) mejoran la legibilidad de las consultas y te permiten para crear resultados intermedios que no están sujetos a agregación ni diferencia y los requisitos de cumplimiento.

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 sujetas a requisitos de agregación ni de privacidad diferenciales.
  • Admite el espacio de nombres tmp opcional

Para crear una tabla temporal, usa la sentencia CREATE TEMP TABLE. En este ejemplo, crea una tabla temporal para almacenar los resultados de una consulta y, luego, 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 la de las tablas temporales, sin la cláusula TEMP. Las tablas persistentes están prefiltradas, es decir, la agregación no se aplican verificaciones y duran 72 horas. Si una tabla con el nombre seleccionado ya existe, se reemplaza.

Tablas persistentes:

  • Vence después de 72 horas
  • Se puede usar fuera de la consulta que lo creó
  • Están sujetas a requisitos de agregación.
  • Requerir el espacio de nombres tmp solo cuando se acceda a la tabla desde una consulta posterior

Para crear una tabla persistente, usa la sentencia CREATE TABLE. En este ejemplo, crea una tabla persistente para almacenar los resultados de una consulta y, luego, usa tabla persistente 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;

Aplicar verificaciones de privacidad

El Centro de Datos de Anuncios también admite una sintaxis SQL para crear tablas de resultados intermedios están sujetos a verificaciones de privacidad.

Para crear una tabla que esté 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 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 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
);

Exportar varias tablas con una sola consulta

El Centro de Datos de Anuncios admite una sintaxis de SQL flexible para exportar resultados visibles tablas en los casos en que una tabla por consulta no sea suficiente. Estas tablas son sujetos a las mismas verificaciones de privacidad se aplican en todo 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 de BigQuery myproject.mydataset.mytable, que contiene un recuento de filas para cada campaña ID de la tabla 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;

También se puede hacer referencia a tablas en la misma consulta en la que se crearon. Por ejemplo, la 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`;

genera dos tablas:

  • Uno en myproject.mydataset.mytable, con las columnas campaign_id y ct
  • Una en la ubicación especificada en el campo Tabla de destino del trabajo argumentos, con la columna ct

También es posible agregar un resumen de filas filtradas a estas tablas. Más información resúmenes de filas filtradas.