Gérer les données de tables partitionnées
Ce document explique comment gérer les données de tables partitionnées dans BigQuery.
Décorateurs de partition
Les décorateurs de partition vous permettent de référencer une partition dans une table. Par exemple, vous pouvez les utiliser pour écrire des données dans une partition spécifique.
Un décorateur de partition se présente sous la forme table_name$partition_id
, où le format du segment partition_id
dépend du type de partitionnement :
Type de partitionnement | Format | Exemple |
---|---|---|
Horaire | yyyymmddhh |
my_table$2021071205 |
Journalier | yyyymmdd |
my_table$20210712 |
Mensuel | yyyymm |
my_table$202107 |
Annuel | yyyy |
my_table$2021 |
Plage d'entiers | range_start |
my_table$40 |
Parcourir les données d'une partition
Pour parcourir les données dans une partition spécifiée, utilisez la commande bq head
avec un décorateur de partition.
Par exemple, la commande suivante répertorie tous les champs des 10 premières lignes de my_dataset.my_table
dans la partition 2018-02-24 :
bq head --max_rows=10 'my_dataset.my_tablee$20180224'
Écrire des données sur une partition spécifique
Vous pouvez charger des données dans une partition spécifique à l'aide de la commande bq load
avec un décorateur de partition. L'exemple suivant écrit des données dans la partition 20160501
(1er mai 2016) d'une table existante, en supposant que la table est déjà partitionnée par date :
bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv
Vous pouvez également écrire les résultats d'une requête dans une partition spécifique :
bq query \ --use_legacy_sql=false \ --destination_table='my_table$20160501' \ --append_table=true \ 'SELECT * FROM my_dataset.another_table'
Avec le partitionnement par date d'ingestion, vous pouvez utiliser cette technique pour charger des données plus anciennes dans la partition correspondant à l'heure à laquelle les données ont été créées à l'origine.
Vous pouvez également utiliser cette technique pour ajuster les fuseaux horaires. Par défaut, les partitions par date d'ingestion sont basées sur l'heure UTC. Si vous souhaitez que l'heure de partition corresponde à un fuseau horaire particulier, vous pouvez utiliser des décorateurs de partitions pour décaler le temps d'ingestion UTC. Par exemple, si vous êtes à l'heure normale du Pacifique (PST), vous pouvez charger les données générées le 1er mai 2016 PST dans la partition pour cette date, à l'aide du décorateur de partition correspondant : $20160501
.
Pour les tables partitionnées par colonnes d'unités de temps et par plages d'entiers, l'ID de partition spécifié dans le décorateur doit correspondre aux données en cours d'écriture. Par exemple, si la table est partitionnée suivant une colonne DATE
, le décorateur doit correspondre à la valeur de cette colonne. Dans le cas contraire, une erreur se produit. Toutefois, si vous savez au préalable que vos données se trouvent dans une seule partition, la spécification du décorateur de partition peut améliorer les performances d'écriture.
Pour en savoir plus sur le chargement des données, consultez la page intitulée Présentation du chargement de données dans BigQuery.
Diffuser des données en flux continu dans des tables partitionnées
Pour en savoir plus sur la diffusion de données en flux continu dans une table partitionnée à l'aide de la méthode tabledata.insertAll
, consultez la section Diffuser des données en flux continu dans des tables partitionnées.
Les exporter
La procédure d'exportation de l'intégralité des données à partir d'une table partitionnée est identique à l'exportation de données à partir d'une table non partitionnée. Pour en savoir plus, consultez la page Exporter des données de table.
Pour exporter les données d'une partition individuelle, ajoutez le décorateur de partition au nom de la table. Par exemple, my_table$20160201
.
Vous pouvez également exporter les données des partitions __NULL__
et __UNPARTITIONED__
en ajoutant les noms des partitions au nom de la table. Par exemple, my_table$__NULL__
ou my_table$__UNPARTITIONED__
.
Sécurité des tables partitionnées
Le contrôle d'accès des tables partitionnées est identique à celui des tables standards. Pour plus d'informations, consultez la page Présentation des contrôles d'accès aux tables.
Étapes suivantes
Pour plus d'informations sur l'utilisation des tables partitionnées, consultez les pages suivantes :