Cargar datos de Google Ad Manager en BigQuery

Puede cargar datos de Google Ad Manager en BigQuery mediante el conector BigQuery Data Transfer Service para Google Ad Manager. Con BigQuery Data Transfer Service, puedes programar tareas de transferencia periódicas que añadan tus datos más recientes de Google Ad Manager a BigQuery.

Descripción general de los conectores

BigQuery Data Transfer Service para el conector de Google Ad Manager admite las siguientes opciones para la transferencia de datos.

Opciones de transferencia de datos Asistencia
Informes admitidos El conector de Google Ad Manager admite la transferencia de datos de los siguientes informes:

Para obtener información sobre cómo se transforman los informes de Google Ad Manager en tablas y vistas de BigQuery, consulte Transformación de informes de Google Ad Manager.

Frecuencia de repetición El conector de Google Ad Manager admite transferencias de datos cada 4 horas. De forma predeterminada, las transferencias de datos de Google Ad Manager se repiten cada 8 horas.

Puedes configurar la hora de la transferencia de datos cuando configures la transferencia de datos.
Ventana de actualización El conector de Google Ad Manager obtiene datos de Google Ad Manager de hasta 2 días en el momento en que se ejecuta la transferencia de datos.

Para obtener más información, consulta Actualizar ventanas.
Disponibilidad de los datos de reposición Ejecuta un rellenado automático de datos para recuperar datos que no estén incluidos en la transferencia de datos programada. Puedes recuperar datos de hace tanto tiempo como permita la política de conservación de datos de tu fuente de datos.

Para obtener información sobre la política de conservación de datos de Google Ad Manager, consulte el artículo Informes de Data Transfer de Google Ad Manager.

Ingestión de datos de transferencias de Google Ad Manager

Cuando transfieres datos de Google Ad Manager a BigQuery, los datos se cargan en tablas de BigQuery que están particionadas por fecha. La partición de la tabla en la que se cargan los datos corresponde a la fecha de la fuente de datos. Si programa varias transferencias para la misma fecha, BigQuery Data Transfer Service sobrescribirá la partición de esa fecha con los datos más recientes. Si se realizan varias transferencias el mismo día o se ejecutan rellenados, no se duplicarán los datos y no se verán afectadas las particiones de otras fechas.

Actualizar ventanas

Una ventana de actualización es el número de días durante los que una transferencia de datos recupera datos cuando se produce una transferencia de datos. Por ejemplo, si la ventana de actualización es de tres días y se produce una transferencia diaria, BigQuery Data Transfer Service recupera todos los datos de la tabla de origen de los últimos tres días. En este ejemplo, cuando se produce una transferencia diaria, BigQuery Data Transfer Service crea una partición de tabla de destino de BigQuery con una copia de los datos de la tabla de origen del día actual y, a continuación, activa automáticamente ejecuciones de relleno para actualizar las particiones de tabla de destino de BigQuery con los datos de la tabla de origen de los dos días anteriores. Las ejecuciones de relleno automático sobrescribirán o actualizarán de forma incremental tu tabla de destino de BigQuery, en función de si el conector de BigQuery Data Transfer Service admite o no las actualizaciones incrementales.

Cuando ejecutas una transferencia de datos por primera vez, esta recupera todos los datos de origen disponibles en la ventana de actualización. Por ejemplo, si la ventana de actualización es de tres días y ejecutas la transferencia de datos por primera vez, BigQuery Data Transfer Service recuperará todos los datos de origen en un plazo de tres días.

Los periodos de actualización se asignan al campo de la API TransferConfig.data_refresh_window_days.

Para recuperar datos que no estén dentro del periodo de actualización (por ejemplo, datos históricos) o para recuperar datos de interrupciones o brechas en la transferencia, puedes iniciar o programar una reposición.

Actualizaciones de los archivos de Data Transfer

Las tablas que se crean a partir de archivos de transferencia de datos de Google Ad Manager (Google Ad Manager DT) se pueden actualizar de forma incremental. Google Ad Manager añade los archivos de transferencia de datos de Google Ad Manager al segmento de Cloud Storage. A continuación, una ejecución de transferencia carga de forma incremental los nuevos archivos de DT de Google Ad Manager desde el contenedor de Cloud Storage a la tabla de BigQuery sin volver a cargar los archivos que ya se hayan transferido a la tabla de BigQuery.

Por ejemplo, Google Ad Manager añade file1 al segmento a las 01:00 y file2 a las 02:00. Una ejecución de transferencia empieza a las 03:30 y carga file1 y file2 en BigQuery. A continuación, Google Ad Manager añade file3 a las 5:00 y file4 a las 6:00. Se inicia una segunda transferencia a las 7:30 y se añaden file3 y file4 a BigQuery, en lugar de sobrescribir la tabla cargando los cuatro archivos.

Actualizaciones de las tablas de coincidencias

Las tablas de coincidencias proporcionan un mecanismo de búsqueda para los valores sin procesar contenidos en los archivos de Data Transfer. Para ver una lista de tablas de coincidencias, consulte Transformación de informes de Google Ad Manager. Las distintas tablas de coincidencias se actualizan con diferentes métodos de ingestión. Las tablas de coincidencias y sus métodos de ingesta se indican en la siguiente tabla:

Método de ingestión Descripción Tabla de coincidencias
Actualización incremental Las actualizaciones incrementales se añaden en cada ejecución. Por ejemplo, la primera ejecución de transferencia del día carga todos los datos modificados antes de la ejecución de la transferencia, mientras que la segunda ejecución de transferencia del mismo día carga los datos modificados después de la ejecución anterior y antes de la actual. Company, Order, Placement, LineItem y AdUnit
Actualización de toda la tabla La opción de actualización de toda la tabla carga la tabla completa una vez al día. Por ejemplo, la primera ejecución de transferencia del día carga todos los datos disponibles de una tabla. Si se ejecuta una segunda transferencia el mismo día, no se cargarán estas tablas. AdCategory, AudienceSegmentCategory, BandwidthGroup, Browser, BrowserLanguage, DeviceCapability, DeviceCategory, DeviceManufacturer, GeoTarget, MobileCarrier, MobileDevice, MobileDeviceSubmodel, OperatingSystem, OperatingSystemVersion, ThirdPartyCompany, TimeZone, User, ProgrammaticBuyer
Sobrescribir toda la tabla Toda la tabla se sobrescribe con cada ejecución de la transferencia. AudienceSegment

Antes de empezar

Antes de crear una transferencia de datos de Google Ad Manager, debes hacer lo siguiente:

  • Comprueba que has completado todas las acciones necesarias para habilitar BigQuery Data Transfer Service.
  • Crea un conjunto de datos de BigQuery para almacenar los datos de Google Ad Manager.
  • Asegúrate de que tu organización tenga acceso a los archivos de Data Transfer de Google Ad Manager (DT de Google Ad Manager). El equipo de Google Ad Manager entrega estos archivos en un segmento de Cloud Storage. Para obtener acceso a los archivos de Data Transfer de Google Ad Manager, consulte el artículo Informes de Data Transfer de Ad Manager. Es posible que el equipo de Google Ad Manager aplique cargos adicionales.

    Una vez completado este paso, recibirás un segmento de Cloud Storage similar al siguiente:

        gdfp-12345678
      

    El equipo Google Cloud NO puede generar ni conceder acceso a archivos DT de Google Ad Manager en tu nombre. Ponte en contacto con el equipo de Asistencia de Google Ad Manager para acceder a los archivos DT de Google Ad Manager.

  • Habilita el acceso a la API en tu red de Google Ad Manager.
  • Si quieres configurar notificaciones de transferencia de datos, debes tener permisos de pubsub.topics.setIamPolicy para Pub/Sub. No es necesario tener permisos de Pub/Sub si solo configura las notificaciones por correo electrónico. Para obtener más información, consulta el artículo sobre las notificaciones de ejecución de BigQuery Data Transfer Service.

Permisos obligatorios

  • BigQuery asegúrate de que la persona que crea la transferencia de datos tenga los siguientes permisos en BigQuery:

    • Permisos de bigquery.transfers.update para crear la transferencia de datos
    • Permisos bigquery.datasets.get y bigquery.datasets.update en el conjunto de datos de destino

    El rol predefinido de gestión de identidades y accesos bigquery.admin incluye los permisos bigquery.transfers.update, bigquery.datasets.update y bigquery.datasets.get. Para obtener más información sobre los roles de gestión de identidades y accesos en BigQuery Data Transfer Service, consulta Control de acceso.

  • Google Ad Manager: acceso de lectura a los archivos de Data Transfer de Google Ad Manager almacenados en Cloud Storage. El equipo de Google Ad Manager gestiona los permisos de los archivos DT de Google Ad Manager. Además de los archivos de Data Transfer de Google Ad Manager, la persona que cree la transferencia de datos debe añadirse a la red de Google Ad Manager con acceso de lectura a todas las entidades necesarias para crear las distintas tablas de coincidencias (línea de pedido, pedido, bloque de anuncios, etc.). Para ello, debe añadir al usuario de Ad Manager que autenticó la transferencia de datos al equipo Todas las entidades de Ad Manager.

Configurar una transferencia de Google Ad Manager

Para configurar una transferencia de datos de BigQuery para Google Ad Manager, se necesita lo siguiente:

  • Segmento de Cloud Storage: el URI del segmento de Cloud Storage de tus archivos de datos de transferencia de Google Ad Manager, tal como se describe en la sección Antes de empezar. El nombre del segmento debe tener el siguiente formato:

    gdfp-12345678
  • Código de red: encontrará el código de red de Google Ad Manager en la URL cuando haya iniciado sesión en su red. Por ejemplo, en la URL https://admanager.google.com/2032576#delivery, 2032576 es su código de red. Para obtener más información, consulte el artículo Empezar a usar Google Ad Manager.

Para crear una transferencia de datos de BigQuery Data Transfer Service para Google Ad Manager, siga estos pasos:

Consola

  1. Ve a la página Transferencias de datos de la Google Cloud consola.

    Ir a Transferencias de datos

  2. Haz clic en Crear una transferencia.

  3. En la página Crear transferencia, haz lo siguiente:

    • En la sección Tipo de fuente, en Fuente, elija Google Ad Manager (antes DFP).

    Fuente de transferencia

    • En la sección Nombre de la configuración de transferencia, en Nombre visible, indica un nombre para la transferencia de datos; por ejemplo, My Transfer. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si necesitas modificarla más adelante.

    Nombre de transferencia

    • En la sección Configuración de destino, en Conjunto de datos, elija el conjunto de datos que haya creado para almacenar sus datos.

    Transferir conjunto de datos

    • En la sección Detalles de la fuente de datos, haz lo siguiente:
      • En Segmento de Cloud Storage, introduce el nombre del segmento de Cloud Storage que almacena los archivos de transferencia de datos. Cuando introduzcas el nombre del segmento, no incluyas gs://.
      • En Código de red, introduce tu código de red.

    Detalles de la fuente de Google Ad Manager

    • En el menú Cuenta de servicio, selecciona una cuenta de servicio de las cuentas de servicio asociadas a tu proyecto Google Cloud . Puedes asociar una cuenta de servicio a tu transferencia en lugar de usar tus credenciales de usuario. Para obtener más información sobre cómo usar cuentas de servicio con transferencias de datos, consulta el artículo Usar cuentas de servicio.

      Si has iniciado sesión con una identidad federada, se necesita una cuenta de servicio para crear una transferencia. Si has iniciado sesión con una cuenta de Google, no es obligatorio tener una cuenta de servicio para la transferencia. La cuenta de servicio debe tener los permisos necesarios.

    • (Opcional) En la sección Opciones de notificación:

      • Haz clic en el interruptor para habilitar las notificaciones por correo electrónico. Si habilitas esta opción, el administrador de las transferencias recibirá una notificación por correo cuando falle una ejecución de transferencia.
      • Haz clic en el interruptor para habilitar las notificaciones de Pub/Sub sobre la transferencia. En Selecciona un tema de Cloud Pub/Sub, elige el nombre del tema o haz clic en Crear un tema. Esta opción configura las notificaciones de Pub/Sub sobre la transferencia.
  4. Haz clic en Guardar.

bq

Introduce el comando bq mk y proporciona la marca de creación de transferencia — --transfer_config. También se necesitan las siguientes marcas:

  • --data_source
  • --target_dataset
  • --display_name
  • --params

Marcas posibles

  • --service_account_name: especifica una cuenta de servicio que se usará para la autenticación de la transferencia de Google Ad Manager en lugar de tu cuenta de usuario.
bq mk --transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source \
--service_account_name=service_account_name

Donde:

  • project_id es el ID del proyecto.
  • dataset es el conjunto de datos de destino de la configuración de transferencia.
  • name es el nombre visible de la configuración de transferencia de datos. El nombre de la transferencia puede ser cualquier valor que te permita identificar la transferencia de datos si necesitas modificarla más adelante.
  • parameters contiene los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}'. En Google Ad Manager, debe proporcionar los parámetros bucket y network_code.
    • bucket: el segmento de Cloud Storage que contiene los archivos DT de Google Ad Manager.
    • network_code: código de red
    • load_match_tables: indica si se deben cargar las tablas de coincidencias. El valor predeterminado es True.
  • data_source es la fuente de datos: dfp_dt (Google Ad Manager).
  • service_account_name es el nombre de la cuenta de servicio que se usa para autenticar la transferencia de datos. La cuenta de servicio debe ser propiedad del mismo project_id que se usó para crear la transferencia y debe tener todos los permisos necesarios.

También puedes usar la marca --project_id para especificar un proyecto concreto. Si no se especifica --project_id, se usa el proyecto predeterminado.

Por ejemplo, el siguiente comando crea una transferencia de datos de Google Ad Manager llamada My Transfer con el código de red 12345678, el segmento de Cloud Storage gdfp-12345678 y el conjunto de datos de destino mydataset. La transferencia de datos se crea en el proyecto predeterminado:

bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "gdfp-12345678","network_code": "12345678"}' \
--data_source=dfp_dt

Después de ejecutar el comando, recibirás un mensaje como el siguiente:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Sigue las instrucciones y pega el código de autenticación en la línea de comandos.

API

Usa el método projects.locations.transferConfigs.create y proporciona una instancia del recurso TransferConfig.

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a ad manager(formerly DFP) transfer config
public class CreateAdManagerTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String bucket = "gs://cloud-sample-data";
    // the network_code can only be digits with length 1 to 15
    String networkCode = "12345678";
    Map<String, Value> params = new HashMap<>();
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("network_code", Value.newBuilder().setStringValue(networkCode).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Ad Manager Config Name")
            .setDataSourceId("dfp_dt")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createAdManagerTransfer(projectId, transferConfig);
  }

  public static void createAdManagerTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Ad manager transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Ad manager transfer was not created." + ex.toString());
    }
  }
}

Solucionar problemas de configuración de transferencias de Google Ad Manager

Si tienes problemas para configurar la transferencia de datos, consulta la sección Problemas con la transferencia de Google Ad Manager del artículo Solucionar problemas con las configuraciones de transferencia.

Consultar tus datos

Cuando tus datos se transfieren a BigQuery, se escriben en tablas con particiones por hora de ingestión. Para obtener más información, consulta el artículo Introducción a las tablas particionadas.

Si consultas tus tablas directamente en lugar de usar las vistas generadas automáticamente, debes usar la pseudocolumna _PARTITIONTIME en tu consulta. Para obtener más información, consulta Consultar tablas con particiones.

Consultas de ejemplo

Puede usar las siguientes consultas de ejemplo de Google Ad Manager para analizar los datos transferidos. También puedes usar las consultas en una herramienta de visualización, como Looker Studio. Estas consultas se proporcionan para ayudarte a empezar a consultar tus datos de Google Ad Manager con BigQuery. Si tienes más preguntas sobre lo que puedes hacer con estos informes, ponte en contacto con tu representante técnico de Google Ad Manager.

En cada una de las siguientes consultas, sustituye las variables, como dataset, por tus valores. Por ejemplo, sustituye network_code por tu código de red de Google Ad Manager.

Impresiones y usuarios únicos por ciudad

La siguiente consulta de ejemplo de SQL analiza el número de impresiones y usuarios únicos por ciudad durante los últimos 30 días.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  City,
  _DATA_DATE AS Date,
  count(*) AS imps,
  count(distinct UserId) AS uniq_users
FROM `dataset.NetworkImpressions_network_code`
WHERE
  _DATA_DATE BETWEEN start_date AND end_date
GROUP BY City, Date

Impresiones y usuarios únicos por tipo de línea de pedido

La siguiente consulta SQL de ejemplo analiza el número de impresiones y usuarios únicos por tipo de línea de pedido durante los últimos 30 días.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  MT.LineItemType AS LineItemType,
  DT._DATA_DATE AS Date,
  count(*) AS imps,
  count(distinct UserId) AS uniq_users
FROM `dataset.NetworkImpressions_network_code` AS DT
LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT
ON
  DT.LineItemId = MT.Id
WHERE
  DT._DATA_DATE BETWEEN start_date AND end_date
GROUP BY LineItemType, Date
ORDER BY Date desc, imps desc

Impresiones por bloque de anuncios

La siguiente consulta SQL de ejemplo analiza el número de impresiones por unidad publicitaria durante los últimos 30 días.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  MT.AdUnitCode AS AdUnitCode,
  DT.DATA_DATE AS Date,
  count(*) AS imps
FROM `dataset.NetworkImpressions_network_code` AS DT
LEFT JOIN `dataset.MatchTableAdUnit_network_code` AS MT
ON
  DT.AdUnitId = MT.Id
WHERE
  DT._DATA_DATE BETWEEN start_date AND end_date
GROUP BY AdUnitCode, Date
ORDER BY Date desc, imps desc

Impresiones por línea de pedido

La siguiente consulta SQL de ejemplo analiza el número de impresiones por línea de pedido de los últimos 30 días.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  MT.Name AS LineItemName,
  DT._DATA_DATE AS Date,
  count(*) AS imps
FROM `dataset.NetworkImpressions_network_code` AS DT
LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT
ON
  DT.LineItemId = MT.Id
WHERE
  DT._DATA_DATE BETWEEN start_date AND end_date
GROUP BY LineItemName, Date
ORDER BY Date desc, imps desc