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 du runtime 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.

    Rôles requis pour activer les API

    Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au 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 de la table en mode de distribution des identifiants : Lecteur BigLake (roles/biglake.viewer) : projet
  • Lisez les données du tableau en mode sans distribution d'identifiants :
    • Lecteur BigLake (roles/biglake.viewer) : 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 tableaux

Lorsque vous utilisez des tables dans le catalogue Lakehouse Runtime, 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 (bêta) sont acceptées. Les tables Iceberg V1 ne sont pas acceptées. Pour mettre à niveau les tables V1 existantes, consultez Mettre à niveau les tables Iceberg V1 vers V2.

Utiliser les options de tableau (aperçu)

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ù le tableau est créé :

  • Depuis BigQuery : le langage DML 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 des tables. Pour en savoir plus, consultez Configurer les options de tableau.

Lorsque vous interrogez des tables depuis BigQuery, vous pouvez accéder aux tables Iceberg standards ainsi qu'aux tables compatibles avec les fonctionnalités gérées de BigQuery. Pour obtenir des instructions détaillées, consultez Configurer les options du tableau.

Exécuter des requêtes sur une table

Sélectionnez toutes les données du tableau :

Spark

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

Trino

SELECT * FROM TABLE_NAME;

BigQuery

Pour interroger des tables Apache Iceberg dans le catalogue du runtime Lakehouse depuis 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 :Google Cloud projet propriétaire du catalogue dans le catalogue du runtime 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 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 celui de votre bucket sont tous les deux iceberg-bucket. Vous l'utiliserez 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 effectuer un 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é, d'horodatages, 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 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