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
Dans la console Google Cloud, accédez à BigQuery.
- Dans le volet Explorateur, développez votre projet et sélectionnez un ensemble de données.
- Cliquez sur Afficher les actions, puis sur Créer une table. Le volet Créer une table s'ouvre.
- Dans la section Source, spécifiez les détails suivants :
- Pour le champ Créer une table à partir de, sélectionnez Google Cloud Storage.
- 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. - Dans la liste Format de fichier, sélectionnez le type de fichier.
- 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
. - 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é.
- Déduire automatiquement les types pour définir le mode de détection du schéma de partition sur
- (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.
- Dans la section Destination, spécifiez les détails suivants :
- Pour Projet, sélectionnez le projet dans lequel vous souhaitez créer la table.
- Pour Ensemble de données, sélectionnez l'ensemble de données dans lequel vous souhaitez créer la table.
- Pour le champ Table, saisissez le nom de la table que vous souhaitez créer.
- Pour Type de table, sélectionnez Table native.
- Dans la section Schéma, saisissez la définition du schéma.
- Pour activer la détection automatique du schéma, sélectionnez Détection automatique.
- 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.
- 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
ouCUSTOM
. - Définissez le préfixe d'URI source sur
gs://my_bucket/my_table/
pour les modes de partitionnement HiveAUTO
ouSTRINGS
. Pour CUSTOM, indiquezgs://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
etval
incluses, avec les valeurs2019-10-31
et1
, respectivement.
Pour charger uniquement les données de certains fichiers, procédez comme suit :
- Définissez le mode de partitionnement Hive sur
AUTO
,STRINGS
ouCUSTOM
. - Définissez le préfixe d'URI source sur
gs://my_bucket/my_table/
pour les modes de partitionnement HiveAUTO
ouSTRINGS
. PourCUSTOM
, indiquezgs://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
etval
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:STRINGS
: les noms de clés sont automatiquement convertis en typeSTRING
.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
- Apprenez-en plus sur les tables partitionnées.
- Découvrez comment utiliser SQL dans BigQuery.