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
Dans Cloud Console, accédez à la page Dataform.
Sélectionnez ou créez un dépôt.
Sélectionnez ou créez un espace de travail de développement.
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:
- Accédez à votre espace de travail de développement.
- Dans le volet Fichiers, développez
definitions/
. - Ouvrez un fichier SQLX de définition de table.
Dans le bloc
config
, ajoutez le blocbigquery
sous la déclaration de type de table au format suivant:config { type: "table", bigquery: { } }
Dans le bloc
bigquery
, saisissez l'extrait de code suivant:partitionBy: "PARTITION_EXPRESSION"
Remplacez PARTITION_EXPRESSION par une expression pour partitionner la table.
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:
- Accédez à votre espace de travail de développement.
- Dans le volet Fichiers, développez
definitions/
. - Ouvrez un fichier SQLX de définition de table partitionnée.
Dans le bloc
bigquery
, saisissez l'extrait de code suivant:requirePartitionFilter : true
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:
- Accédez à votre espace de travail de développement.
- Dans le volet Fichiers, développez
definitions/
. - Ouvrez un fichier SQLX de définition de table partitionnée.
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).
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:
- Accédez à votre espace de travail de développement.
- Dans le volet Fichiers, développez
definitions/
. - Ouvrez un fichier SQLX de définition de table.
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.
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
- Pour savoir comment réutiliser du code avec des inclusions, consultez la section Réutiliser du code dans un seul dépôt avec des inclusions.
- Pour savoir comment configurer des tables incrémentielles, consultez la section Configurer une table incrémentielle.