Gerenciar tabelas em cluster
Depois de criar uma tabela em cluster no BigQuery, é possível controlar quem pode acessá-la, analisar as propriedades dela e mudar as colunas de clustering conforme os padrões de consulta evoluem. Neste documento, descrevemos como controlar o acesso a tabelas em cluster, receber informações sobre elas, listar as tabelas em cluster em um conjunto de dados e modificar a especificação de clustering.
Para saber mais sobre tabelas em cluster, consulte Introdução às tabelas em cluster. Para criar uma, consulte Criar tabelas em cluster.
Antes de começar
Para receber informações sobre tabelas, é preciso ter a permissão bigquery.tables.get. Os seguintes papéis predefinidos do IAM incluem as permissões bigquery.tables.get:
roles/bigquery.metadataViewerroles/bigquery.dataViewerroles/bigquery.dataOwnerroles/bigquery.dataEditorroles/bigquery.admin
Além disso, se um usuário tiver a permissão bigquery.datasets.create, quando ele criar um conjunto de dados, receberá acesso bigquery.dataOwner a ele.
O acesso bigquery.dataOwner permite que o usuário receba informações sobre tabelas em um conjunto de dados.
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Controlar o acesso a tabelas em cluster
Para configurar o acesso a tabelas e visualizações, conceda um papel do IAM a uma entidade nos seguintes níveis, listados em ordem de intervalo de recursos permitidos (do maior para o menor):
- Um nível alto na hierarquia de recursos doGoogle Cloud , como o nível do projeto, da pasta ou da organização.
- O nível do conjunto de dados
- O nível da tabela ou da visualização
Também é possível restringir o acesso a dados nas tabelas usando os métodos a seguir:
O acesso a qualquer recurso protegido pelo IAM é aditivo. Por exemplo, se uma entidade não tiver acesso em um nível alto, como um projeto, será possível conceder a ela acesso no nível do conjunto de dados. Assim, ela terá acesso às tabelas e visualizações no conjunto de dados. Da mesma forma, se a entidade não tiver acesso no nível superior ou no nível do conjunto de dados, será possível conceder acesso à entidade no nível da tabela ou da visualização.
Conceder papéis do IAM em um nível mais alto na hierarquia de recursos doGoogle Cloud, como no nível do projeto, da pasta ou da organização, dá à entidade acesso a um amplo conjunto de recursos. Por exemplo, conceder um papel a uma entidade no nível do projeto fornece a ela permissões referentes aos conjuntos de dados em todo o projeto.
Conceder um papel no nível do conjunto de dados especifica as operações que uma entidade tem permissão de realizar em tabelas e define as visualizações nesse conjunto de dados específico, mesmo que a entidade não tenha acesso em um nível superior. Para informações sobre como configurar controles de acesso no nível do conjunto de dados, consulte este link.
A concessão de um papel no nível da tabela ou da visualização especifica as operações que uma entidade pode realizar em tabelas e visualizações específicas, mesmo que a entidade não tenha acesso em um nível superior. Para informações sobre como configurar controles de acesso no nível da tabela e da visualização, consulte este link.
Você também pode criar papéis personalizados do IAM. Se você criar um papel personalizado, as permissões concedidas dependerão das operações específicas que a entidade poderá executar.
Não é possível definir uma permissão "deny" em nenhum recurso protegido pelo IAM.
Para mais informações sobre papéis e permissões, consulte Noções básicas sobre papéis na documentação do IAM e os papéis e permissões do IAM do BigQuery.
Receber informações sobre tabelas em cluster
Selecione uma das seguintes opções:
Console
No console do Google Cloud , acesse o painel Recursos.
Clique no nome do conjunto de dados para expandi-lo e, em seguida, selecione o nome da tabela que você quer visualizar.
Clique em Detalhes.
Os detalhes da tabela são exibidos, incluindo as colunas de clustering.
SQL
Para tabelas em cluster, consulte a coluna CLUSTERING_ORDINAL_POSITION
na visualização INFORMATION_SCHEMA.COLUMNS
para encontrar o deslocamento de índice 1 da coluna nas colunas de clustering
da tabela:
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE TABLE mydataset.data (column1 INT64, column2 INT64) CLUSTER BY column1, column2; SELECT column_name, clustering_ordinal_position FROM mydataset.INFORMATION_SCHEMA.COLUMNS;
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
A posição ordinal do clustering é 1 para column1 e 2 para column2.
Mais metadados da tabela estão disponíveis nas visualizações TABLES, TABLE_OPTIONS, COLUMNS e COLUMN_FIELD_PATH em INFORMATION_SCHEMA.
bq
Emita o comando bq show para exibir todas as informações da tabela. Use a sinalização --schema para exibir somente informações de esquema da tabela. A sinalização --format pode ser usada para controlar a saída.
Se você estiver recebendo informações sobre uma tabela em um projeto diferente do projeto padrão, adicione o ID do projeto ao conjunto de dados no seguinte formato: project_id:dataset.
bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE
Substitua:
PROJECT_ID: o ID do projetoDATASET: o nome do conjunto de dadosTABLE: o nome da tabela
Exemplos:
Digite o comando a seguir para exibir todas as informações sobre myclusteredtable em mydataset. mydataset está no seu projeto padrão.
bq show --format=prettyjson mydataset.myclusteredtable
A saída será semelhante a esta:
{
"clustering": {
"fields": [
"customer_id"
]
},
...
}
API
Chame o método bigquery.tables.get e forneça os parâmetros relevantes.
Listar tabelas em cluster em um conjunto de dados
As permissões e as etapas necessárias para listar tabelas em cluster são as mesmas das tabelas padrão. Para mais informações, consulte Como listar tabelas em um conjunto de dados.
Modificar a especificação de clustering
É possível alterar ou remover as especificações de clustering de uma tabela ou alterar o conjunto de colunas em cluster em uma tabela em cluster. Esse método de atualização do conjunto de colunas em cluster é útil para tabelas que usam inserções por streaming contínuas, porque essas tabelas não podem ser facilmente alternadas por outros métodos.
Siga estas etapas para aplicar uma nova especificação de clustering a tabelas não particionadas ou particionadas.
Na ferramenta bq, atualize a especificação de clustering da tabela para corresponder ao novo clustering:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
Substitua:
CLUSTER_COLUMN: a coluna que você está agrupando, por exemplo,mycolumn.DATASET: o nome do conjunto de dados que contém a tabela. Por exemplo,mydatasetORIGINAL_TABLE: o nome da tabela original, por exemplo,mytable
Também é possível chamar o método de API
tables.updateoutables.patchpara modificar a especificação de clustering.Para agrupar todas as linhas de acordo com a nova especificação de clustering, execute a seguinte instrução
UPDATE:UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true
A seguir
- Para mais informações sobre como consultar tabelas em cluster, consulte esta página.
- Para uma visão geral do suporte a tabelas particionadas no BigQuery, consulte esta página.
- Para saber como criar tabelas particionadas, consulte Criar tabelas particionadas.