Criar clusters e partições de tabelas

Neste documento, mostramos como usar o Dataform Core 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 a tabelas particionadas e Como criar e usar tabelas em cluster.

Antes de começar

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

    Acessar 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 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:

  1. Acesse seu espaço de trabalho de desenvolvimento.
  2. No painel Files, expanda 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 no seguinte formato:

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

        partitionBy: "PARTITION_EXPRESSION"
    

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

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

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

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

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

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

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

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