O BigQuery oferece suporte a tabelas particionadas e clustering de tabelas. Para mais informações sobre partições e clusters no BigQuery, consulte Introdução às tabelas particionadas e Como criar e usar tabelas em cluster.
Antes de começar
No Console do Cloud, acesse a página Dataform.
Selecione ou crie um repositório.
Selecione ou crie um espaço de trabalho de desenvolvimento.
Funções exigidas
Para receber as permissões necessárias para configurar partições e clusters de tabelas,
peça ao administrador que conceda a você o papel do IAM
Editor de formulário de dados (roles/dataform.editor
) nos espaços de trabalho.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar uma partição de tabela
Para criar uma partição de tabela, adicione uma partition_expression do BigQuery ao bloco bigquery
em um arquivo SQLX de definição de tabela.
Para criar uma partição de tabela, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, abra
definitions/
. - Abra um arquivo SQLX de definição de tabela.
No bloco
config
, adicione o blocobigquery
abaixo da declaração de tipo de tabela neste formato:config { type: "table", bigquery: { } }
No bloco
bigquery
, insira o seguinte snippet de código:partitionBy: "PARTITION_EXPRESSION"
Substitua PARTITION_EXPRESSION por uma expressão para particionar a tabela.
Opcional: clique em Formato.
O exemplo de código a seguir mostra o particionamento de uma tabela por hora em um arquivo SQLX de definição de tabela:
config {
type: "table",
bigquery: {
partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
}
}
O exemplo de código a seguir mostra o particionamento de uma tabela por um valor inteiro em um arquivo SQLX de definição de tabela:
config {
type: "table",
bigquery: {
partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
}
}
Definir um filtro de partição
Para mais informações sobre o filtro de partição no BigQuery, consulte Como definir o atributo "require partition filter" em uma tabela particionada.
Para definir um filtro de partição, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, abra
definitions/
. - Abra um arquivo SQLX de definição de tabela particionada.
No bloco
bigquery
, insira o seguinte snippet de código:requirePartitionFilter : true
Opcional: clique em Formato.
O exemplo de código a seguir mostra um filtro de partição definido no bloco bigquery
de um arquivo SQLX de tabela particionada:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
requirePartitionFilter : true
}
}
SELECT CURRENT_TIMESTAMP() AS ts
Definir um período de retenção para partições
Para controlar a retenção de todas as partições em uma tabela particionada, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, abra
definitions/
. - Abra um arquivo SQLX de definição de tabela particionada.
No bloco
bigquery
, insira o seguinte snippet de código:partitionExpirationDays: NUMBER_OF_DAYS
Substitua NUMBER_OF_DAYS pelo número de dias em que você quer manter as partições.
Opcional: clique em Formato.
O exemplo de código a seguir mostra um período de retenção para partições definido como
14 dias no bloco bigquery
de um arquivo SQLX de tabela particionada:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
partitionExpirationDays: 14,
}
}
SELECT CURRENT_TIMESTAMP() AS ts
Criar um cluster de tabelas
Para criar um cluster de tabelas, adicione uma clustering_column_list do BigQuery ao bloco bigquery
em um arquivo SQLX de definição de tabela.
Para criar um cluster de tabelas, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, abra
definitions/
. - Abra um arquivo SQLX de definição de tabela.
No bloco
bigquery
, insira o seguinte snippet de código:clusterBy: ["CLUSTER_COLUMN"]
Substitua CLUSTER_COLUMN pelo nome da coluna que você quer usar para agrupar a tabela.
Opcional: clique em Formato.
O exemplo de código a seguir mostra uma tabela particionada agrupada por
colunas name
e revenue
:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
clusterBy: ["name", "revenue"]
}
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue
A seguir
- Para saber como reutilizar código com inclusões, consulte Reutilizar código em um único repositório com inclusões.
- Para saber como configurar tabelas incrementais, consulte Configurar uma tabela incremental.