Criar partições e clusters de tabelas

Este documento mostra como usar o núcleo do Dataform para criar partições e clusters de tabelas.

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

  1. No Console do Cloud, acesse a página Dataform.

    Acesse a página do Dataform

  2. Selecione ou crie um repositório.

  3. Selecione ou crie um espaço de trabalho de desenvolvimento.

  4. Crie uma tabela.

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:

  1. Acesse seu espaço de trabalho de desenvolvimento.
  2. No painel Files, abra definitions/.
  3. Abra um arquivo SQLX de definição de tabela.
  4. No bloco config, adicione o bloco bigquery abaixo da declaração de tipo de tabela neste formato:

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. No bloco bigquery, insira o seguinte snippet de código:

        partitionBy: "PARTITION_EXPRESSION"
    

    Substitua PARTITION_EXPRESSION por uma expressão para particionar a tabela.

  6. 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:

  1. Acesse seu espaço de trabalho de desenvolvimento.
  2. No painel Files, abra definitions/.
  3. Abra um arquivo SQLX de definição de tabela particionada.
  4. No bloco bigquery, insira o seguinte snippet de código:

    requirePartitionFilter : true
    
  5. 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:

  1. Acesse seu espaço de trabalho de desenvolvimento.
  2. No painel Files, abra definitions/.
  3. Abra um arquivo SQLX de definição de tabela particionada.
  4. 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.

  5. 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:

  1. Acesse seu espaço de trabalho de desenvolvimento.
  2. No painel Files, abra definitions/.
  3. Abra um arquivo SQLX de definição de tabela.
  4. 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.

  5. 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