Cargar datos de propietario del contenido de YouTube en BigQuery

Puede cargar datos de propietario del contenido de YouTube en BigQuery mediante el conector BigQuery Data Transfer Service para propietario del contenido de YouTube. Con BigQuery Data Transfer Service, puede programar tareas de transferencia periódicas que añadan sus datos más recientes de propietario del contenido de YouTube a BigQuery.

Descripción general de los conectores

BigQuery Data Transfer Service para el conector de propietario del contenido de YouTube admite las siguientes opciones para la transferencia de datos.

Opciones de transferencia de datos Asistencia
Informes admitidos El conector de propietario del contenido de YouTube admite la transferencia de datos de los siguientes informes:

El conector de propietario del contenido de YouTube es compatible con la versión de la API del 18 de junio del 2018.

Para obtener información sobre cómo se transforman los informes de propietario del contenido de YouTube en tablas y vistas de BigQuery, consulta el artículo Transformación de informes de propietarios de contenido de YouTube.

Frecuencia de repetición El conector de propietario del contenido de YouTube admite transferencias de datos diarias.

De forma predeterminada, las transferencias de datos se programan en el momento en que se crean. Puedes configurar la hora de la transferencia de datos cuando configures la transferencia de datos.
Ventana de actualización El conector Propietario del contenido de YouTube obtiene datos de Propietario del contenido de YouTube de hasta 1 día 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.

Los informes de YouTube que contienen datos históricos están disponibles durante 30 días a partir del momento en que se generan. Los informes que contienen datos no históricos están disponibles durante 60 días. Para obtener más información, consulta Datos históricos.

Ingestión de datos de transferencias de propietarios de contenido de YouTube

Cuando transfiere datos de informes de propietario del contenido de YouTube 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.

Limitaciones

  • El tamaño máximo de archivo admitido para cada informe es de 1710 GB.
  • La frecuencia mínima con la que puedes programar una transferencia de datos es de una vez cada 24 horas. De forma predeterminada, una transferencia de datos se inicia en el momento en que la crea. Sin embargo, puedes configurar la hora de inicio de la transferencia cuando configures la transferencia.
  • BigQuery Data Transfer Service no admite transferencias de datos incrementales durante una transferencia de propietario del contenido de YouTube. Cuando especifica una fecha para una transferencia de datos, se transfieren todos los datos disponibles para esa fecha.

Antes de empezar

Antes de crear una transferencia de datos de propietario del contenido de YouTube, debes hacer lo siguiente:

Permisos obligatorios

Asegúrate de que la persona que crea la transferencia de datos tenga los siguientes permisos obligatorios:

  • 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.

  • YouTube

    • Gestor de contenido de YouTube o propietario de contenido de YouTube.

    Un gestor de contenido tiene derechos para administrar contenido de YouTube en nombre de un propietario del contenido. Un propietario de contenido es una cuenta que engloba uno o varios canales de YouTube en propiedad, así como los vídeos de dichos canales.

    • La opción Hide revenue data no está marcada en la configuración de los informes de propietario del contenido de YouTube.

    Para que se transfieran los informes relacionados con los ingresos, el usuario que cree la transferencia debe desmarcar el ajuste de permiso de informes de YouTube Hide revenue data.

    youtube-content-owner-reports-uncheck-hide-revenue

Configurar una transferencia de propietario de contenido de YouTube

Para configurar una transferencia de datos de propietario del contenido de YouTube, necesitas lo siguiente:

  • ID de propietario del contenido: proporcionado por YouTube. Cuando inicias sesión en YouTube como propietario o administrador de contenido, tu ID aparece en la URL después de o=. Por ejemplo, si la URL es https://studio.youtube.com/owner/AbCDE_8FghIjK?o=AbCDE_8FghIjK, el ID del propietario del contenido es AbCDE_8FghIjK. Para seleccionar otra cuenta de Gestor de contenido, consulta el artículo Iniciar sesión en una cuenta de Gestor de contenido o Cambiar de canal de YouTube. Para obtener más información sobre cómo crear y gestionar tu cuenta del Gestor de contenido, consulta Configurar los ajustes de la cuenta del Gestor de contenido.
  • Sufijo de tabla: nombre descriptivo del canal que proporcionas al configurar la transferencia. El sufijo se añade al ID de tarea para crear el nombre de la tabla, por ejemplo, reportTypeId_suffix. El sufijo se usa para evitar que las transferencias de datos independientes escriban en las mismas tablas. El sufijo de la tabla debe ser único en todas las transferencias que carguen datos en el mismo conjunto de datos, y debe ser corto para minimizar la longitud del nombre de la tabla resultante.

Si usas la API YouTube Reporting y tienes tareas de informes, BigQuery Data Transfer Service carga los datos de los informes. Si no tienes ninguna tarea de generación de informes, al configurar la transferencia de datos se habilitarán automáticamente las tareas de generación de informes de YouTube.

Para configurar una transferencia de datos de propietario del contenido de YouTube, sigue estos pasos:

Consola

  1. Ve a la página de BigQuery en la Google Cloud consola. Asegúrate de que has iniciado sesión en la cuenta como propietario del contenido o gestor de contenido.

    Ir a la página de BigQuery

  2. Haz clic en Transferencias.

  3. Haz clic en Crear transferencia.

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

    • En la sección Tipo de fuente, en Fuente, elija Propietario del contenido de YouTube.

      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 Opciones de programación:

      • En Frecuencia de repetición, elige una opción para determinar la frecuencia con la que se realizará la transferencia de datos. Si seleccionas Días, indica una hora válida en UTC.
      • Si procede, selecciona Empezar ahora o Empezar a una hora determinada y proporciona una fecha de inicio y un tiempo de ejecución.
    • En la sección Configuración de destino, en Conjunto de datos de destino, 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:

      • En ID de propietario del contenido, introduce tu ID de propietario del contenido.
      • En Sufijo de tabla, introduce un sufijo, como MT.

      Detalles de la fuente de propietario del contenido de YouTube

    • En el menú Cuenta de servicio, selecciona una cuenta de servicio de las cuentas de servicio asociadas a tu proyecto Google Cloud . Puede asociar una cuenta de servicio a su transferencia de datos en lugar de usar sus 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 de datos. Si has iniciado sesión con una cuenta de Google, no es obligatorio tener una cuenta de servicio para la transferencia de datos. 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 de datos.
      • En Selecciona un tema de 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.
  5. Haz clic en Guardar.

  6. Si es la primera vez que inicias sesión en la cuenta, selecciona una cuenta y haz clic en Permitir. Selecciona la misma cuenta en la que eres propietario o gestor de contenido.

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 propietario del contenido 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. El nombre de la transferencia de datos puede ser cualquier valor que te permita identificar la transferencia 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 el caso de las transferencias de datos de propietarios del contenido de YouTube, debe proporcionar los parámetros content_owner_id y table_suffix. También puede definir el parámetro configure_jobs en true para permitir que BigQuery Data Transfer Service gestione las tareas de informes de YouTube por usted. Si hay informes de YouTube que no existen en tu cuenta, se crearán nuevos trabajos de informes para habilitarlos.
  • data_source es la fuente de datos: youtube_content_owner.
  • 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 propietario del contenido de YouTube llamada My Transfer con el ID de propietario del contenido AbCDE_8FghIjK, el sufijo de tabla MT 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='{"content_owner_id":"abCDE_8FghIjK","table_suffix":"MT","configure_jobs":"true"}' \
--data_source=youtube_content_owner

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 youtube content owner channel transfer config
public class CreateYoutubeContentOwnerTransfer {

  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 contentOwnerId = "MY_CONTENT_OWNER_ID";
    String tableSuffix = "_test";
    Map<String, Value> params = new HashMap<>();
    params.put("content_owner_id", Value.newBuilder().setStringValue(contentOwnerId).build());
    params.put("table_suffix", Value.newBuilder().setStringValue(tableSuffix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Youtube Owner Channel Config Name")
            .setDataSourceId("youtube_content_owner")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createYoutubeContentOwnerTransfer(projectId, transferConfig);
  }

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

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 sobre tablas con particiones.

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.

Solucionar problemas de configuración de transferencias de propietario de contenido de YouTube

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