Crear tablas

Las tablas temporales y las permanentes te ayudan a simplificar las consultas para que sean más fáciles de comprender y mantener. Crean resultados parciales que puedes reutilizar y, al mismo tiempo, te dan la opción de mantener los datos temporales sin agregar, para que puedas reducir los recursos necesarios para ejecutar consultas y mejorar así el rendimiento.

Las tablas creadas están sujetas a las mismas comprobaciones de privacidad, funciones permitidas y limitaciones de la unión de campos estáticas que se aplican en todo el Centro de Datos de Anuncios. Las comprobaciones de privacidad estándar se aplican cuando los datos de la instrucció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;

No se admiten las siguientes cláusulas:

  • IF NOT EXISTS
  • PARTITION BY
  • CLUSTER BY

Tablas temporales

Las tablas temporales mejoran la legibilidad de las consultas y te permiten crear resultados parciales que no están sujetos a los requisitos de agregación o de privacidad diferencial.

Las tablas temporales:

  • Solo existen a nivel de sesión y caducan tras la ejecución de las consultas
  • Solo se pueden usar dentro de la consulta en la que se han creado
  • No están sujetas a los requisitos de agregación o de privacidad diferencial
  • Admiten el espacio de nombres opcional tmp

Para crear una tabla temporal, usa la instrucción CREATE TEMP TABLE. Este ejemplo crea una tabla temporal para almacenar los resultados de una consulta y, a continuación, usa esa tabla 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 permanentes

Si necesitas crear una tabla intermedia para usar 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 permanentes se filtran previamente, lo que significa que las comprobaciones de agregación no se aplican y duran 72 horas. Si ya existe una tabla con el nombre seleccionado, se sobreescribirá.

Las tablas permanentes:

  • Caducan al cabo de 72 horas
  • Se pueden usar fuera de la consulta que las ha creado
  • Están sujetas a los requisitos de agregación
  • Solo requieren el espacio de nombres tmp cuando se accede a la tabla desde una consulta posterior

Para crear una tabla persistente, usa la instrucción CREATE TABLE. Este ejemplo crea una tabla persistente para almacenar los resultados de una consulta y, a continuación, usa esa tabla 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 comprobaciones de privacidad

En el Centro de Datos de Anuncios también se puede usar una sintaxis SQL para crear tablas intermedias de resultados sujetas a comprobaciones de privacidad.

Para crear una tabla sujeta a comprobaciones de privacidad, añade la cláusula OPTIONS a tu consulta:

OPTIONS(privacy_checked_export=true)

Este ejemplo crea una tabla temporal a nivel de sesión y aplica las comprobaciones 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
);

Este ejemplo crea una tabla persistente, aplica las comprobaciones de privacidad y exporta la tabla 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 varias tablas de resultados visibles cuando una tabla por consulta no es suficiente. Estas tablas están sujetas a las mismas comprobaciones de privacidad que se aplican en todo el Centro de Datos de Anuncios.

La sintaxis para exportar tablas con la expresión de SQL principal es la siguiente:


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

Este ejemplo exporta una tabla al destino de BigQuery myproject.mydataset.mytable que contiene un recuento de filas para cada ID de campaña de una 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 las tablas en la misma consulta en la que se crearon. Por ejemplo, echa un vistazo a esta 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`;

Esta consulta genera dos tablas:

  • Una en myproject.mydataset.mytable, con las columnas campaign_id y ct
  • Una en la ubicación especificada en el campo Tabla de destino de los argumentos de la tarea, que incluirá la columna ct

También es posible añadir un resumen de las filas filtradas a estas tablas. Consulta información sobre los resúmenes de filas excluidas.