Charger des données partitionnées externes

BigQuery peut charger des données stockées dans Cloud Storage à l'aide d'une configuration de partitionnement Hive. Le partitionnement Hive signifie que les données externes sont organisées en plusieurs fichiers, avec une convention d'attribution de noms permettant de séparer les fichiers dans différentes partitions. Pour en savoir plus, consultez la section Configurations de données compatibles.

Par défaut, les données ne sont pas partitionnées dans BigQuery après leur chargement, sauf si vous créez explicitement une table partitionnée.

Charger des données partitionnées Hive

Pour charger des données partitionnées Hive, choisissez l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, développez votre projet et sélectionnez un ensemble de données.
  3. Cliquez sur Afficher les actions, puis sur Créer une table. Le volet Créer une table s'ouvre.
  4. Dans la section Source, spécifiez les détails suivants :
    1. Pour le champ Créer une table à partir de, sélectionnez Google Cloud Storage.
    2. Dans le champ Sélectionner un fichier à partir d'un bucket Cloud Storage, saisissez le chemin d'accès au dossier Cloud Storage, en utilisant des caractères génériques. Exemple : my_bucket/my_files*. Le bucket Cloud Storage doit se trouver au même emplacement que l'ensemble de données contenant la table que vous souhaitez créer, modifier ou écraser.
    3. Dans la liste Format de fichier, sélectionnez le type de fichier.
    4. Cochez la case Partitionnement des données source, puis, pour Sélectionner le préfixe d'URI source, saisissez le préfixe d'URI Cloud Storage. Exemple : gs://my_bucket/my_files.
    5. Dans la section Mode d'inférence de la partition, sélectionnez l'une des options suivantes :
      • Déduire automatiquement les types pour définir le mode de détection du schéma de partition sur AUTO.
      • Toutes les colonnes sont des chaînes pour définir le mode de détection du schéma de partition sur STRINGS.
      • Fournir ma propre définition pour définir le mode de détection du schéma de partition sur CUSTOM et saisir manuellement les informations de schéma pour les clés de partition. Pour plus d'informations, consultez la section Fournir un schéma de clé de partitionnement personnalisé.
    6. (Facultatif) Pour exiger un filtre de partitionnement sur toutes les requêtes de cette table, cochez la case Demander un filtre de partitionnement. Ce type de filtre peut contribuer à réduire les coûts et à améliorer les performances. Pour en savoir plus, consultez la section Exiger des filtres de prédicat sur les clés de partitionnement dans les requêtes.
  5. Dans la section Destination, spécifiez les détails suivants :
    1. Pour Projet, sélectionnez le projet dans lequel vous souhaitez créer la table.
    2. Pour Ensemble de données, sélectionnez l'ensemble de données dans lequel vous souhaitez créer la table.
    3. Pour le champ Table, saisissez le nom de la table que vous souhaitez créer.
    4. Pour Type de table, sélectionnez Table native.
  6. Dans la section Schéma, saisissez la définition du schéma.
  7. Pour activer la détection automatique du schéma, sélectionnez Détection automatique.
  8. Pour ignorer les lignes dont les valeurs de colonnes supplémentaires ne correspondent pas au schéma, développez la section Options avancées et sélectionnez Valeurs inconnues.
  9. Cliquez sur Créer une table.

SQL

Pour créer une table partitionnée en externe, utilisez la clause WITH PARTITION COLUMNS de l'instruction LOAD DATA pour spécifier les détails du schéma de partition.

Pour obtenir un exemple, consultez la section Charger un fichier partitionné en externe.

bq

Chargez des données partitionnées Hive à l'aide de la détection automatique du type de clé de partitionnement :

bq load --source_format=ORC --hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Chargez des données partitionnées Hive à l'aide de la détection de clés de partitionnement string-typed :

bq load --source_format=CSV --autodetect \
--hive_partitioning_mode=STRINGS \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Chargez des données partitionnées Hive à l'aide d'un schéma de clé de partitionnement personnalisé encodé à l'aide du champ source\_uri\_prefix :

bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \
dataset.table gcs_uris file_schema

Le schéma de clé de partitionnement est encodé immédiatement après le préfixe URI source. Utilisez le schéma suivant pour spécifier --hive_partitioning_source_uri_prefix :

--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}

API

L'assistance pour le partitionnement Hive existe en définissant HivePartitioningOptions sur JobConfigurationLoad.

Effectuer des chargements incrémentiels

Tenez compte de la configuration des données suivante :

gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4

Pour charger uniquement les données du 31-10-2019, procédez comme suit :

  • Définissez le mode de partitionnement Hive sur AUTO, STRINGS ou CUSTOM.
  • Définissez le préfixe d'URI source sur gs://my_bucket/my_table/ pour les modes de partitionnement Hive AUTO ou STRINGS. Pour CUSTOM, indiquez gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilisez les URI gs://my_bucket/my_table/dt=2019-10-31/*.
  • Les données sont chargées avec les colonnes dt et val incluses, avec les valeurs 2019-10-31 et 1, respectivement.

Pour charger uniquement les données de certains fichiers, procédez comme suit :

  • Définissez le mode de partitionnement Hive sur AUTO, STRINGS ou CUSTOM.
  • Définissez le préfixe d'URI source sur gs://my_bucket/my_table/ pour les modes de partitionnement Hive AUTO ou STRINGS. Pour CUSTOM, indiquez gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilisez les URI gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4.
  • Les données sont chargées à partir des deux fichiers, et les colonnes dt et val sont renseignées.

Schéma de partition

Les sections suivantes décrivent la configuration de partitionnement Hive par défaut et les modes de détection de schéma compatibles avec BigQuery.

Configurations de données compatibles

Les clés de partitionnement Hive s'affichent comme des colonnes normales lorsque vous interrogez des données depuis Cloud Storage. Les données doivent suivre une configuration de partitionnement Hive par défaut. Par exemple, les fichiers suivants suivent la configuration par défaut (les paires clé/valeur sont configurées en tant que répertoires avec un signe "égal" (=) en tant que séparateur), et les clés de partitionnement sont toujours dans le même ordre :

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename

Le préfixe d'URI source commun utilisé dans cet exemple est gs://my_bucket/my_table.

Configurations de données non compatibles

Si les noms des clés de partitionnement ne sont pas encodés dans le chemin d'accès au répertoire, la détection du schéma de partition échoue. Par exemple, considérons le chemin d'accès suivant, qui n'encode pas les noms des clés de partitionnement :

gs://my_bucket/my_table/2019-10-31/en/my_filename

Les fichiers dans lesquels le schéma n'est pas dans un ordre cohérent ne vont pas être détectés. Par exemple, considérons les deux fichiers suivants qui contiennent des encodages de clés de partitionnement inversés :

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename

Modes de détection

BigQuery accepte trois modes de détection de schéma de partition Hive :

  • AUTO : les noms et types de clés sont détectés automatiquement. Les types suivants peuvent être détectés : STRING, INTEGER, DATE et TIMESTAMP.
  • STRINGS : les noms de clés sont automatiquement convertis en type STRING.
  • CUSTOM : le schéma de clé de partitionnement est encodé comme spécifié dans le préfixe d'URI source.

Schéma de clé de partitionnement personnalisé

Pour utiliser un schéma CUSTOM, vous devez le spécifier dans le champ du préfixe d'URI source. L'utilisation d'un schéma CUSTOM vous permet de spécifier le type de chaque clé de partitionnement. Les valeurs doivent être valablement analysées en tant que type spécifié, sinon la requête échoue.

Par exemple, si vous définissez l'option source_uri_prefix sur gs://my_bucket/my_table/{dt:DATE}/{val:STRING}, BigQuery traite val comme une CHAÎNE, dt comme une DATE, et utilise gs://my_bucket/my_table comme préfixe d'URI source pour les fichiers correspondants.

Limites

  • La compatibilité avec le partitionnement Hive est basée sur un préfixe d'URI source commun à tous les URI, qui se termine immédiatement avant l'encodage de partition, comme suit : gs://BUCKET/PATH_TO_TABLE/.
  • La structure du répertoire d'une table partitionnée Hive est supposée contenir des clés de partitionnement identiques s'affichant dans le même ordre, avec maximum dix clés de partitionnement par table.
  • Les données doivent respecter une configuration de partitionnement Hive par défaut.
  • Les clés de partitionnement Hive et les colonnes des fichiers sous-jacents ne peuvent pas se chevaucher.
  • L'assistance n'est fournie que pour le langage GoogleSQL.

  • Toutes les limites de chargement à partir de Cloud Storage s'appliquent.

Étapes suivantes