Créer des partitions et des clusters de tables

Ce document explique comment utiliser le noyau Dataform pour créer des partitions et des clusters de tables.

BigQuery accepte les tables partitionnées et le clustering de tables. Pour en savoir plus 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 Cloud Console, 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

Pour obtenir les autorisations nécessaires pour configurer les partitions et les clusters de tables, demandez à votre administrateur de vous accorder 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 page Gérer l'accès aux projets, aux dossiers et aux organisations.

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_de_partitionnement 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 de 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 pour 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 par valeur entière dans un fichier SQLX de définition de table:

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 filtrage de partition requis sur une table partitionnée.

Pour définir un filtre de partition, 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 partition 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 la durée de conservation des partitions (en jours).

  5. Facultatif: cliquez sur Format.

L'exemple de code suivant montre une période de conservation des partitions définie 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 clustering_column_list BigQuery 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 par laquelle vous souhaitez regrouper le tableau.

  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

Étape suivante