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 depuis BigQuery à l'aide d'une syntaxe de nom de table en quatre parties (syntaxe P.C.N.T).
Avant de commencer
-
Vérifiez que la facturation est activée pour votre Google Cloud projet.
-
Activez l'API BigLake.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin 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 d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles. - 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 :
-
Lire les données de table en mode de distribution des identifiants : Lecteur BigLake (
roles/biglake.viewer) – le projet -
Lire les données de table en mode de non-distribution des identifiants :
- Lecteur BigLake (
roles/biglake.viewer) – le projet - Lecteur des objets Storage (
roles/storage.objectViewer) – le bucket Cloud Storage
- Lecteur BigLake (
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 via 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 (DG) 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 V2.
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 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'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 CloudCATALOG_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 deuxiceberg-bucket. Cette valeur sera utilisée ultérieurement 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.
Interroger à l'aide des 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.
Interroger par horodatage
Pour interroger les 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';
Interroger par ID d'instantané
Pour interroger les données à partir d'un ID d'instantané spécifique :
Spark
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 10963874102873;
Interroger 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';
Interroger 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';
Étape suivante
- Découvrez comment modifier une table.