Transferts de propriétaires de contenu YouTube

Le service de transfert de données BigQuery pour le connecteur de propriétaire de contenu YouTube vous permet de planifier et de gérer automatiquement les jobs de chargement récurrents pour les rapports de propriétaire de contenu YouTube.

Rapports acceptés

Le service de transfert de données BigQuery pour les rapports de propriétaire de contenu YouTube est compatible avec les options de création de rapports suivantes :

Option de création de rapports Assistance
Version d'API compatible 18 juin 2018
Fréquence de répétition

Tous les jours, vers 14h45 UTC

Vous pouvez configurer l'heure

Intervalle d'actualisation

La veille

Non configurable

Durée maximale du remplissage

30 jours

Depuis juillet 2018, les rapports YouTube contenant des données historiques sont disponibles pendant 30 jours à compter de leur génération. Les rapports contenant des données non historiques sont disponibles pendant 60 jours après le changement des règles. Pour plus d'informations, consultez Données de l'historique dans la documentation de l'API de création de rapports YouTube.

Pour plus d'informations sur la transformation des rapports de propriétaire de contenu YouTube en tables et vues BigQuery, consultez la section Transformations des rapports de propriétaire de contenu YouTube.

Ingestion de données à partir de transferts de propriétaires de contenu YouTube

Lorsque vous transférez des données à partir de rapports de propriétaires de contenu YouTube vers BigQuery, elles sont chargées dans des tables BigQuery partitionnées par date. La partition de la table dans laquelle les données sont chargées correspond à la date de la source de données. Si vous planifiez plusieurs transferts pour la même date, le service de transfert de données BigQuery remplace la partition de cette date spécifique par les données les plus récentes. Plusieurs transferts le même jour ou l'exécution de remplissages n'entraînent pas de données en double, et les partitions des autres dates ne sont pas affectées.

Actualiser les fenêtres

Un intervalle d'actualisation correspond au nombre de jours pendant lesquels un transfert de données récupère des données lors d'un transfert de données. Par exemple, si la fenêtre d'actualisation est de trois jours et qu'un transfert quotidien a lieu, le service de transfert de données BigQuery récupère toutes les données de votre table source des trois derniers jours. Dans cet exemple, lorsqu'un transfert quotidien a lieu, le service de transfert de données BigQuery crée une partition de table de destination BigQuery avec une copie des données de votre table source du jour, puis déclenche automatiquement des exécutions de remplissage pour mettre à jour les partitions de table de destination BigQuery avec les données de votre table source des deux jours précédents. Les opérations de remplissage déclenchées automatiquement écrasent ou mettent à jour de manière incrémentielle votre table de destination BigQuery, selon que les mises à jour incrémentielles sont ou non compatibles avec le connecteur du service de transfert de données BigQuery.

Lorsque vous exécutez un transfert de données pour la première fois, celui-ci récupère toutes les données sources disponibles pendant l'intervalle d'actualisation. Par exemple, si la fenêtre d'actualisation est de trois jours et que vous exécutez le transfert de données pour la première fois, le service de transfert de données BigQuery récupère toutes les données sources dans un délai de trois jours.

Les fenêtres d'actualisation sont mappées sur le champ d'API TransferConfig.data_refresh_window_days.

Pour récupérer des données en dehors de la période d'actualisation, telles que des données historiques, ou pour récupérer des données en cas d'indisponibilité ou d'écarts de transfert, vous pouvez lancer ou planifier une exécution de remplissage.

Limites

  • La taille maximale acceptée pour un rapport est de 1 710 Go.
  • La fréquence minimale à laquelle vous pouvez planifier un transfert de données est une fois toutes les 24 heures. Par défaut, un transfert de données commence au moment où vous le créez. Toutefois, vous pouvez configurer l'heure de début du transfert lorsque vous configurez votre transfert.
  • Le service de transfert de données BigQuery n'accepte pas les transferts de données incrémentiels lors d'un transfert de propriétaire de contenu YouTube. Lorsque vous spécifiez une date pour un transfert de données, toutes les données disponibles pour cette date sont transférées.

Avant de commencer

Avant de créer un transfert de données de propriétaire de contenu YouTube :

Autorisations requises

Assurez-vous que la personne qui crée le transfert de données dispose des autorisations requises suivantes :

  • BigQuery :

    • Autorisations bigquery.transfers.update pour créer le transfert de données
    • Autorisations bigquery.datasets.get et bigquery.datasets.update sur l'ensemble de données cible

    Le rôle IAM prédéfini bigquery.admin inclut les autorisations bigquery.transfers.update, bigquery.datasets.update et bigquery.datasets.get. Pour en savoir plus sur les rôles IAM associés au service de transfert de données BigQuery, consultez la page Contrôle des accès.

  • YouTube :

    • Gestionnaire de contenu YouTube ou propriétaire du contenu YouTube.

    Un gestionnaire de contenu a le droit d'administrer du contenu YouTube pour un propriétaire de contenu. Un propriétaire de contenu est un compte central possédant au moins une chaîne YouTube, ainsi que les vidéos qui y sont associées.

    • Hide revenue data est désélectionné dans les paramètres du rapport pour les propriétaires de contenu YouTube.

    Pour autoriser le transfert des rapports liés aux revenus, le paramètre d'autorisation des rapports YouTube Hide revenue data doit être décoché pour l'utilisateur qui crée le transfert.

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

Configurer un transfert de propriétaire de contenu YouTube

Configurer un transfert de données de propriétaire de contenu YouTube implique les éléments suivants :

  • ID du propriétaire du contenu : fourni par YouTube. Lorsque vous vous connectez à YouTube en tant que propriétaire ou gestionnaire de contenu, votre identifiant apparaît dans l'URL après o=. Par exemple, si l'URL est https://studio.youtube.com/owner/AbCDE_8FghIjK?o=AbCDE_8FghIjK, l'ID du propriétaire du contenu est AbCDE_8FghIjK. Pour sélectionner un autre compte de Gestionnaire de contenu, consultez Se connecter à un compte de Gestionnaire de contenu ou Changer de chaîne YouTube. Pour en savoir plus sur la création et la gestion de votre compte de gestionnaire de contenu, consultez la section Configurer les paramètres du compte de gestionnaire de contenu.
  • Suffixe de table : nom convivial de la chaîne que vous avez fourni lors de la configuration du transfert. Le suffixe est ajouté à l'ID de tâche pour former le nom de la table, par exemple reportTypeId_suffix. Il empêche que des transferts de données distincts écrivent sur les mêmes tables. Le suffixe de table doit être unique pour tous les transferts qui chargent des données dans le même ensemble de données. Il doit par ailleurs être court de façon à réduire la longueur du nom de table obtenu.

Si vous utilisez actuellement l'API Rporting YouTube et disposez de jobs de création de rapports, le service de transfert de données BigQuery charge les données de vos rapports. Si vous n'avez pas de jobs de création de rapports existants, la configuration du transfert de données active automatiquement les jobs de création de rapports YouTube.

Pour configurer un transfert de données de propriétaire de contenu YouTube :

Console

  1. Accédez à la page "BigQuery" de la console Google Cloud. Assurez-vous d'être connecté au compte en tant que propriétaire de contenu ou gestionnaire de contenu.

    Accéder à BigQuery

  2. Cliquez sur Transferts.

  3. Cliquez sur Créer un transfert.

  4. Sur la page Créer un transfert :

    • Dans la section Source type (Type de source), choisissez YouTube Content Owner (Propriétaire de contenu YouTube) comme Source.

      Source de transfert

    • Dans la section Transfer config name (Nom de la configuration de transfert), sous Display name (Nom à afficher), saisissez un nom pour le transfert de données, tel que My Transfer. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.

      Nom du transfert

    • Dans la section Schedule options (Options de programmation) :

      • Pour le champ Repeat frequency (Fréquence de répétition), choisissez la fréquence d'exécution du transfert de données : Si vous sélectionnez Jours, indiquez une heure valide au format UTC.

        • Heures
        • Jours
        • À la demande
      • Le cas échéant, sélectionnez Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.

    • Dans la section Destination settings (Paramètres de destination), pour le champ Destination dataset (Ensemble de données de destination), choisissez l'ensemble de données que vous avez créé pour stocker vos données.

      Transférer un ensemble de données

    • Dans la section Data source details (Détails de la source de données) :

      • Pour ID de propriétaire de contenu, saisissez votre ID de propriétaire de contenu.
      • Pour Table suffix (Suffixe de table), saisissez un suffixe tel que MT.

        Informations sur le propriétaire de contenu YouTube source

    • Dans le menu Compte de service, sélectionnez un compte de service parmi ceux associés à votre projet Google Cloud. Vous pouvez associer un compte de service à votre transfert de données au lieu d'utiliser vos identifiants utilisateur. Pour en savoir plus sur l'utilisation des comptes de service avec des transferts de données, consultez la page Utiliser des comptes de service.

      • Si vous vous êtes connecté avec une identité fédérée, vous devez disposer d'un compte de service pour créer un transfert de données. Si vous vous êtes connecté avec un compte Google, le compte de service pour le transfert de données est facultatif.
      • Le compte de service doit disposer des autorisations requises.
    • (Facultatif) Dans la section Notification options (Options de notification) :

      • Cliquez sur le bouton pour activer les notifications par e-mail. Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert de données.
      • Pour le champ Select a Pub/Sub topic (Sélectionner un sujet Pub/Sub), choisissez le nom de votre sujet ou cliquez sur Create a topic (Créer un sujet). Cette option configure les notifications d'exécution Cloud Pub/Sub pour votre transfert.
  5. Cliquez sur Enregistrer.

  6. S'il s'agit de votre première connexion au compte, sélectionnez un compte, puis cliquez sur Autoriser. Sélectionnez le même compte que le propriétaire de contenu ou le gestionnaire de contenu.

bq

Saisissez la commande bq mk, puis spécifiez l'indicateur de création de transfert --transfer_config. Les paramètres suivants sont également requis :

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

Indicateurs facultatifs :

  • --service_account_name : spécifie un compte de service à utiliser pour l'authentification du transfert de propriétaire de contenu au lieu de votre compte utilisateur.
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

Où :

  • project_id est l'ID de votre projet.
  • dataset est l'ensemble de données cible de la configuration de transfert.
  • name est le nom à afficher pour la configuration de transfert. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert de données si vous devez le modifier ultérieurement.
  • parameters contient les paramètres de la configuration de transfert créée au format JSON. Exemple : --params='{"param":"param_value"}'. Pour les transferts de données de propriétaire de contenu YouTube, vous devez fournir les paramètres content_owner_id et table_suffix. Vous pouvez éventuellement définir le paramètre configure_jobs sur true pour autoriser le service de transfert de données BigQuery à gérer les jobs de création de rapports YouTube à votre place. Si des rapports YouTube n'existent pas pour votre compte, des jobs de création de rapports sont créées pour les activer.
  • data_source correspond à la source de données : youtube_content_owner.
  • service_account_name est le nom du compte de service utilisé pour authentifier le transfert de données. Le compte de service doit appartenir au même project_id que celui utilisé pour créer le transfert et doit disposer de toutes les autorisations requises.

Vous pouvez également indiquer l'option --project_id pour spécifier un projet particulier. Si --project_id n'est pas spécifié, le projet par défaut est utilisé.

Par exemple, la commande suivante crée un transfert de données de propriétaire de contenu YouTube nommé My Transfer avec l'ID de propriétaire de contenu AbCDE_8FghIjK, le suffixe de table MT et l'ensemble de données cible mydataset. Le transfert de données est créé dans le projet par défaut :

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

Utilisez la méthode projects.locations.transferConfigs.create et fournissez une instance de la ressource TransferConfig.

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

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());
    }
  }
}

Interroger les données

Lorsque les données sont transférées vers BigQuery, elles sont écrites dans des tables partitionnées avec date d'ingestion. Pour en savoir plus, consultez la page Tables partitionnées.

Si vous interrogez directement les tables au lieu d'utiliser les vues générées automatiquement, vous devez utiliser la pseudo-colonne _PARTITIONTIME dans votre requête. Pour en savoir plus, consultez la page Interroger des tables partitionnées.

Résoudre les problèmes liés à la configuration d'un transfert de propriétaire de contenu YouTube

Si vous rencontrez des problèmes lors de la configuration de votre transfert de données, reportez-vous à la section Problèmes de transfert sur YouTube à la page Dépannage des configurations de transferts.