Especifique colunas ObjectRef em esquemas de tabelas
Este documento descreve como definir um esquema de tabela padrão do BigQuery com colunas que podem armazenar valores ObjectRef
.
Os valores de ObjectRef
fornecem metadados e informações de ligação para objetos no
Cloud Storage. Use valores ObjectRef
quando precisar de
integrar dados não estruturados numa tabela padrão. Por exemplo, numa tabela de produtos, pode armazenar imagens de produtos na mesma linha com o resto das informações dos produtos adicionando uma coluna que contenha valores ObjectRef
. Pode armazenar valores ObjectRef
em colunas STRUCT
que usam o formato ObjectRef
, que é STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>
.
Para mais informações sobre como trabalhar com dados multimodais, consulte o artigo
Analise dados multimodais.
Para ver um tutorial que mostra como trabalhar com dados ObjectRef
, consulte o artigo
Analise dados multimodais com SQL.
Para informações sobre como trabalhar com dados multimodais em Python, consulte o artigo
Analise dados multimodais em Python com DataFrames do BigQuery.
Pré-requisitos
Para preencher e atualizar os valores ObjectRef
numa tabela padrão, a tabela tem de ter uma coluna STRING
que contenha informações de URI para os objetos do Cloud Storage relacionados.
Tem de ter um contentor do Cloud Storage que contenha os mesmos objetos
identificados nos dados do URI da tabela padrão de destino.
Se quiser
manter ObjectRef
valores numa tabela padrão
através de uma tabela de objetos, também tem de ter uma tabela de objetos que represente os objetos nesse contentor.
Manter valores ObjectRef
Pode usar uma tabela de objetos para preencher e atualizar os valores ObjectRef
numa tabela padrão. Se estiver na lista de autorizações para a pré-visualização, todas as tabelas de objetos que criar têm uma coluna ref
que contém um valor ObjectRef
para o objeto em questão. Pode usar o URI do objeto para juntar a tabela padrão à tabela de objetos de modo a preencher e atualizar os valores de ObjectRef
. Recomendamos esta abordagem para a escalabilidade, porque evita a necessidade de obter metadados de objetos do Cloud Storage.
Se não quiser criar uma tabela de objetos, pode usar as funções
OBJ.FETCH_METADATA
e
OBJ.MAKE_REF
para preencher e atualizar os valores ObjectRef
obtendo os metadados dos objetos
diretamente do Cloud Storage. Esta abordagem pode ser menos escalável, uma vez que requer a obtenção de metadados de objetos do Cloud Storage.
Crie uma coluna de ObjectRef
Para criar e preencher uma coluna ObjectRef
numa tabela padrão, selecione uma das seguintes opções:
Tabela de objetos
Crie e preencha uma coluna ObjectRef
com base nos dados de uma coluna da tabela de objetos ref
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJECT_TABLE.ref AS objectrefcolumn FROM DATASET_ID.TABLE_NAME INNER JOIN DATASET_ID.OBJECT_TABLE ON OBJECT_TABLE.uri = TABLE_NAME.uri;
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto. Pode ignorar este argumento se estiver a criar a tabela no seu projeto atual.DATASET_ID
: o ID do conjunto de dados que está a criar.TABLE_NAME
: o nome da tabela padrão que está a recriar.OBJECT_TABLE
: o nome da tabela de objetos que contém os dados de objetos que quer integrar na tabela padrão.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Funções SQL
Crie e preencha uma coluna ObjectRef
com base no resultado das funções OBJ.FETCH_METADATA
e OBJ.MAKE_REF
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID')) AS objectrefcolumn FROM DATASET_ID.TABLE_NAME;
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto. Pode ignorar este argumento se estiver a criar a tabela no seu projeto atual.DATASET_ID
: o ID do conjunto de dados que está a criar.TABLE_NAME
: o nome da tabela padrão que está a recriar.CONNECTION_ID
: Um valorSTRING
que contém uma ligação de recursos da nuvem que o serviço pode usar para aceder aos objetos no Cloud Storage, no formatolocation.connection_id
. Por exemplo,us-west1.myconnection
. Pode obter o ID da associação vendo os detalhes da associação na Google Cloud consola e copiando o valor na última secção do ID da associação totalmente qualificado apresentado em ID da associação. Por exemplo,projects/myproject/locations/connection_location/connections/myconnection
.Tem de conceder a função Utilizador de objetos do armazenamento (
roles/storage.objectUser
) à conta de serviço da ligação em qualquer contentor do Cloud Storage onde a esteja a usar para aceder a objetos.A ligação tem de estar no mesmo projeto e região que a consulta onde está a chamar a função.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Crie uma coluna de ARRAY<ObjectRef>
Pode criar uma coluna
ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>
para conter matrizes de valores ObjectRef
. Por exemplo, pode dividir um vídeo em imagens separadas e, em seguida, armazenar estas imagens como uma matriz de valores ObjectRef
.
Pode usar a função
ARRAY_AGG
para agregar matrizes de valores ObjectRef
, incluindo a cláusula ORDER BY
para preservar a ordem dos objetos, se necessário. Pode usar o operador UNNEST
para analisar uma matriz de valores ObjectRef
em valores ObjectRef
individuais, incluindo a utilização da cláusula WITH OFFSET
para preservar a ordem dos objetos, se necessário.
Pode usar metadados de objetos, como o caminho do URI e o nome do ficheiro do objeto, para mapear valores ObjectRef
que representam partes de objetos para um valor ObjectRef
que representa o objeto original.
Para ver um exemplo de como trabalhar com matrizes de valores ObjectRef
, consulte a secção Processar dados multimodais ordenados usando valores ARRAY<ObjectRef>
do tutorial Analise dados multimodais com SQL.
Atualize uma coluna ObjectRef
Para atualizar uma coluna ObjectRef
numa tabela padrão, selecione uma das seguintes opções:
Tabela de objetos
Atualize uma coluna ObjectRef
usando dados de uma coluna da tabela de objetos ref
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT ref FROM DATASET_ID.OBJECT_TABLE WHERE OBJECT_TABLE.uri = TABLE_NAME.uri) WHERE uri != "";
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto. Pode ignorar este argumento se estiver a criar a tabela no seu projeto atual.DATASET_ID
: o ID do conjunto de dados que está a criar.TABLE_NAME
: o nome da tabela padrão que está a recriar.OBJECT_TABLE
: o nome da tabela de objetos que contém os mesmos dados de objetos que a colunaObjectRef
da tabela padrão.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Funções SQL
Atualize uma coluna ObjectRef
usando o resultado das funções OBJ.FETCH_METADATA
e OBJ.MAKE_REF
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID'))) WHERE uri != "";
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto. Pode ignorar este argumento se estiver a criar a tabela no seu projeto atual.DATASET_ID
: o ID do conjunto de dados que está a criar.TABLE_NAME
: o nome da tabela padrão que está a recriar.CONNECTION_ID
: Um valorSTRING
que contém uma ligação de recursos da nuvem que o serviço pode usar para aceder aos objetos no Cloud Storage, no formatolocation.connection_id
. Por exemplo,us-west1.myconnection
. Pode obter o ID da associação vendo os detalhes da associação na Google Cloud consola e copiando o valor na última secção do ID da associação totalmente qualificado apresentado em ID da associação. Por exemplo,projects/myproject/locations/connection_location/connections/myconnection
.Tem de conceder a função Utilizador de objetos do armazenamento (
roles/storage.objectUser
) à conta de serviço da ligação em qualquer contentor do Cloud Storage onde a esteja a usar para aceder a objetos.A ligação tem de estar no mesmo projeto e região que a consulta onde está a chamar a função.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O que se segue?
- Analise dados multimodais.
- Analise dados multimodais com SQL.
- Analise dados multimodais em Python com DataFrames do BigQuery.