Transferencias de Google Play

El Servicio de transferencia de datos de BigQuery para el conector de Google Play te permite y programar y administrar de manera automática los trabajos de carga recurrentes de los datos de informes de Google Play.

Informes compatibles

El Servicio de transferencia de datos de BigQuery para Google Play es compatible con las siguientes opciones de informes mensuales:

Informes detallados

Informes agregados

Para obtener información sobre cómo los informes de Google Play se transforman en tablas de BigQuery, consulta la página sobre las transformaciones de informes de Google Play.

Opción de informe Compatibilidad
Versión de la API compatible

N/A

Frecuencia de repetición

Diariamente, en el momento en que se crea por primera vez la transferencia de datos (predeterminado)

Puedes configurar la hora del día.

Período de actualización

Últimos 7 días

No configurable

Duración máxima del reabastecimiento

Sin límite

Si bien Google Play no tiene límites conocidos de retención de datos, el Servicio de transferencia de datos de BigQuery tiene límites sobre cuántos días se pueden solicitar en un solo reabastecimiento. Para obtener más información sobre los reabastecimientos, consulta la sección sobre cómo configurar un reabastecimiento.

Transferencia de datos desde transferencias de Google Play

Cuando transfieres datos de Google Play a BigQuery, estos se cargan en tablas de BigQuery 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 programas varias transferencias para la misma fecha, el Servicio de transferencia de datos de BigQuery reemplaza la partición para esa fecha específica con los datos más recientes. Las transferencias múltiples en el mismo día o los reabastecimientos en ejecución no generan datos duplicados y las particiones para otras fechas no se ven afectadas.

Períodos de actualización

El período de actualización se refiere a la cantidad de días durante los cuales una transferencia de datos recupera datos cuando se produce la transferencia. Por ejemplo, si el período de actualización es de tres días y se produce una transferencia diaria, el Servicio de transferencia de datos de BigQuery recuperará todos los datos de tu tabla de origen de los últimos tres días. En este ejemplo, cuando se produce una transferencia diaria, el Servicio de transferencia de datos de BigQuery crea una nueva partición de tabla de destino de BigQuery con una copia de los datos de la tabla de origen del día actual y, luego, activa automáticamente las ejecuciones de reabastecimiento para actualizar las particiones de la tabla de destino de BigQuery con los datos de la tabla de origen de los últimos dos días. Las ejecuciones de reabastecimiento activadas automáticamente reemplazarán o actualizarán de forma incremental tu tabla de destino de BigQuery, en base a si las actualizaciones incrementales son compatibles o no con el conector del Servicio de transferencia de datos de BigQuery.

Cuando ejecutas una transferencia de datos por primera vez, la transferencia de datos recupera todos los datos de origen disponibles dentro del período de actualización. Por ejemplo, si el período de actualización es de tres días y ejecutas la transferencia de datos por primera vez, el Servicio de transferencia de datos de BigQuery recupera todos los datos de origen en un plazo de tres días.

Las ventanas de actualización se asignan al campo de API TransferConfig.data_refresh_window_days.

Para recuperar datos fuera del período de actualización, como datos históricos, o para recuperar datos de interrupciones o brechas de transferencia, puedes iniciar o programar una ejecución de reabastecimiento.

Limitaciones

  • La frecuencia mínima que puedes programar para una transferencia de datos es una vez cada 24 horas. De forma predeterminada, una transferencia comienza en el momento en que creas la transferencia. Sin embargo, puedes configurar la hora de inicio cuando configuras la transferencia.
  • El Servicio de transferencia de datos de BigQuery no admite transferencias incrementales durante una transferencia de datos de Google Play. Cuando especificas una fecha para una transferencia de datos, se transfieren todos los datos disponibles para esa fecha.

Antes de comenzar

Antes de crear una transferencia de datos de Google Play, haz lo siguiente:

  • Verifica si completaste todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery
  • Crea un conjunto de datos de BigQuery para almacenar los datos de Google Play.
  • Encuentra tu depósito de Cloud Storage de este modo:
    1. En Google Play Console, haz clic en Descarga informes y selecciona Revisiones, Estadísticas oFinanzas.
    2. Para copiar el ID de tu bucket de Cloud Storage, haz clic en Copiar la URI de Cloud Storage. El ID del depósito comienza con gs://. Por ejemplo, para el informe de revisiones, tu ID es similar al siguiente:
      gs://pubsite_prod_rev_01234567890987654321/reviews
    3. Para la transferencia de datos de Google Play, debes copiar solo el ID único que se encuentra entre gs:// y /reviews:
      pubsite_prod_rev_01234567890987654321
  • Si quieres configurar las notificaciones de ejecución de transferencias para Pub/Sub, debes tener los permisos pubsub.topics.setIamPolicy. Los permisos de Pub/Sub no son necesarios si solo configuras las notificaciones por correo electrónico. Para obtener más información, consulta la sección sobre notificaciones de ejecución del Servicio de transferencia de datos de BigQuery.

Permisos necesarios

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

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

    La función predefinida de IAM bigquery.admin incluye los permisos bigquery.transfers.update, bigquery.datasets.update y bigquery.datasets.get. Para obtener más información sobre las funciones de IAM en el Servicio de transferencia de datos de BigQuery, consulta Control de acceso.

  • Google Play: Asegúrate de tener los siguientes permisos en Google Play:

    El equipo de Google Cloud NO tiene la capacidad de generar los archivos de Google Play o conceder acceso a ellos en tu nombre. Consulta Comunicarse con el equipo de atención de Google Play para obtener ayuda sobre cómo acceder a los archivos de Google Play.

Configura una transferencia de Google Play

Si deseas configurar una transferencia de datos de Google Play necesitas lo siguiente:

  • Depósito de Cloud Storage. Los pasos para encontrar tu depósito de Cloud Storage se describen en la sección Antes de comenzar. Tu depósito de Cloud Storage comienza con pubsite_prod_rev. Por ejemplo: pubsite_prod_rev_01234567890987654321.
  • Sufijo de tabla: Un nombre fácil de usar para todas las fuentes de datos que se cargan en el mismo conjunto de datos. El sufijo se usa para evitar que transferencias diferentes escriban en las mismas tablas. El sufijo de la tabla debe ser único en todas las transferencias que cargan datos en el mismo conjunto de datos y debe ser corto para minimizar la longitud del nombre de la tabla resultante.

Para configurar una transferencia de datos de Google Play, haz lo siguiente:

Console

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

    Ir a Transferencias de datos

  2. Haz clic en Crear transferencia.

  3. En la página Crear transferencia, sigue estos pasos:

    • En la sección Tipo de fuente (Source Type), en Fuente (Source), selecciona Google Play.

      Fuente de transferencia

    • En la sección Nombre de la configuración de transferencia (Transfer config name), en Nombre visible, ingresa el nombre de la transferencia de datos, como My Transfer. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si es necesario hacerle modificaciones más tarde.

      Nombre de la transferencia

    • En la sección Opciones de programación, haz lo siguiente:

      • En Frecuencia de repetición, elige una opción para la frecuencia con la que se ejecutará la transferencia de datos. Si seleccionas Días, proporciona una hora válida en UTC.

        • Horas
        • Días
        • A pedido
      • Si corresponde, selecciona Comenzar ahora o Comenzar a una hora determinada y proporciona una fecha de inicio y una hora de ejecución.

    • En la sección Configuración de destino (Destination settings), en Conjunto de datos de destino (Destination dataset), selecciona el conjunto de datos que creaste para almacenar tus datos.

      Conjunto de datos de la transferencia

    • En la sección Detalles de fuente de datos (Data source details):

      • En Depósito de Cloud Storage (Cloud Storage bucket), ingresa el ID de tu depósito de Cloud Storage.
      • En Sufijo de tabla (Table suffix) ingresa un sufijo como “MT” (para “My Transfer”).

        Detalles de la fuente de Google Play

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

      • Si accediste con una identidad federada, se requiere una cuenta de servicio para crear una transferencia de datos. Si accediste con una Cuenta de Google, la cuenta de servicio para la transferencia es opcional.
      • La cuenta de servicio debe tener los permisos necesarios.
    • De forma opcional, en la sección Opciones de notificación, haz lo siguiente:

      • Haz clic en el botón de activación para habilitar las notificaciones por correo electrónico. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
      • En Seleccionar un tema de Cloud Pub/Sub (Select a Cloud Pub/Sub topic), elige el nombre de tu tema o haz clic en Crear un tema (Create a topic). Con esta opción, se configuran las notificaciones de ejecución de Pub/Sub para tu transferencia.
  4. Haz clic en Guardar.

bq

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config. También se requieren las siguientes marcas:

  • --target_dataset
  • --display_name
  • --params
  • --data_source
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

Aquí:

  • project_id es el ID del proyecto. Si no se especifica --project_id, se usa el proyecto predeterminado.
  • dataset es el conjunto de datos de destino para la configuración de la transferencia.
  • name es el nombre visible de la configuración de transferencia. El nombre de la transferencia de datos puede ser cualquier valor que te permita identificarla si es necesario hacerle modificaciones más tarde.
  • parameters contiene los parámetros para la configuración de la transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}' Para Google Play, debes proporcionar los parámetros bucket y table_suffix. bucket es el depósito de Cloud Storage que contiene tus archivos de informes de Play.
  • data_source es la fuente de datos: play.
  • service_account_name es el nombre de la cuenta de servicio que se usa para autenticar tu transferencia de datos. La cuenta de servicio debe ser propiedad del mismo project_id que se usa para crear la transferencia y debe tener todos los permisos necesarios.

Por ejemplo, el siguiente comando crea una transferencia de datos de Google Play llamada My Transfer mediante el bucket de Cloud Storage pubsite_prod_rev_01234567890987654321 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":"pubsite_prod_rev_01234567890987654321","table_suffix":"MT"}' \
--data_source=play

La primera vez que ejecutes 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 del mensaje y pega el código de autenticación en la línea de comandos.

API

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

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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 play transfer config.
public class CreatePlayTransfer {

  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";
    String tableSuffix = "_test";
    Map<String, Value> params = new HashMap<>();
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("table_suffix", Value.newBuilder().setStringValue(tableSuffix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Play Config Name")
            .setDataSourceId("play")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createPlayTransfer(projectId, transferConfig);
  }

  public static void createPlayTransfer(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("play transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("play transfer was not created." + ex.toString());
    }
  }
}

Soluciona problemas de configuración de transferencia de Google Play

Si tienes problemas para configurar tu transferencia, consulta la página sobre cómo solucionar problemas de configuración de la transferencia del Servicio de transferencia de datos de BigQuery.

Consulta tus datos

Cuando tus datos se transfieren a BigQuery, se escriben en tablas particionadas por tiempo de transferencia. Para obtener más información, consulta Introducción a tablas con particiones.

Si consultas tus tablas directamente en lugar de usar las vistas generadas de manera automática, debes usar la seudocolumna _PARTITIONTIME en tu consulta. Para obtener más información, visita la página Consulta tablas particionadas.

Precios

Para obtener información sobre los precios de transferencia de datos de Google Play, consulta la página Precios.

Una vez que se transfirieron los datos a BigQuery, se aplican los precios estándar de almacenamiento y consulta de BigQuery.

¿Qué sigue?