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 :