Criar tabelas de objetos
Neste documento, descrevemos como tornar os dados não estruturados no Cloud Storage acessíveis no BigQuery criando uma tabela de objetos.
Para criar uma tabela de objetos, conclua as seguintes tarefas:
- Crie um conjunto de dados para conter a tabela de objetos.
- Crie uma conexão para ler informações do objeto do Cloud Storage.
- Conceda o papel Leitor de objetos do Storage (
roles/storage.objectViewer) à conta de serviço associada à conexão. - Crie e associe a tabela de objetos à conexão usando a
instrução
CREATE EXTERNAL TABLE.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Connection API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Connection API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Para criar conjuntos de dados e tabelas, você precisa ter o papel de editor de dados do BigQuery (
roles/bigquery.dataEditor). - Para criar uma conexão, você precisa ter o papel de Administrador de conexão do BigQuery
(
roles/bigquery.connectionAdmin). - Para conceder um papel à conta de serviço da conexão, você precisa ter o papel de Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin). - Papel de leitor de dados do BigQuery (
roles/bigquery.dataViewer) - Papel de usuário de conexão do BigQuery (
roles/bigquery.connectionUser) bigquery.datasets.createbigquery.tables.createbigquery.tables.updatebigquery.connections.createbigquery.connections.getbigquery.connections.listbigquery.connections.updatebigquery.connections.usebigquery.connections.deletebigquery.connections.delegatestorage.bucket.*storage.object.*bigquery.jobs.createbigquery.tables.getbigquery.tables.getDatabigquery.readsessions.createNo console do Google Cloud , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.
No painel Explorer, clique no nome do seu projeto.
Clique em Conferir ações > Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
Em ID do conjunto de dados, digite um nome para o conjunto de dados.
Em Tipo de local, selecione Região ou Multirregião.
- Se você selecionou Região, escolha um local na lista Região.
- Se você selecionou Multirregião, escolha EUA ou Europa na lista Multirregião.
Clique em Criar conjunto de dados.
Acessar a página do BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, clique em Adicionar dados.
A caixa de diálogo Adicionar dados é aberta.
No painel Filtrar por, na seção Tipo de fonte de dados, selecione Aplicativos comerciais.
Como alternativa, no campo Pesquisar fontes de dados, insira
Vertex AI.Na seção Fontes de dados em destaque, clique em Vertex AI.
Clique no card da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas, BigLake e Spanner (recurso do Cloud).
No campo ID da conexão, digite um nome para a conexão.
Em Tipo de local, selecione Região ou Multirregião.
- Se você selecionou Região, escolha um local na lista Região.
- Se você selecionou Multirregião, escolha EUA ou Europa na lista Multirregião.
Clique em Criar conexão.
Clique em Ir para conexão.
No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa seguinte.
Acesse a página IAM e administrador.
Clique em Adicionar.
A caixa de diálogo Adicionar principais é aberta.
No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar papel, escolha Cloud Storage e, em seguida, Visualizador de objetos do Storage.
Clique em Salvar.
PROJECT_NUMBER: o número do projeto em que a função será concedida.MEMBER: o ID da conta de serviço que você copiou anteriormente.No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET_ID.TABLE_NAME` WITH CONNECTION {`PROJECT_ID.REGION.CONNECTION_ID`| DEFAULT} OPTIONS( object_metadata = 'SIMPLE', uris = ['BUCKET_PATH'[,...]], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE');
Substitua:
PROJECT_ID: o ID do projetoDATASET_ID: o ID do conjunto de dados que vai conter a tabela de objetos.TABLE_NAME: o nome da tabela de objetos.REGION: a região ou multirregião que contém a conexão.CONNECTION_ID: o ID da conexão de recursos da nuvem a ser usada com essa tabela de objetos. A conexão determina qual conta de serviço é usada para ler dados a partir do Cloud Storage.Quando você visualiza os detalhes da conexão no console do Google Cloud , o ID da conexão é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo,
projects/myproject/locations/connection_location/connections/myconnection.Para usar uma conexão padrão, especifique
DEFAULTem vez da string de conexão que contém PROJECT_ID.REGION.CONNECTION_ID.BUCKET_PATH: o caminho para o bucket do Cloud Storage que contém os objetos representados pela tabela de objetos, no formato['gs://bucket_name/[folder_name/]*'].É possível usar um caractere curinga de asterisco (
*) em cada caminho para limitar os objetos incluídos na tabela de objetos. Por exemplo, se o bucket contiver vários tipos de dados não estruturados, crie a tabela de objetos usando apenas objetos PDF especificando['gs://bucket_name/*.pdf']. Para mais informações, consulte Compatibilidade de caracteres curinga com URIs do Cloud Storage.É possível especificar vários buckets para a opção
urisfornecendo vários caminhos, por exemplo,['gs://mybucket1/*', 'gs://mybucket2/folder5/*'].Para mais informações sobre o uso de URIs do Cloud Storage no BigQuery, consulte Caminho do recurso do Cloud Storage.
STALENESS_INTERVAL: especifica se os metadados em cache são usados pelas operações na tabela de objetos e se eles precisam ser atualizados para que possam ser usados pela operação. Para mais informações sobre considerações de armazenamento em cache de metadados, consulte Armazenamento em cache de metadados para desempenho.Para desativar o armazenamento em cache de metadados, especifique 0. Esse é o padrão.
Para ativar o armazenamento em cache de metadados, especifique um valor de literal de intervalo entre 30 minutos e 7 dias. Por exemplo, especifique
INTERVAL 4 HOURpara um intervalo de inatividade de 4 horas. Com esse valor, as operações na tabela usarão metadados em cache se tiverem sido atualizados nas últimas 4 horas. Se os metadados em cache forem anteriores a isso, a operação recuperará os metadados do Cloud Storage.CACHE_MODE: especifica se o cache de metadados é atualizado de forma automática ou manual. Para mais informações sobre considerações de armazenamento em cache de metadados, consulte Armazenamento em cache de metadados para desempenho.Defina como
AUTOMATICpara que o cache de metadados seja atualizado em um intervalo definido pelo sistema, geralmente entre 30 e 60 minutos.Defina como
MANUALse quiser atualizar o cache de metadados com uma programação que você determinar. Nesse caso, chame o procedimento do sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHEpara atualizar o cache.Defina
CACHE_MODEseSTALENESS_INTERVALestiver definido como um valor maior que 0.
Clique em Executar.
PROJECT_ID: o ID do projetoDATASET_ID: o ID do conjunto de dados que vai conter a tabela de objetos.TABLE_NAME: o nome da tabela de objetos.REGION: a região ou multirregião que contém a conexão.CONNECTION_ID: o ID da conexão de recursos da nuvem a ser usada com essa tabela externa. A conexão determina qual conta de serviço é usada para ler dados a partir do Cloud Storage.Quando você visualiza os detalhes da conexão no console do Google Cloud , o ID da conexão é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo,
projects/myproject/locations/connection_location/connections/myconnection.BUCKET_PATH: o caminho para o bucket do Cloud Storage que contém os objetos representados pela tabela de objetos, no formatogs://bucket_name/[folder_name/]*.É possível usar um caractere curinga de asterisco (
*) em cada caminho para limitar os objetos incluídos na tabela de objetos. Por exemplo, se o bucket contiver vários tipos de dados não estruturados, crie a tabela de objetos usando apenas objetos PDF especificandogs://bucket_name/*.pdf. Para mais informações, consulte Compatibilidade de caracteres curinga com URIs do Cloud Storage.É possível especificar vários buckets para a opção
urisfornecendo vários caminhos, por exemplo,gs://mybucket1/*,gs://mybucket2/folder5/*.Para mais informações sobre o uso de URIs do Cloud Storage no BigQuery, consulte Caminho do recurso do Cloud Storage.
STALENESS_INTERVAL: especifica se os metadados em cache são usados pelas operações na tabela de objetos e se eles precisam ser atualizados para que possam ser usados pela operação. Para mais informações sobre considerações de armazenamento em cache de metadados, consulte Armazenamento em cache de metadados para desempenho.Para desativar o armazenamento em cache de metadados, especifique 0. Esse é o padrão.
Para ativar o armazenamento em cache de metadados, especifique um valor de intervalo entre 30 minutos e 7 dias, usando o formato
Y-M D H:M:Sdescrito na documentação do tipo de dadosINTERVAL. Por exemplo, especifique0-0 0 4:0:0para um intervalo de inatividade de quatro horas. Com esse valor, as operações na tabela usarão metadados em cache se tiverem sido atualizados nas últimas 4 horas. Se os metadados em cache forem anteriores a isso, a operação recuperará os metadados do Cloud Storage.CACHE_MODE: especifica se o cache de metadados é atualizado de forma automática ou manual. Para mais informações sobre considerações de armazenamento em cache de metadados, consulte Armazenamento em cache de metadados para desempenho.Defina como
AUTOMATICpara que o cache de metadados seja atualizado em um intervalo definido pelo sistema, geralmente entre 30 e 60 minutos.Defina como
MANUALse quiser atualizar o cache de metadados com uma programação que você determinar. Nesse caso, chame o procedimento do sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHEpara atualizar o cache.Defina
CACHE_MODEseSTALENESS_INTERVALestiver definido como um valor maior que 0.- Inicie o Cloud Shell.
-
Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o arquivo é chamado demain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tfrecém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na interface para verificar se foram criados ou atualizados pelo Terraform.
- Saiba como executar inferência em tabelas de objetos de imagem.
- Saiba como analisar tabelas de objetos usando funções remotas.
Funções exigidas
Para criar tabelas de objetos, você precisa ter os seguintes papéis no projeto:
Para consultar tabelas de objetos, você precisa ter as seguintes funções no projeto:
Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para conter a tabela de objetos:
Crie uma conexão
Pule esta etapa se você tiver uma conexão padrão configurada ou a função de administrador do BigQuery.
Crie uma Conexão de recursos do Cloud para uso da tabela de objetos e tenha acesso à conta de serviço da conexão.
Conceder acesso à conta de serviço
Conceda à conta de serviço da conexão o papel de Leitor de objetos do Storage:
Console
gcloud
Use o comando gcloud projects add-iam-policy-binding.
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
Substitua:
criar uma tabela de objetos
Para criar uma tabela de objetos:
SQL
Use a
instrução CREATE EXTERNAL TABLE.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
Exemplos
O exemplo a seguir cria uma tabela de objetos com um intervalo de inatividade do cache de metadados de 1 dia:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://mybucket/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
O exemplo a seguir cria uma tabela de objetos sobre os objetos em três Buckets do Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*','gs://bucket2/folder1/*','gs://bucket3/*'] );
O exemplo a seguir cria uma tabela de objetos apenas sobre os objetos PDF em um bucket do Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*.pdf'] );
bq
Use o
comando bq mk.
bq mk --table \ --external_table_definition=BUCKET_PATH@REGION.CONNECTION_ID \ --object_metadata=SIMPLE \ --max_staleness=STALENESS_INTERVAL \ --metadata_cache_mode=CACHE_MODE \ PROJECT_ID:DATASET_ID.TABLE_NAME
Substitua:
Exemplos
O exemplo a seguir cria uma tabela de objetos com um intervalo de inatividade do cache de metadados de 1 dia:
bq mk --table \ --external_table_definition=gs://mybucket/*@us.my-connection \ --object_metadata=SIMPLE \ --max_staleness=0-0 1 0:0:0 \ --metadata_cache_mode=AUTOMATIC \ my_dataset.object_table
O exemplo a seguir cria uma tabela de objetos sobre os objetos em três Buckets do Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*,gs://bucket2/folder1/*,gs://bucket3/*@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
O exemplo a seguir cria uma tabela de objetos apenas sobre os objetos PDF em um bucket do Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*.pdf@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
API
Chame o
método tables.insert.
Inclua um
objeto ExternalDataConfiguration
com o campo objectMetadata definido como SIMPLE no
recurso Table
que você transmitir.
O exemplo a seguir mostra como chamar esse método usando curl:
ACCESS_TOKEN=$(gcloud auth print-access-token) curl \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"tableReference": {"projectId": "my_project", "datasetId": "my_dataset", "tableId": "object_table_name"}, "externalDataConfiguration": {"objectMetadata": "SIMPLE", "sourceUris": ["gs://mybucket/*"]}}' \
https://www.googleapis.com/bigquery/v2/projects/my_project/datasets/my_dataset/tables
Terraform
Neste exemplo, criamos uma tabela de objetos com o armazenamento em cache de metadados ativado com atualização manual.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Os principais campos a serem especificados para uma tabela de objetos são:
google_bigquery_table.external_data_configuration.object_metadata,
google_bigquery_table.external_data_configuration.metadata_cache_mode
e google_bigquery_table.max_staleness de dois minutos. Para mais informações sobre cada recurso, consulte a documentação do Terraform no BigQuery.
Para aplicar a configuração do Terraform em um projeto Google Cloud , siga as etapas nas seções a seguir.
Preparar o Cloud Shell
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
Aplique as alterações
Consultar tabelas de objetos
É possível consultar uma tabela de objetos como qualquer outro BigQuery, por exemplo:
SELECT * FROM mydataset.myobjecttable;
Consultar uma tabela de objetos retorna metadados para eles. Para mais informações, consulte Esquema da tabela de objetos.