Carica i dati del canale YouTube in BigQuery

Puoi caricare i dati dal canale YouTube a BigQuery utilizzando il connettore BigQuery Data Transfer Service per il canale YouTube. Con BigQuery Data Transfer Service, puoi pianificare job di trasferimento ricorrenti che aggiungono i dati più recenti del canale YouTube a BigQuery.

Panoramica del connettore

BigQuery Data Transfer Service per il connettore del canale YouTube supporta le seguenti opzioni per il trasferimento dei dati.

Opzioni di trasferimento dei dati Assistenza
Report supportati Il connettore del canale YouTube supporta il trasferimento dei dati dai report dei canali.

Il connettore Canale YouTube supporta la versione dell'API del 18 giugno 2018.

Per informazioni su come i report sui canali YouTube vengono trasformati in tabelle e viste BigQuery, consulta Trasformazione dei report sui canali YouTube.

Frequenza di ripetizione Il connettore Canale YouTube supporta i trasferimenti di dati giornalieri.

Per impostazione predefinita, i trasferimenti di dati vengono pianificati al momento della loro creazione. Puoi configurare l'ora del trasferimento dei dati quando configuri il trasferimento dei dati.
Finestra di aggiornamento Il connettore Canale YouTube recupera i dati del canale YouTube fino a 1 giorno prima dell'esecuzione del trasferimento di dati.

Per maggiori informazioni, vedi Finestre di aggiornamento.
Disponibilità dei dati di backfill Durante ogni esecuzione del trasferimento pianificata, il connettore del canale YouTube esegue automaticamente il backfill dei report appena generati o aggiornati fino a 60 giorni prima della data di esecuzione del trasferimento. Per saperne di più, consulta Backfill automatici.

Puoi anche eseguire un backfill dei dati per recuperare manualmente i dati al di fuori del trasferimento di dati pianificato. Puoi recuperare i dati fino a quando lo consente la policy sulla conservazione dei dati dell'origine dati.

I report di YouTube contenenti dati storici sono disponibili per 30 giorni dalla data di generazione. (I report che contengono dati non storici sono disponibili per 60 giorni). Per maggiori informazioni, consulta Dati storici.

Acquisizione dei dati dai trasferimenti dei canali YouTube

Quando trasferisci i dati da un canale YouTube a BigQuery, i dati vengono caricati in tabelle BigQuery partizionate per data. La partizione della tabella in cui vengono caricati i dati corrisponde alla data dell'origine dati. Se pianifichi più trasferimenti per la stessa data, BigQuery Data Transfer Service sovrascrive la partizione per quella data specifica con i dati più recenti. Più trasferimenti nello stesso giorno o l'esecuzione di backfill non comportano la duplicazione dei dati e le partizioni per altre date non sono interessate.

Finestre di aggiornamento

Una finestra di aggiornamento è il numero di giorni in cui un trasferimento di dati recupera i dati quando si verifica un trasferimento di dati. Ad esempio, se la finestra di aggiornamento è di tre giorni e viene eseguito un trasferimento giornaliero, BigQuery Data Transfer Service recupera tutti i dati dalla tabella di origine degli ultimi tre giorni. In questo esempio, quando si verifica un trasferimento giornaliero, BigQuery Data Transfer Service crea una nuova partizione della tabella di destinazione BigQuery con una copia dei dati della tabella di origine del giorno corrente, quindi attiva automaticamente le esecuzioni di backfill per aggiornare le partizioni della tabella di destinazione BigQuery con i dati della tabella di origine dei due giorni precedenti. Le esecuzioni di backfill attivate automaticamente sovrascrivono o aggiornano in modo incrementale la tabella di destinazione BigQuery, a seconda che gli aggiornamenti incrementali siano supportati o meno nel connettore BigQuery Data Transfer Service.

Quando esegui un trasferimento di dati per la prima volta, il trasferimento recupera tutti i dati di origine disponibili nella finestra di aggiornamento. Ad esempio, se la finestra di aggiornamento è di tre giorni e esegui il trasferimento dei dati per la prima volta, BigQuery Data Transfer Service recupera tutti i dati di origine entro tre giorni.

Questo connettore esegue automaticamente il backfill dei report ritardati o aggiornati degli ultimi 60 giorni. Per recuperare altri dati al di fuori della finestra di aggiornamento, ad esempio i dati storici, o per recuperare i dati da eventuali interruzioni o lacune del trasferimento, puoi avviare o pianificare manualmente un'esecuzione di backfill.

Backfill automatici

Quando i report sui canali YouTube vengono ritardati o rigenerati per una data precedente, BigQuery Data Transfer Service esegue automaticamente il backfill dei report. Durante ogni esecuzione del trasferimento pianificato, BigQuery Data Transfer Service verifica la presenza di report che coprono date degli ultimi 60 giorni e che sono stati generati dopo l'esecuzione del trasferimento pianificato precedente. Per ogni data con report appena disponibili, BigQuery Data Transfer Service pianifica automaticamente un'esecuzione del trasferimento di backfill per caricare i dati aggiornati nella partizione della tabella corrispondente. Non è necessario attivare manualmente un backfill quando i report di YouTube sono in ritardo o vengono aggiornati entro questa finestra di 60 giorni.

Limitazioni

  • La frequenza minima con cui puoi pianificare un trasferimento di dati è una volta ogni 24 ore. Per impostazione predefinita, un trasferimento di dati inizia nel momento in cui lo crei. Tuttavia, puoi configurare l'ora di inizio del trasferimento di dati quando configuri il trasferimento.
  • BigQuery Data Transfer Service non supporta i trasferimenti di dati incrementali durante un trasferimento del proprietario dei contenuti di YouTube. Quando specifichi una data per un trasferimento di dati, vengono trasferiti tutti i dati disponibili per quella data.
  • Non puoi creare un trasferimento di dati del canale YouTube se hai eseguito l'accesso con un'identità federata. Puoi creare un trasferimento del canale YouTube solo se hai eseguito l'accesso con un Account Google.
  • Puoi trasferire i dati solo dal canale YouTube associato all'Account Google che crea il trasferimento di dati. Per saperne di più, consulta Considerazioni sull'autorizzazione per i trasferimenti dei canali YouTube.

Prima di iniziare

Prima di creare un trasferimento di dati del canale YouTube:

Autorizzazioni obbligatorie

Assicurati di aver concesso le seguenti autorizzazioni.

Ruoli BigQuery richiesti

Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati BigQuery Data Transfer Service, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati di BigQuery Data Transfer Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare un trasferimento di dati di BigQuery Data Transfer Service sono necessarie le seguenti autorizzazioni:

  • Autorizzazioni di BigQuery Data Transfer Service:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Autorizzazioni BigQuery:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più, consulta Concedi l'accesso a bigquery.admin.

Ruoli obbligatori per il canale YouTube

Devi essere il proprietario del canale YouTube.

Configurare un trasferimento del canale YouTube

Per configurare un trasferimento di dati da un canale YouTube, è necessario:

  • Suffisso tabella: un nome facile da usare per il canale fornito da te durante la configurazione del trasferimento di dati. Il suffisso viene aggiunto all'ID job per creare il nome della tabella, ad esempio reportTypeId_suffix. Il suffisso viene utilizzato per impedire che trasferimenti separati scrivano nelle stesse tabelle. Il suffisso della tabella deve essere univoco per tutti i trasferimenti che caricano dati nello stesso set di dati e deve essere breve per ridurre al minimo la lunghezza del nome della tabella risultante.

Se utilizzi l'API YouTube Reporting e hai job di generazione di report esistenti, BigQuery Data Transfer Service carica i dati dei report. Se non hai job di generazione di report esistenti, la configurazione del trasferimento attiva automaticamente i job di generazione di report di YouTube.

Per creare un trasferimento di dati del canale YouTube:

Console

  1. Vai alla pagina Trasferimenti di dati nella console Google Cloud .

    Vai a Trasferimenti di dati

  2. Fai clic su Crea trasferimento.

  3. Nella pagina Crea trasferimento:

    • Nella sezione Tipo di origine, per Origine, scegli Canale YouTube.

      Origine del trasferimento

    • Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento di dati, ad esempio My Transfer. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.

      Nome trasferimento

    • Nella sezione Opzioni di pianificazione:

      • Per Frequenza di ripetizione, scegli un'opzione per la frequenza con cui eseguire il trasferimento di dati. Se selezioni Giorni, specifica un'ora valida nel fuso orario UTC.
      • Se applicabile, seleziona Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
    • Nella sezione Impostazioni destinazione, in Set di dati di destinazione, scegli il set di dati che hai creato per archiviare i dati.

      Trasferisci set di dati

    • Nella sezione Dettagli origine dati:

      • Per Suffisso tabella, inserisci un suffisso come MT.
      • Seleziona la casella Configura job per consentire a BigQuery di gestire i job di generazione di report di YouTube per conto tuo. Se non esistono ancora report di YouTube per il tuo account, vengono creati nuovi job di generazione di report per abilitarli.

      Dettagli dell'origine del canale YouTube

    • (Facoltativo) Nella sezione Opzioni di notifica:

      • Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
      • In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione configura le notifiche di esecuzione di Pub/Sub per il trasferimento di dati.
  4. Fai clic su Salva.

bq

Inserisci il comando bq mk e fornisci il flag di creazione del trasferimento --transfer_config. Sono richiesti anche i seguenti flag:

  • --data_source
  • --target_dataset
  • --display_name
  • --params
bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

Dove:

  • project_id è l'ID progetto.
  • dataset è il set di dati di destinazione per la configurazione del trasferimento.
  • name è il nome visualizzato della configurazione del trasferimento. Il nome del trasferimento di dati può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
  • parameters contiene i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio: --params='{"param":"param_value"}'. Per i trasferimenti di dati dei canali YouTube, devi fornire il parametro table_suffix. Se vuoi, puoi impostare il parametro configure_jobs su true per consentire a BigQuery Data Transfer Service di gestire i job di generazione di report di YouTube per conto tuo. Se non esistono report di YouTube per il tuo canale, vengono creati nuovi job di generazione di report per abilitarli.
  • data_source è l'origine dati: youtube_channel.

Puoi anche aggiungere il flag --project_id per specificare un progetto specifico. Se --project_id non è specificato, viene utilizzato il progetto predefinito.

Ad esempio, il seguente comando crea un trasferimento di dati del canale YouTube denominato My Transfer utilizzando il suffisso della tabella MT e il set di dati di destinazione mydataset. Il trasferimento dei dati viene creato nel progetto predefinito:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"table_suffix":"MT","configure_jobs":"true"}' \
--data_source=youtube_channel

API

Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

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 channel transfer config.
public class CreateYoutubeChannelTransfer {

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

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

Quando salvi la configurazione del trasferimento, il connettore del canale YouTube attiva automaticamente un'esecuzione del trasferimento in base all'opzione di pianificazione. A ogni esecuzione del trasferimento, il connettore del canale YouTube trasferisce tutti i dati disponibili dal canale YouTube associato alle credenziali utente che hanno creato questo trasferimento di dati.

Per saperne di più sui dati inclusi in ogni trasferimento del canale YouTube, consulta Considerazioni sull'autorizzazione per i trasferimenti del canale YouTube.

Per eseguire manualmente un trasferimento di dati al di fuori della pianificazione regolare, puoi avviare un'esecuzione di backfill.

Esegui query sui dati

Quando vengono trasferiti a BigQuery, i tuoi dati vengono scritti in tabelle partizionate per data di acquisizione. Per saperne di più, consulta Introduzione alle tabelle partizionate.

Se esegui query direttamente sulle tabelle anziché utilizzare le visualizzazioni generate automaticamente, devi utilizzare la pseudocolonna _PARTITIONTIME nella query. Per maggiori informazioni, consulta la pagina Esecuzione di query su tabelle partizionate.

Risolvi i problemi di configurazione del trasferimento da un canale YouTube

Se riscontri problemi durante la configurazione del trasferimento dei dati, consulta Problemi di trasferimento di YouTube in Risoluzione dei problemi relativi alle configurazioni di trasferimento.