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 a 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 clusters e partições de tabelas,
peça ao administrador para conceder a você o
papel do IAM de Editor do Dataform (roles/dataform.editor
) nos espaços de trabalho.
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Talvez você também consiga receber as permissões necessárias por meio de papéis personalizados ou 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, expanda
definitions/
. - Abra um arquivo SQLX de definição de tabela.
No bloco
config
, adicione o blocobigquery
abaixo da declaração de tipo de tabela no seguinte formato:config { type: "table", bigquery: { } }
No bloco
bigquery
, insira este snippet de código:partitionBy: "PARTITION_EXPRESSION"
Substitua PARTITION_EXPRESSION por uma expressão para particionar a tabela.
Opcional: clique em Formatar.
Veja no exemplo de código a seguir 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 "Exigir filtro de partição" 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, expanda
definitions/
. - Abra um arquivo SQLX de definição de tabela particionada.
No bloco
bigquery
, insira este snippet de código:requirePartitionFilter : true
Opcional: clique em Formatar.
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 armazenamento 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, expanda
definitions/
. - Abra um arquivo SQLX de definição de tabela particionada.
No bloco
bigquery
, insira este snippet de código:partitionExpirationDays: NUMBER_OF_DAYS
Substitua NUMBER_OF_DAYS pelo número de dias pelas quais você quer reter as partições.
Opcional: clique em Formatar.
O exemplo de código a seguir mostra um período de armazenamento para partições definidas 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 tabela
Para criar um cluster de tabela, adicione uma clustering_column_list do BigQuery ao bloco bigquery
em um arquivo SQLX de definição de tabela.
Para criar um cluster de tabela, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, expanda
definitions/
. - Abra um arquivo SQLX de definição de tabela.
No bloco
bigquery
, insira este snippet de código:clusterBy: ["CLUSTER_COLUMN"]
Substitua CLUSTER_COLUMN pelo nome da coluna pela qual você quer agrupar a tabela.
Opcional: clique em Formatar.
O exemplo de código a seguir mostra uma tabela particionada agrupada pelas 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 o código com inclusões, consulte Reutilizar variáveis e funções com inclusões.
- Para saber como configurar tabelas incrementais, consulte Configurar uma tabela incremental.