Interroger les données Amazon S3
Ce document explique comment interroger des données stockées dans une table BigLake Amazon Simple Storage Service (Amazon S3).
Avant de commencer
Assurez-vous de disposer d'une table BigLake Amazon S3.
Rôles requis
Pour interroger des tables BigLake Amazon S3, assurez-vous que l'appelant de l'API BigQuery dispose des rôles suivants :
- Utilisateur de connexion BigQuery (
roles/bigquery.connectionUser
) - Lecteur de données BigQuery (
roles/bigquery.dataViewer
) - Utilisateur BigQuery (
roles/bigquery.user
)
L'appelant peut être votre compte ou un compte de service de connexion Amazon S3. 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 exactes requises pour interroger des tables BigLake Amazon S3, développez la section Autorisations requises :
Autorisations requises
bigquery.connections.use
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.
Interroger les tables BigLake Amazon S3
Après avoir créé une table BigLake Amazon S3, vous pouvez l'interroger à l'aide d'une syntaxe GoogleSQL, comme pour une table BigQuery standard.
Les résultats de requêtes mis en cache sont stockés dans une table temporaire BigQuery. Pour interroger une table BigLake temporaire, consultez la page Interroger une table BigLake temporaire. Pour en savoir plus sur les limites et les quotas de BigQuery Omni, consultez les limites et les quotas.
Lorsque vous créez une réservation dans une région BigQuery Omni, utilisez l'édition Enterprise. Pour savoir comment créer une réservation avec une édition, consultez la section Créer des réservations.
Exécutez une requête sur une table BigLake Amazon S3 :
SQL
Pour interroger la table :
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
SELECT * FROM DATASET_NAME.TABLE_NAME;
Remplacez les éléments suivants :
DATASET_NAME
: nom d'ensemble de données que vous avez créé.TABLE_NAME
: nom de la table que vous avez crééeCliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
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.
Interroger une table temporaire
BigQuery crée des tables temporaires pour stocker les résultats de requête. Pour récupérer le résultat de la requête à partir de tables temporaires, vous pouvez utiliser la console Google Cloud ou l'API BigQuery.
Sélectionnez l'une des options suivantes :
Console
Lorsque vous interrogez une table BigLake qui référence des données cloud externes, vous pouvez consulter les résultats de la requête affichés dans la console Google Cloud.
API
Pour interroger une table BigLake en utilisant l'API, procédez comme suit :
- Créez un objet Job.
- Appeler la méthode
jobs.insert
pour exécuter la requête de manière asynchrone ou la méthodejobs.query
pour exécuter la requête de manière synchrone, en transmettant l'objetJob
. - Lisez les lignes à l'aide de
jobs.getQueryResults
en transmettant la référence de job donnée, et les méthodestabledata.list
en transmettant la référence de table donnée du résultat de la requête.
Interroger la pseudo-colonne _FILE_NAME
Les tables basées sur des sources de données externes donnent accès à une pseudo-colonne intitulée _FILE_NAME
. Cette colonne contient le chemin d'accès complet du fichier auquel appartient la ligne. Elle n'est disponible que pour les tables qui font référence à des données externes stockées dans Cloud Storage, Google Drive, Amazon S3 et Azure Blob Storage.
Le nom de colonne _FILE_NAME
est réservé. Vous ne pouvez donc pas créer de colonne portant ce nom dans vos tables. Pour sélectionner la valeur de _FILE_NAME
, vous devez utiliser un alias. Par exemple, la requête suivante sélectionne _FILE_NAME
en attribuant l'alias fn
à la pseudo-colonne.
bq query \
--project_id=PROJECT_ID \
--use_legacy_sql=false \
'SELECT
name,
_FILE_NAME AS fn
FROM
`DATASET.TABLE_NAME`
WHERE
name contains "Alex"'
Remplacez les éléments suivants :
-
PROJECT_ID
correspond à un ID de projet valide (cette option n'est pas obligatoire si vous utilisez Cloud Shell ou si vous définissez un projet par défaut dans la Google Cloud CLI). -
DATASET
correspond au nom de l'ensemble de données où est stockée la table externe permanente. -
TABLE_NAME
est le nom de la table externe permanente.
Lorsque la requête comporte un prédicat de filtre sur la pseudo-colonne _FILE_NAME
, BigQuery tente d'ignorer les fichiers qui ne correspondent pas au filtre. Des recommandations similaires pour interroger des tables partitionnées par date d'ingestion à l'aide de pseudo-colonnes s'appliquent lors de la construction de prédicats de requête avec la pseudo-colonne _FILE_NAME
.
Étape suivante
- Découvrez comment utiliser SQL dans BigQuery.
- Découvrez BigQuery Omni.
- Obtenez davantage d'informations sur les quotas BigQuery.