Transferências do proprietário do conteúdo do YouTube

Com o conector do serviço de transferência de dados do BigQuery para proprietários de conteúdo do YouTube, é possível programar e gerenciar automaticamente jobs de carregamento recorrentes para relatórios de proprietários de conteúdo do YouTube.

Relatórios compatíveis

O serviço de transferência de dados do BigQuery para relatórios do proprietário do conteúdo do YouTube é compatível atualmente com as opções de relatório a seguir:

Opção de relatório Suporte
Versão da API compatível 18 de junho de 2018
Repetir frequência

Diariamente, por volta das 14:45 UTC

Você pode configurar a hora do dia

Atualizar janela

Último dia

Não configurável.

Duração máxima do preenchimento

30 dias

Desde julho de 2018, os relatórios do YouTube que contêm dados históricos ficam disponíveis por 30 dias a partir do momento em que são gerados. Os relatórios que contêm dados não históricos ficam disponíveis por 60 dias após a alteração da política. Para mais informações, consulte Dados históricos na documentação da API Reporting do YouTube.

Para informações sobre como os relatórios do proprietário do conteúdo do YouTube são transformados em tabelas e visualizações do BigQuery, consulte Transformações de relatórios do proprietário do conteúdo do YouTube.

Ingestão de dados das transferências de proprietários do conteúdo do YouTube

Ao transferir dados dos relatórios do proprietário do conteúdo do YouTube para o BigQuery, eles são carregados em tabelas do BigQuery que são particionadas por data. A partição da tabela em que os dados são carregados corresponde à data da fonte de dados. Se você programar várias transferências para a mesma data, o serviço de transferência de dados do BigQuery substituirá a partição dessa data específica pelos dados mais recentes. Várias transferências no mesmo dia ou preenchimentos não resultam em dados duplicados, e as partições de outras datas não são afetadas.

Atualizar janelas

Uma janela de atualização é o número de dias que uma transferência de dados recupera dados quando ocorre uma transferência de dados. Por exemplo, se a janela de atualização for de três dias e uma transferência diária ocorrer, o serviço de transferência de dados do BigQuery vai extrair todos os dados da tabela de origem dos últimos três dias. Nesse exemplo, quando uma transferência diária ocorre, o serviço de transferência de dados do BigQuery cria uma nova partição de tabela de destino do BigQuery com uma cópia dos dados da tabela de origem do dia atual e, em seguida, aciona automaticamente as execuções de preenchimento para atualizar as partições de tabela de destino do BigQuery com os dados da tabela de origem dos últimos dois dias. As execuções de preenchimento automático acionadas automaticamente vão substituir ou atualizar de forma incremental a tabela de destino do BigQuery, dependendo de se as atualizações incrementais são aceitas ou não pelo conector do serviço de transferência de dados do BigQuery.

Quando você executa uma transferência de dados pela primeira vez, ela recupera todos os dados de origem disponíveis na janela de atualização. Por exemplo, se a janela de atualização for de três dias e você executar a transferência de dados pela primeira vez, o serviço de transferência de dados do BigQuery vai recuperar todos os dados de origem em três dias.

As janelas de atualização são mapeadas para o campo da APITransferConfig.data_refresh_window_days.

Para recuperar dados fora da janela de atualização, como dados históricos, ou para recuperar dados de interrupções ou lacunas de transferência, inicie ou programe uma execução de preenchimento.

Limitações

  • O tamanho máximo permitido do arquivo para cada relatório é de 1.710 GB.
  • A frequência mínima para programar uma transferência de dados é de uma vez a cada 24 horas. Por padrão, uma transferência de dados começa no momento em que você cria a transferência de dados. No entanto, é possível configurar o horário de início da transferência ao configurar sua transferência.
  • O serviço de transferência de dados do BigQuery não é compatível com transferências de dados incrementais durante uma transferência do proprietário do conteúdo do YouTube. Ao especificar uma data para uma transferência de dados, todos os dados disponíveis para essa data são transferidos.

Antes de começar

Antes de criar uma transferência de dados do proprietário do conteúdo do YouTube:

Permissões necessárias

Verifique se a pessoa que está criando a transferência de dados tem as seguintes permissões necessárias:

  • BigQuery:

    • Permissões bigquery.transfers.update para criar a transferência de dados
    • Permissões bigquery.datasets.get e bigquery.datasets.update no conjunto de dados de destino

    O papel predefinido bigquery.admin do IAM inclui permissões bigquery.transfers.update, bigquery.datasets.update e bigquery.datasets.get. Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte o controle de acesso.

  • YouTube:

    • Gerente de conteúdo do YouTube ou proprietário de conteúdo do YouTube

    Um gerente de conteúdo tem direitos de administrar conteúdo do YouTube para o proprietário. Um proprietário do conteúdo é uma conta abrangente que tem um ou mais canais do YouTube e vídeos existentes neles.

    • Hide revenue data está desmarcado nas configurações do relatório de Proprietário do conteúdo do YouTube.

    Para que os relatórios relacionados à receita sejam transferidos, o YouTube informa que a configuração de permissão Hide revenue data deve ser desmarcada para o usuário que está criando a transferência.

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

Configurar uma transferência do proprietário do conteúdo do YouTube

Configurar uma transferência de dados do proprietário do conteúdo do YouTube exige um:

  • ID do proprietário do conteúdo: fornecido pelo YouTube. Quando você faz login no YouTube como um Proprietário ou Gerenciador de conteúdo, seu ID aparece no URL após o=. Por exemplo, se o URL for https://studio.youtube.com/owner/AbCDE_8FghIjK?o=AbCDE_8FghIjK, o ID do proprietário do conteúdo é AbCDE_8FghIjK. Para selecionar uma conta diferente do Gerenciador de conteúdo, consulte Fazer login em uma conta do Gerenciador de conteúdo ou Seletor de canais do YouTube. Para mais informações sobre como criar e gerenciar a conta do Gerenciador de conteúdo, consulte Definir as configurações da conta do Gerenciador de conteúdo.
  • Sufixo de tabela: um nome fácil de usar para o canal, que você especifica ao configurar a transferência. O sufixo é anexado ao ID do job para criar o nome da tabela, por exemplo, reportTypeId_suffix. O sufixo é usado para evitar que transferências de dados separadas gravem nas mesmas tabelas. O sufixo da tabela precisa ser único em todas as transferências que carregam dados para o mesmo conjunto de dados. Além disso, o sufixo precisa ser curto para reduzir o comprimento do nome de tabela resultante.

Se você usa a API Reporting do YouTube no momento e tem jobs de relatórios atuais, o serviço de transferência de dados do BigQuery carregará os dados de relatório. Se você não tiver jobs de relatório, configurar a transferência de dados vai ativar automaticamente os jobs de relatório do YouTube.

Para configurar uma transferência de dados do proprietário do conteúdo do YouTube:

Console

  1. Acesse a página do BigQuery no console do Google Cloud. Faça login na conta como proprietário ou gerenciador de conteúdo.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Clique em Criar transferência.

  4. Na página Criar transferência, siga estas instruções:

    • Na seção Tipo de origem, em Origem, escolha Proprietário de conteúdo do YouTube.

      Origem da transferência

    • No campo Nome de exibição da seção Transferir nome da configuração, insira um nome para a transferência de dados, como My Transfer. O nome da transferência pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.

      Nome da transferência

    • Na seção Opções de programação, faça o seguinte:

      • Em Frequência de repetição, escolha uma opção para a frequência de execução da transferência de dados: Se você selecionar Dias, forneça um horário válido em UTC.

        • Horas
        • Dias
        • Sob demanda
      • Se aplicável, selecione Começar agora ou Começar no horário definido e forneça uma data de início e um horário de execução.

    • Na seção Configurações de destino, em Conjunto de dados de destino, escolha o conjunto criado para armazenar seus dados.

      Conjunto de dados da transferência

    • Na seção Detalhes da origem de dados:

      • Insira o ID respectivo em ID de proprietário do conteúdo.
      • Em Sufixo de tabela, insira um sufixo como MT.

        Detalhes da origem do proprietário do conteúdo do YouTube

    • No menu Conta de serviço, selecione uma conta de serviço nas contas de serviço associadas ao seu projeto do Google Cloud. É possível associar uma conta de serviço à transferência de dados em vez de usar suas credenciais de usuário. Para mais informações sobre o uso de contas de serviço com transferências de dados, consulte Usar contas de serviço.

      • Se você fez login com uma identidade federada, é necessário uma conta de serviço para criar uma transferência de dados. Se você fez login com uma Conta do Google, uma conta de serviço para a transferência de dados é opcional.
      • A conta de serviço precisa ter as permissões necessárias.
    • Opcional: na seção Opções de notificação:

      • Clique no botão para ativar as notificações por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail quando uma execução de transferência de dados falha.
      • Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub da sua transferência.
  5. Clique em Salvar.

  6. Se esta for a primeira vez que você faz login na conta, selecione uma conta e clique em Permitir. Selecione a mesma conta em que você é o proprietário ou o gerenciador de conteúdo.

bq

Insira o comando bq mk e forneça a sinalização de execução da transferência --transfer_config. As sinalizações abaixo também são obrigatórias:

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

Sinalizações opcionais:

  • --service_account_name: especifica uma conta de serviço a ser usada para a autenticação de transferência do proprietário do conteúdo em vez da sua conta de usuário.
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

Em que:

  • project_id é o ID do projeto;
  • dataset é o conjunto de dados de destino na configuração da transferência.
  • name é o nome de exibição da configuração de transferência. O nome da transferência de dados pode ser qualquer valor que permita identificá-la, caso você precise modificá-la depois.
  • parameters contém os parâmetros da configuração da transferência criada no formato JSON. Por exemplo, --params='{"param":"param_value"}'. Para transferências de dados do proprietário do conteúdo do YouTube, você precisa fornecer os parâmetros content_owner_id e table_suffix. Opcionalmente, você pode definir o parâmetro configure_jobs como true para permitir que o serviço de transferência de dados do BigQuery gerencie jobs de relatórios do YouTube para você. Se houver relatórios do YouTube que não existam na sua conta, novos jobs de relatório serão criados para ativá-los.
  • data_source é a fonte de dados: youtube_content_owner.
  • service_account_name é o nome da conta de serviço usado para autenticar a transferência de dados. A conta de serviço precisa pertencer ao mesmo project_id usado para criar a transferência e ter todas as permissões necessárias.

Também é possível fornecer a sinalização --project_id para especificar um projeto determinado. Se --project_id não for especificado, o projeto padrão será usado.

Por exemplo, o comando a seguir cria uma transferência de dados do proprietário do conteúdo do YouTube chamada My Transfer usando o ID do proprietário do conteúdo AbCDE_8FghIjK, o sufixo da tabela MT e o conjunto de dados de destino mydataset. A transferência de dados é criada no projeto padrão:

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

Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

Java

Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação 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 dados

Quando os dados são transferidos para o BigQuery, eles são gravados em tabelas particionadas por tempo de processamento. Para mais informações, consulte Tabelas particionadas.

Use a pseudocoluna _PARTITIONTIME para consultar suas tabelas diretamente em vez de usar visualizações geradas automaticamente. Para mais informações, veja Como consultar tabelas particionadas.

Resolver problemas de configuração de transferência do proprietário do conteúdo do YouTube

Em caso de problemas ao configurar a transferência de dados, consulte Problemas na transferência do YouTube, em Solução de problemas de configurações de transferência.