Crie tabelas de objetos
Este documento descreve como tornar os dados não estruturados no Cloud Storage acessíveis no BigQuery através da criação de uma tabela de objetos.
Para criar uma tabela de objetos, tem de concluir as seguintes tarefas:
- Crie um conjunto de dados para conter a tabela de objetos.
- Crie uma associação para ler informações de objetos do Cloud Storage.
- Conceda a função Storage Object Viewer (
roles/storage.objectViewer) à conta de serviço associada à ligação. - Crie a tabela de objetos e associe-a à ligação através da declaraçã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, tem de ter a função de editor de dados do BigQuery
(
roles/bigquery.dataEditor). - Para criar uma associação, tem de ter a função de administrador da associação do BigQuery
(
roles/bigquery.connectionAdmin). - Para conceder uma função à conta de serviço da associação, tem de ter a função de administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin). - Função de visualizador de dados do BigQuery (
roles/bigquery.dataViewer) - Função de utilizador de ligaçã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.createNa Google Cloud consola, aceda à página BigQuery.
No painel esquerdo, clique em Explorador:

Se não vir o painel do lado esquerdo, clique em Expandir painel do lado esquerdo para o abrir.
No painel Explorador, clique no nome do projeto.
Clique em Ver ações > Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
Para ID do conjunto de dados, escreva um nome para o conjunto de dados.
Para Tipo de localização, selecione Região ou Várias regiões.
- Se selecionou Região, selecione uma localização na lista Região.
- Se selecionou Multirregional, selecione EUA ou Europa na lista Multirregional.
Clique em Criar conjunto de dados.
Aceda à página do BigQuery.
No painel esquerdo, clique em Explorador:

No painel Explorador, clique em Adicionar dados.
É apresentada a caixa de diálogo Adicionar dados.
No painel Filtrar por, na secção Tipo de origem de dados, selecione Aplicações empresariais.
Em alternativa, no campo Pesquisar origens de dados, pode introduzir
Vertex AI.Na secção Origens de dados em destaque, clique em Vertex AI.
Clique no cartão da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de ligação, selecione Modelos remotos, funções remotas, BigLake e Spanner (recurso da nuvem) da Vertex AI.
No campo ID da associação, introduza um nome para a associação.
Para Tipo de localização, selecione Região ou Várias regiões.
- Se selecionou Região, selecione uma localização na lista Região.
- Se selecionou Multirregional, selecione EUA ou Europa na lista Multirregional.
Clique em Criar associação.
Clique em Aceder à associação.
No painel Informações de associação, copie o ID da conta de serviço para utilização num passo seguinte.
Aceda à página IAM e administrador.
Clique em Adicionar.
É apresentada a caixa de diálogo Adicionar responsáveis.
No campo Novos membros, introduza o ID da conta de serviço que copiou anteriormente.
No campo Selecionar uma função, escolha Cloud Storage e, de seguida, selecione Visualizador de objetos de armazenamento.
Clique em Guardar.
PROJECT_NUMBER: o número do projeto do projeto no qual conceder a função.MEMBER: o ID da conta de serviço que copiou anteriormente.Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaraçã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 o seguinte:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela de objetos.TABLE_NAME: o nome da tabela de objetos.REGION: a região ou a região múltipla que contém a ligação.CONNECTION_ID: o ID da associação de recursos da nuvem a usar com esta tabela de objetos. A associação determina que conta de serviço é usada para ler dados do Cloud Storage.Quando vê os detalhes da associação na consola Google Cloud , o ID da associação é o valor na última secção do ID da associação totalmente qualificado que é apresentado em ID da associação, por exemplo
projects/myproject/locations/connection_location/connections/myconnection.Para usar uma ligação predefinida, especifique
DEFAULTem vez da string de ligação que contém PROJECT_ID.REGION.CONNECTION_ID.BUCKET_PATH: o caminho para o contentor do Cloud Storage que contém os objetos representados pela tabela de objetos, no formato['gs://bucket_name/[folder_name/]*'].Pode usar um caráter universal de asterisco (
*) em cada caminho para limitar os objetos incluídos na tabela de objetos. Por exemplo, se o contentor tiver vários tipos de dados não estruturados, pode criar a tabela de objetos apenas sobre objetos PDF especificando['gs://bucket_name/*.pdf']. Para mais informações, consulte o artigo Suporte de carateres universais para URIs do Cloud Storage.Pode especificar vários contentores para a opção
urisfornecendo vários caminhos, por exemplo,['gs://mybucket1/*', 'gs://mybucket2/folder5/*'].Para mais informações sobre a utilização de URIs do Cloud Storage no BigQuery, consulte o artigo Caminho do recurso do Cloud Storage.
STALENESS_INTERVAL: especifica se as operações na tabela de objetos usam metadados em cache e qual a antiguidade máxima dos metadados em cache para que a operação os use. Para mais informações sobre considerações relativas à colocação em cache de metadados, consulte o artigo Colocação em cache de metadados para desempenho.Para desativar a colocação em cache de metadados, especifique 0. Esta é a predefinição.
Para ativar o armazenamento em cache de metadados, especifique um valor literal de intervalo entre 30 minutos e 7 dias. Por exemplo, especifique
INTERVAL 4 HOURpara um intervalo de desatualização de 4 horas. Com este valor, as operações na tabela usam metadados em cache se tiverem sido atualizados nas últimas 4 horas. Se os metadados em cache forem mais antigos, a operação obtém metadados do Cloud Storage.CACHE_MODE: especifica se a cache de metadados é atualizada automaticamente ou manualmente. Para mais informações sobre considerações de colocação em cache de metadados, consulte Colocação em cache de metadados para desempenho.Definido como
AUTOMATICpara que a cache de metadados seja atualizada a um intervalo definido pelo sistema, normalmente entre 30 e 60 minutos.Defina como
MANUALse quiser atualizar a cache de metadados de acordo com uma programação que determinar. Neste caso, pode chamar o procedimento do sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHEpara atualizar a cache.Tem de definir
CACHE_MODEseSTALENESS_INTERVALestiver definido como um valor superior a 0.
Clique em Executar.
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela de objetos.TABLE_NAME: o nome da tabela de objetos.REGION: a região ou a região múltipla que contém a ligação.CONNECTION_ID: o ID da ligação de recursos da nuvem a usar com esta tabela externa. A associação determina que conta de serviço é usada para ler dados do Cloud Storage.Quando vê os detalhes da ligação na Google Cloud consola, o ID da ligação é o valor na última secção do ID da ligação totalmente qualificado que é apresentado em ID da ligação, por exemplo
projects/myproject/locations/connection_location/connections/myconnection.BUCKET_PATH: o caminho para o contentor do Cloud Storage que contém os objetos representados pela tabela de objetos, no formatogs://bucket_name/[folder_name/]*.Pode usar um caráter universal de asterisco (
*) em cada caminho para limitar os objetos incluídos na tabela de objetos. Por exemplo, se o contentor tiver vários tipos de dados não estruturados, pode criar a tabela de objetos apenas sobre objetos PDF especificandogs://bucket_name/*.pdf. Para mais informações, consulte o artigo Suporte de carateres universais para URIs do Cloud Storage.Pode especificar vários contentores para a opção
urisfornecendo vários caminhos, por exemplo,gs://mybucket1/*,gs://mybucket2/folder5/*.Para mais informações sobre a utilização de URIs do Cloud Storage no BigQuery, consulte o artigo Caminho de recurso do Cloud Storage.
STALENESS_INTERVAL: especifica se as operações na tabela de objetos usam metadados em cache e qual a antiguidade máxima dos metadados em cache para que a operação os use. Para mais informações sobre considerações relativas à colocação em cache de metadados, consulte o artigo Colocação em cache de metadados para desempenho.Para desativar a colocação em cache de metadados, especifique 0. Esta é a predefiniçã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 doINTERVALtipo de dados. Por exemplo, especifique0-0 0 4:0:0para um intervalo de desatualização de 4 horas. Com este valor, as operações na tabela usam metadados em cache se tiverem sido atualizados nas últimas 4 horas. Se os metadados em cache forem mais antigos, a operação obtém metadados do Cloud Storage.CACHE_MODE: especifica se a cache de metadados é atualizada automaticamente ou manualmente. Para mais informações sobre considerações de colocação em cache de metadados, consulte Colocação em cache de metadados para desempenho.Definido como
AUTOMATICpara que a cache de metadados seja atualizada a um intervalo definido pelo sistema, normalmente entre 30 e 60 minutos.Defina como
MANUALse quiser atualizar a cache de metadados de acordo com uma programação que determinar. Neste caso, pode chamar o procedimento do sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHEpara atualizar a cache.Tem de definir
CACHE_MODEseSTALENESS_INTERVALestiver definido como um valor superior a 0.- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o ficheiro é denominadomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o
main.tfcriado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça correções à configuração conforme necessário.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yesno comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
- Saiba como executar a inferência em tabelas de objetos de imagens.
- Saiba como analisar tabelas de objetos através de funções remotas.
Funções necessárias
Para criar tabelas de objetos, tem de ter as seguintes funções no projeto:
Para consultar tabelas de objetos, tem de ter as seguintes funções no projeto:
Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Crie um conjunto de dados
Crie um conjunto de dados do BigQuery para conter a tabela de objetos:
Crie uma associação
Pode ignorar este passo se tiver uma associação predefinida configurada ou tiver a função de administrador do BigQuery.
Crie uma associação de recursos da nuvem para a tabela de objetos usar e obtenha a conta de serviço da associação.
Conceda acesso à conta de serviço
Conceda à conta de serviço da ligação a função Leitor de objetos de armazenamento:
Consola
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 o seguinte:
Crie uma tabela de objetos
Para criar uma tabela de objetos:
SQL
Use a declaração CREATE EXTERNAL TABLE.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Exemplos
O exemplo seguinte cria uma tabela de objetos com um intervalo de desatualização da 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 seguinte cria uma tabela de objetos sobre os objetos em três contentores 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 seguinte cria uma tabela de objetos apenas com os objetos PDF num contentor 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 o seguinte:
Exemplos
O exemplo seguinte cria uma tabela de objetos com um intervalo de desatualização da 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 seguinte cria uma tabela de objetos sobre os objetos em três contentores 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 seguinte cria uma tabela de objetos apenas com os objetos PDF num contentor 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 transmite.
O exemplo seguinte mostra como chamar este método através de 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
Este exemplo cria uma tabela de objetos com a colocação em cache de metadados ativada com atualização manual.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Os campos de chave a especificar 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. Para mais informações sobre cada recurso, consulte a documentação do Terraform BigQuery.
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
Consultar tabelas de objetos
Pode consultar uma tabela de objetos como qualquer outra tabela do BigQuery, por exemplo:
SELECT * FROM mydataset.myobjecttable;
A consulta de uma tabela de objetos devolve metadados para os objetos subjacentes. Para mais informações, consulte o esquema da tabela de objetos.