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
Dans la console Cloud, 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
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:
- 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 du 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 permettant de 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 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:
- 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 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:
- 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 le nombre de jours pendant lesquels vous souhaitez conserver des partitions.
(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:
- 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 selon laquelle vous souhaitez mettre la table en cluster.
(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
- Pour savoir comment réutiliser du code avec des inclusions, consultez Réutiliser des variables et des fonctions avec des inclusions.
- Pour savoir comment configurer des tables incrémentielles, consultez Configurer une table incrémentielle.