Interroger les données Blob Storage

Ce document explique comment interroger des données stockées dans une table BigLake Azure Blob Storage.

Avant de commencer

Assurez-vous de disposer d'une table BigLake Blob Storage.

Rôles requis

Pour interroger des tables BigLake Blob Storage, 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 Blob Storage. 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 Blob Storage, développez la section Autorisations requises :

Autorisations requises

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Interroger les tables BigLake Blob Storage

Après avoir créé une table BigLake Blob Storage, 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 la table BigLake Blob Storage :

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

    Accéder à BigQuery

  2. 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 table BigLake que vous avez créé.

    • Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

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 :

  1. Créez un objet Job.
  2. Appeler la méthode jobs.insert pour exécuter la requête de manière asynchrone ou la méthode jobs.query pour exécuter la requête de manière synchrone, en transmettant l'objet Job.
  3. Lisez les lignes à l'aide de jobs.getQueryResults en transmettant la référence de job donnée, et les méthodes tabledata.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.

Étapes suivantes