Interroger des données Drive
Ce document explique comment interroger des données stockées dans une table externe Google Drive.
BigQuery est compatible avec les requêtes portant sur les fichiers Drive personnels et les fichiers partagés. Pour en savoir plus sur Drive, consultez les supports de formation et articles d'aide Google Drive.
Vous pouvez interroger les données Drive à partir d'une table externe permanente ou d'une table externe temporaire que vous créez lors de l'exécution de la requête.
Limites
Pour en savoir plus sur les limites liées aux tables externes, consultez la section Limites des tables externes.
Rôles requis
Pour interroger des tables externes Drive, assurez-vous de disposer des rôles suivants :
- Lecteur de données BigQuery (
roles/bigquery.dataViewer
) - Utilisateur BigQuery (
roles/bigquery.user
)
Selon vos autorisations, vous pouvez vous attribuer ces rôles ou demander à votre administrateur de vous les accorder. Pour en savoir plus sur l'attribution de rôles, consultez la page Afficher les rôles pouvant être attribués sur des ressources.
Pour afficher les autorisations BigQuery exactes requises pour interroger des tables externes, développez la section Autorisations requises :
Autorisations requises
bigquery.jobs.create
bigquery.readsessions.create
(obligatoire seulement si vous lisez des données avec l'API BigQuery Storage Read)bigquery.tables.get
bigquery.tables.getData
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Autorisations Drive
Au minimum, pour interroger des données externes dans Drive, vous devez disposer de l'accès View
au fichier Drive associé à la table externe.
Champs d'application des instances Compute Engine
Lorsque vous créez une instance Compute Engine, vous pouvez spécifier une liste de champs d'application pour celle-ci. Les champs d'application contrôlent l'accès de l'instance aux produits Google Cloud, y compris Drive. Les applications exécutées sur la VM utilisent le compte de service pour appeler les API Google Cloud.
Si vous configurez une instance Compute Engine pour qu'elle s'exécute en tant que compte de service et que ce compte accède à une table externe associée à une source de données Drive, vous devez ajouter à l'instance le champ d'application OAuth pour Drive (https://www.googleapis.com/auth/drive.readonly
).
Pour en savoir plus sur l'attribution de champs d'application à une instance Compute Engine, consultez la section Modifier le compte de service et les champs d'application d'accès d'une instance. Pour en savoir plus sur les comptes de service Compute Engine, consultez la page Comptes de service.
Interroger des données Drive à l'aide de tables externes permanentes
Après avoir créé une table externe Drive, vous pouvez l'interroger à l'aide de la syntaxe GoogleSQL, comme s'il s'agissait d'une table BigQuery standard. Par exemple, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Interroger des données Drive à l'aide de tables temporaires
L'interrogation d'une source de données externe à l'aide d'une table temporaire est utile pour les requêtes ad hoc ponctuelles qui sont exécutées sur des données externes ou pour les processus d'extraction, de transformation et de chargement (ETL, Extract-Transform-Load).
Pour interroger une source de données externe sans créer de table permanente, vous devez fournir une définition de table pour la table temporaire, puis l'utiliser dans une commande ou un appel pour interroger la table temporaire. Vous pouvez fournir la définition de la table de l'une des manières suivantes :
- Un fichier de définition de table
- Une définition de schéma intégrée
- Un fichier de schéma JSON
Le fichier de définition de table ou le schéma fourni est utilisé pour créer la table externe temporaire, sur laquelle la requête s'exécute.
En cas d'utilisation d'une table externe temporaire, vous ne créez pas de table dans l'un de vos ensembles de données BigQuery. La table n'étant pas stockée de manière permanente dans un ensemble de données, elle ne peut pas être partagée avec d'autres utilisateurs.
Créer et interroger des tables temporaires
Vous pouvez créer et interroger une table temporaire associée à une source de données externe à l'aide de l'outil de ligne de commande bq, de l'API ou des bibliothèques clientes.
bq
L'option --external_table_definition
permet d'interroger une table temporaire associée à une source de données externe à l'aide de la commande bq query
. Lorsque vous utilisez l'outil de ligne de commande bq pour interroger une table temporaire associée à une source de données externe, vous pouvez spécifier le schéma de la table à l'aide de l'une des méthodes suivantes :
- Un fichier de définition de table (stocké sur l'ordinateur local)
- Une définition de schéma intégrée
- Un fichier de schéma JSON (stocké sur l'ordinateur local)
Pour interroger une table temporaire associée à votre source de données externe à l'aide d'un fichier de définition de table, saisissez la commande suivante :
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Où :
LOCATION
correspond à votre emplacement. L'option--location
est facultative.TABLE
est le nom de la table temporaire que vous créez.DEFINITION_FILE
correspond au chemin d'accès du fichier de définition de table sur votre machine locale.QUERY
correspond à la requête que vous soumettez à la table temporaire.
Par exemple, la commande suivante permet de créer et d'interroger une table temporaire nommée sales
à l'aide du fichier de définition de table sales_def
.
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Pour interroger une table temporaire associée à votre source de données externe à l'aide d'une définition de schéma intégrée, saisissez la commande suivante :
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Où :
LOCATION
correspond à votre emplacement. L'option--location
est facultative.TABLE
est le nom de la table temporaire que vous créez.SCHEMA
correspond à la définition de schéma spécifiée sur la ligne de commande au formatFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
estCSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouGOOGLE_SHEETS
.DRIVE_URI
est votre URI Drive.QUERY
est la requête que vous soumettez à la table temporaire.
Par exemple, la commande suivante crée et interroge une table temporaire appelée sales
qui est associée à un fichier CSV stocké dans Drive avec la définition de schéma suivante : Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq --location=US query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Region,Total_sales
FROM
sales'
Pour interroger une table temporaire associée à votre source de données externe à l'aide d'un fichier de schéma JSON, saisissez la commande suivante :
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Où :
LOCATION
correspond à votre emplacement. L'option--location
est facultative.SCHEMA_FILE
correspond au chemin d'accès vers le fichier de schéma JSON sur votre ordinateur local.SOURCE_FILE
estCSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouGOOGLE_SHEETS
.DRIVE_URI
est votre URI Drive.QUERY
est la requête que vous soumettez à la table temporaire.
Par exemple, la commande suivante crée et interroge une table temporaire nommée sales
, qui est associée à un fichier CSV stocké dans Drive à l'aide du fichier de schéma /tmp/sales_schema.json
.
bq query \
--external_table_definition=sales::/tmp/sales_schema.json@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Total_sales
FROM
sales'
API
Créez une configuration de tâche de requête. Pour savoir comment appeler
jobs.query
etjobs.insert
, consultez la page Interroger des données.Spécifiez la source de données externe en créant une configuration
ExternalDataConfiguration
.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Dépannage
Chaîne d'erreur : Resources exceeded during query execution: Google Sheets service
overloaded.
Il peut s'agir d'une erreur temporaire que vous pouvez corriger en réexécutant la requête. Si l'erreur persiste après une nouvelle exécution de la requête, envisagez de simplifier votre feuille de calcul, par exemple, en minimisant l'utilisation de formules. Pour en savoir plus, consultez la section Limites des tables externes.
Étape suivante
- Découvrez comment utiliser SQL dans BigQuery.
- Documentez-vous sur les tables externes.
- Apprenez-en plus sur les quotas BigQuery.