Exécuter des requêtes sur une table

Lorsque vous interrogez une table, vous lisez les données des fichiers Cloud Storage sous-jacents à l'aide des métadonnées gérées par le catalogue d'exécution Lakehouse.

Vous pouvez exécuter des requêtes à partir de moteurs Open Source tels que Spark et Trino, ou directement à partir de 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 Google Cloud projet.

  2. Activez l'API BigLake.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer l'API

  3. Configurez le catalogue 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 :

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'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.

Tables Iceberg compatibles

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

Utiliser les options de table (bêta)

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 :

  • À partir de BigQuery : le LMD BigQuery et la gestion automatique des tables sont activés par défaut.
  • À partir de moteurs Open Source : pour activer ces fonctionnalités, 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 pour lesquelles les fonctionnalités gérées de BigQuery sont activées. 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'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 : projet propriétaire du catalogue dans le catalogue d'exécution Lakehouse.Google Cloud Le projet sélectionné dans la console est facturé pour la requête. Google Cloud Google Cloud

  • CATALOG_ID: ID du catalogue 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 correspond également au 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 le nom de votre bucket sont tous deux iceberg-bucket. Vous l'utiliserez plus tard lorsque vous interrogerez votre catalogue dans BigQuery à l'aide de la syntaxe P.C.N.T. Par 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.

Requête utilisant les fonctionnalités temporelles

Vous pouvez interroger les données historiques de vos tables Lakehouse Iceberg à l'aide des fonctionnalités temporelles. Vous pouvez utiliser les fonctionnalités temporelles à partir de BigQuery à l'aide de la FOR SYSTEM_TIME AS OF clause, ou à partir de moteurs Open Source tels que Spark à l'aide d'ID d'instantané , d'horodatages, de tags ou de branches.

Requête par horodatage

Pour interroger des données à partir d'un horodatage 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';

Requête 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 des 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 des 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';

Étape suivante