Tabelas externas

Nesta página, você tem uma visão geral do uso de tabelas externas para consultar dados armazenados fora do BigQuery.

Uma tabela externa é uma tabela que funciona como uma tabela padrão do BigQuery. Os metadados da tabela, incluindo o esquema, são armazenados no BigQuery, mas os dados em si residem na fonte externa

As tabelas externas podem ser temporárias ou permanentes. Uma tabela externa permanente está contida em um conjunto de dados, e você a gerencia da mesma forma que gerencia uma tabela padrão do BigQuery. Por exemplo, é possível visualizar as propriedades da tabela, definir controles de acesso e assim por diante. É possível consultar a tabela e associá-la a outras tabelas.

É possível usar tabelas externas com as seguintes fontes de dados:

Limitações da tabela externa

As limitações das fontes de dados externas incluem o seguinte:

  • O BigQuery não garante a consistência dos dados para tabelas de dados externas. Alterações nos dados subjacentes durante a execução de uma consulta podem resultar em comportamentos inesperados.
  • O desempenho da consulta para tabelas externas pode não ser tão alto quanto a consulta de dados em uma tabela nativa do BigQuery. Se a velocidade de consulta for uma prioridade, carregue os dados no BigQuery em vez de configurar uma fonte de dados externa. O desempenho de uma consulta que inclui uma tabela externa depende do tipo de armazenamento externo. Por exemplo, a consulta de dados armazenados no Cloud Storage é mais rápida do que a consulta de dados armazenados no Google Drive. Em geral, o desempenho da consulta em uma tabela externa precisa ser equivalente à leitura dos dados diretamente da fonte.
  • Não é possível modificar tabelas de dados externas com a DML ou outros métodos. Tabelas externas são somente leitura para o BigQuery.
  • Não é possível usar o método de API JSON TableDataList para recuperar dados de tabelas externas. Para mais informações, consulte tabledata.list.

    Para contornar essa limitação, salve os resultados da consulta em uma tabela de destino. Em seguida, use o método TableDataList na tabela de resultados.

  • Não é possível executar um job do BigQuery que exporte dados a partir de uma tabela externa.

    Para resolver essa limitação, salve os resultados da consulta em uma tabela de destino. Em seguida, execute um job de exportação na tabela de resultados.

  • Não é possível referenciar uma tabela externa em uma consulta de tabela de caracteres curinga.

  • As tabelas externas não são compatíveis com o clustering. Eles são compatíveis com o particionamento de formas limitadas. Para mais detalhes, consulte Como consultar dados particionados externamente.

  • Quando você consulta uma origem de dados externa do Cloud Storage, os resultados não são armazenados em cache. As consultas SQL padrão do BigQuery no Cloud Storage são compatíveis. Será cobrada cada consulta em uma tabela externa, ainda que a mesma consulta seja enviada diversas vezes. Caso seja necessário enviar repetidamente uma consulta em uma tabela externa que não seja alterada com frequência, convém gravar os resultados da consulta em uma tabela permanente e executar as consultas nessa tabela.

  • Você só pode fazer quatro consultas simultâneas em uma fonte de dados externa do Cloud Bigtable.

  • Uma simulação de uma consulta federada que usa uma fonte de dados externa pode relatar um limite inferior de 0 bytes de dados, mesmo que as linhas sejam retornadas. Isso ocorre porque a quantidade de dados processados da tabela externa não pode ser determinada até que a consulta real seja concluída. A execução da consulta federada ainda gerará um custo para processar esses dados.

Considerações sobre o local

Ao escolher um local para os dados, pense no seguinte:

  • Colocar o conjunto de dados do BigQuery ao usar fontes de dados externas.
    • Cloud Storage: Ao consultar dados no Cloud Storage com uma tabela externa do BigQuery, os dados consultados precisam ser combinados com o conjunto de dados do BigQuery. Exemplo:
      • Região única: se o conjunto de dados do BigQuery estiver na região de Varsóvia ("europe-central2"), o bucket do Cloud Storage correspondente também precisará estar na região de Varsóvia, porque não há nenhum local de região dupla do Cloud Storage que inclua Varsóvia.
      • Região dupla: se o conjunto de dados do BigQuery estiver na região de Tóquio ("asia-northeast1"), o bucket do Cloud Storage correspondente precisará ser um bucket na região de Tóquio ou na região dupla "ASIA1" (que inclui Tóquio).
      • Multirregião: como o desempenho da consulta externa depende da latência mínima e da largura de banda de rede ideal, não é recomendado o uso de locais de conjuntos de dados multirregionais com buckets multirregionais do Cloud Storage em tabelas externas.
      Veja os locais suportados do Cloud Storage.
    • Cloud Bigtable: quando você consulta dados no Cloud Bigtable por uma tabela externa do BigQuery, a instância do Cloud Bigtable precisa estar no mesmo local que o conjunto de dados do BigQuery;
      • Região única: se o conjunto de dados do BigQuery estiver no local regional da Bélgica (europe-west1), a instância correspondente do Cloud Bigtable precisará estar na região da Bélgica.
      • Multirregional: como o desempenho da consulta externa depende da latência mínima e da largura de banda de rede ideal, o uso do local do conjunto de dados multirregional não é recomendado para tabelas externas no Cloud Bigtable.
      Veja os locais suportados do Cloud Bigtable.
    • Google Drive: as considerações sobre o local não se aplicam às fontes de dados externas do Google Drive.
  • Desenvolver um plano de gerenciamento de dados.
    • Se você escolher um recurso de armazenamento regional, como um conjunto de dados do BigQuery ou um bucket do Cloud Storage, será necessário desenvolver um plano para gerenciar geograficamente seus dados.

Para mais informações sobre locais do Cloud Storage, consulte Locais de intervalos na documentação do Cloud Storage.

Para mover manualmente um conjunto de dados de um local para outro, siga este processo:

  1. Exporte os dados das tabelas do BigQuery para um bucket do Cloud Storage no mesmo local que o conjunto de dados ou em um local contido no local do conjunto de dados. Por exemplo, se o conjunto de dados estiver no local multirregional "EU", você poderá exportar seus dados para o local "europe-west1" Bélgica, que faz parte da UE.

    Não há cobrança pela exportação de dados do BigQuery, mas são cobradas taxas pelo armazenamento dos dados exportados no Cloud Storage. As exportações do BigQuery estão sujeitas aos limites de jobs de exportação.

  2. Copie ou mova os dados do bucket do Cloud Storage de exportação para um novo bucket criado no local de destino. Por exemplo, se você estiver movendo os dados da multirregião "US" para a região "asia-northeast1" de Tóquio, será necessário transferi-los para um bucket criado em Tóquio. Para informações sobre como transferir objetos do Cloud Storage, consulte Como copiar, renomear e mover objetos na documentação do Cloud Storage.

    A transferência de dados entre regiões gera cobranças de saída de rede no Cloud Storage.

  3. Depois de transferir os dados para um intervalo do Cloud Storage no novo local, crie um novo conjunto de dados do BigQuery no novo local. Em seguida, carregue os dados do bucket do Cloud Storage no BigQuery.

    Você não será cobrado pelo carregamento dos dados no BigQuery, mas haverá cobranças pelo armazenamento dos dados no Cloud Storage até que os dados ou o bucket sejam excluídos. Também haverá cobrança pelo armazenamento de dados no BigQuery depois que eles forem carregados. O carregamento de dados no BigQuery está sujeito às limitações de jobs de carregamento.

Também é possível usar o Cloud Composer para mover e copiar grandes conjuntos de dados de maneira programática.

Para mais informações sobre como usar o Cloud Storage para armazenar e mover grandes conjuntos de dados, consulte Como usar o Cloud Storage com Big Data.

Preços da fonte de dados externa

Quando você consulta uma tabela externa no BigQuery, a consulta é cobrada.

Se os dados estiverem armazenados em ORC ou Parquet no Cloud Storage, consulte Cálculo do tamanho dos dados.

Você também é cobrado pelo armazenamento dos dados e de qualquer recurso usado pelo aplicativo de origem, sujeito às diretrizes de preços do aplicativo:

  • Para informações sobre preços do Cloud Storage, consulte Preços do Cloud Storage.
  • Para informações sobre os preços do Cloud Bigtable, consulte Preços.
  • Para informações sobre os preços do Google Drive, consulte Preços.

Próximas etapas