Créer des partitions et des clusters de table

Ce document explique comment créer des partitions et des clusters de table à l'aide de Dataform Core.

BigQuery accepte les tables partitionnées et le clustering de tables. Pour plus d'informations sur les partitions et les clusters dans BigQuery, consultez les pages Présentation des tables partitionnées et Créer et utiliser des tables en cluster.

Avant de commencer

  1. Dans la console Cloud, accédez à la page Dataform.

    Accéder à la page Dataform

  2. Sélectionnez ou créez un dépôt.

  3. Sélectionnez ou créez un espace de travail de développement.

  4. Créez une table.

Rôles requis

Afin d'obtenir les autorisations nécessaires pour configurer des partitions et des clusters de table, demandez à votre administrateur de vous attribuer le rôle IAM Éditeur Dataform (roles/dataform.editor) sur les espaces de travail. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer une partition de table

Pour créer une partition de table, ajoutez une expression partition_expression BigQuery au bloc bigquery dans un fichier SQLX de définition de table.

Pour créer une partition de table, procédez comme suit:

  1. Accédez à votre espace de travail de développement.
  2. Dans le volet Fichiers, développez definitions/.
  3. Ouvrez un fichier SQLX de définition de table.
  4. Dans le bloc config, ajoutez le bloc bigquery sous la déclaration du type de table, au format suivant:

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. Dans le bloc bigquery, saisissez l'extrait de code suivant:

        partitionBy: "PARTITION_EXPRESSION"
    

    Remplacez PARTITION_EXPRESSION par une expression permettant de partitionner la table.

  6. (Facultatif) Cliquez sur Format.

L'exemple de code suivant montre comment partitionner une table par heure dans un fichier SQLX de définition de table:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
  }
}

L'exemple de code suivant montre comment partitionner une table dans un fichier SQLX de définition de table en fonction d'une valeur entière:

config {
  type: "table",
  bigquery: {
    partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
  }
}

Définir un filtre de partitionnement

Pour en savoir plus sur le filtre de partitionnement dans BigQuery, consultez la section Définir l'attribut de filtre de partitionnement obligatoire sur une table partitionnée.

Pour définir un filtre de partitionnement, procédez comme suit:

  1. Accédez à votre espace de travail de développement.
  2. Dans le volet Fichiers, développez definitions/.
  3. Ouvrez un fichier SQLX de définition de table partitionnée.
  4. Dans le bloc bigquery, saisissez l'extrait de code suivant:

    requirePartitionFilter : true
    
  5. (Facultatif) Cliquez sur Format.

L'exemple de code suivant montre un filtre de partitionnement défini dans le bloc bigquery d'un fichier SQLX de table partitionnée:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    requirePartitionFilter : true
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

Définir une durée de conservation pour les partitions

Pour contrôler la conservation de toutes les partitions d'une table partitionnée, procédez comme suit:

  1. Accédez à votre espace de travail de développement.
  2. Dans le volet Fichiers, développez definitions/.
  3. Ouvrez un fichier SQLX de définition de table partitionnée.
  4. Dans le bloc bigquery, saisissez l'extrait de code suivant:

    partitionExpirationDays: NUMBER_OF_DAYS
    

    Remplacez NUMBER_OF_DAYS par le nombre de jours pendant lesquels vous souhaitez conserver des partitions.

  5. (Facultatif) Cliquez sur Format.

L'exemple de code suivant montre une durée de conservation pour les partitions définies sur 14 jours dans le bloc bigquery d'un fichier SQLX de table partitionnée:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    partitionExpirationDays: 14,
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

Créer un cluster de tables

Pour créer un cluster de tables, ajoutez une liste BigQuery clustering_column_list au bloc bigquery dans un fichier SQLX de définition de table.

Pour créer un cluster de tables, procédez comme suit:

  1. Accédez à votre espace de travail de développement.
  2. Dans le volet Fichiers, développez definitions/.
  3. Ouvrez un fichier SQLX de définition de table.
  4. Dans le bloc bigquery, saisissez l'extrait de code suivant:

        clusterBy: ["CLUSTER_COLUMN"]
    

    Remplacez CLUSTER_COLUMN par le nom de la colonne selon laquelle vous souhaitez mettre la table en cluster.

  5. (Facultatif) Cliquez sur Format.

L'exemple de code suivant montre une table partitionnée mise en cluster par les colonnes name et revenue:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    clusterBy: ["name", "revenue"]
  }
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue

Étapes suivantes