Exécuter des requêtes sur une table

L'interrogation d'une table lit les données des fichiers Cloud Storage sous-jacents à l'aide des métadonnées gérées par le catalogue d'environnements d'exécution Lakehouse.

Vous pouvez exécuter des requêtes à partir de moteurs Open Source tels que Spark et Trino, ou directement depuis BigQuery à l'aide d'une syntaxe de nom de table en quatre parties (syntaxe P.C.N.T).

Avant de commencer

  1. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  2. Activez l'API BigLake si ce n'est pas déjà fait.

    Rôles requis pour activer les API

    Pour activer des API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer l'API

  3. Configurez le catalogue d'environnements d'exécution Lakehouse avec le point de terminaison du catalogue REST Apache Iceberg.

Rôles requis

Pour obtenir les autorisations nécessaires pour interroger une table, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet et votre bucket de stockage :

  • Lire les données d'une table en mode de distribution des identifiants : Lecteur BigLake (roles/biglake.viewer) - le projet
  • Lisez les données de la table en mode de distribution sans identifiants :
    • Lecteur BigLake (roles/biglake.viewer) : le projet
    • Lecteur des objets Storage (roles/storage.objectViewer) : le bucket Cloud Storage

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

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

Fonctionnalités et compatibilité des tables

Lorsque vous utilisez des tables dans le catalogue d'environnements d'exécution Lakehouse, il est utile de comprendre les différents types de tables et leurs fonctionnalités d'activation. Pour en savoir plus sur l'utilisation des tables Apache Iceberg, consultez Présentation des tables Apache Iceberg.

Tables Iceberg compatibles

Seules les tables Apache Iceberg V2 (disponibilité générale) et V3 (preview) sont acceptées. Les tables Iceberg V1 ne sont pas compatibles. Pour mettre à niveau des tables V1 existantes, consultez Mettre à niveau des tables Iceberg V1 vers la version V2.

Utiliser les options de tableau (preview)

Vous pouvez choisir d'utiliser les fonctionnalités gérées de BigQuery, telles que le langage de manipulation de données (LMD) BigQuery et la gestion automatique des tables, en configurant des propriétés de table spécifiques. Ces fonctionnalités sont activées de différentes manières selon l'endroit où la table est créée :

  • Depuis BigQuery : le LMD BigQuery et la gestion automatique des tables sont activés par défaut.
  • À partir de moteurs Open Source : pour activer cette fonctionnalité, vous devez configurer explicitement les propriétés de la table. Pour en savoir plus, consultez Configurer les options de table.

Lorsque vous interrogez des tables à partir de BigQuery, vous pouvez accéder aux tables Iceberg standards ainsi qu'aux tables activées pour les fonctionnalités gérées de BigQuery. Pour obtenir des instructions détaillées, consultez Configurer les options de table.

Exécuter des requêtes sur une table

Sélectionnez toutes les données de la table :

Spark

spark.sql("SELECT * FROM TABLE_NAME;").show()

Trino

SELECT * FROM TABLE_NAME;

BigQuery

Pour interroger des tables Apache Iceberg dans le catalogue d'environnements d'exécution Lakehouse à partir de BigQuery, utilisez le nom de table en quatre parties dans votre requête au format suivant : PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.

SELECT * FROM `PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;

Remplacez les valeurs suivantes :

  • PROJECT_NAME : projetGoogle Cloud propriétaire du catalogue dans le catalogue d'environnements d'exécution Lakehouse. Le projetGoogle Cloud sélectionné dans la console Google Cloud est facturé pour la requête.

  • CATALOG_ID : ID du catalogue d'environnements d'exécution Lakehouse spécifié lors de la création du catalogue. Cet identifiant est utilisé comme nom de catalogue dans les requêtes BigQuery.

    Cet identifiant est également le nom de votre bucket Cloud Storage.

    Par exemple, si vous avez créé votre bucket pour stocker votre catalogue et que vous l'avez nommé iceberg-bucket, le nom de votre catalogue et celui de votre bucket sont tous deux iceberg-bucket. Il sera utilisé plus tard lorsque vous interrogerez votre catalogue dans BigQuery à l'aide de la syntaxe P.C.N.T. Exemple : my-project.catalog_id.quickstart_namespace.quickstart_table.

  • NAMESPACE_OR_SCHEMA_NAME : espace de noms de la table si vous utilisez Spark ou nom du schéma de la table si vous utilisez Trino.

  • TABLE_NAME : nom de votre table.

Exécuter une requête à l'aide des fonctionnalités temporelles

Vous pouvez interroger les données historiques de vos tables Apache Iceberg gérées à l'aide de la fonctionnalité temporelle. Vous pouvez utiliser le voyage temporel depuis BigQuery à l'aide de la clause FOR SYSTEM_TIME AS OF, ou depuis des moteurs Open Source comme Spark à l'aide d'ID d'instantanés, de codes temporels, de tags ou de branches.

Interroger par code temporel

Pour interroger des données à un code temporel spécifique :

Spark

SELECT * FROM NAMESPACE.TABLE_NAME TIMESTAMP AS OF '2026-02-26 01:21:00';

BigQuery

SELECT * FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` FOR SYSTEM_TIME AS OF '2026-02-26 01:21:00';

Interroger par ID d'instantané

Pour interroger des données à partir d'un ID d'instantané spécifique :

Spark

SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 10963874102873;

Requête par tag

Pour créer un tag et interroger les données à partir de ce tag :

Spark

-- Create tag 'historical-snapshot'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE TAG 'historical-snapshot' AS OF VERSION 123456789012345;

-- Query by tag
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'historical-snapshot';

Requête par branche

Pour créer une branche et interroger les données à partir de cette branche :

Spark

-- Create branch 'audit-branch'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE BRANCH 'audit-branch' AS OF VERSION 123456789012345;

-- Query by branch
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'audit-branch';

Étapes suivantes