Ensembles de données publics Borderless Lakehouse

Borderless Lakehouse vous permet d'interroger des ensembles de données publics en lecture seule diffusés via le point de terminaison du catalogue REST Apache Iceberg dans le cadre du programme d'ensembles de données publicsGoogle Cloud . Vous pouvez connecter BigQuery, Managed Service pour Apache Spark, Trino ou Apache Flink pour combiner ces tables avec vos données privées ou tester des configurations de moteur Open Source sur un point de terminaison de catalogue REST Apache Iceberg actif sans gérer l'infrastructure de stockage.

Google prend en charge le stockage de ces ensembles de données et fournit un accès public aux données via Lakehouse. Vous ne payez que pour les requêtes que vous exécutez sur les données.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Lakehouse API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

Avant de vous connecter à Apache Spark, vous devez disposer des éléments suivants :

Emplacements des ensembles de données publics

Chaque ensemble de données public est stocké dans un emplacement spécifique tel que US ou EU. Les ensembles de données publics Lakehouse sont stockés dans l'emplacement multirégional US. Lorsque vous interrogez un ensemble de données public, assurez-vous que votre emplacement de traitement est compatible avec l'emplacement de l'ensemble de données.

Accéder à des ensembles de données publics à l'aide d'Apache Spark

Étant donné que les ensembles de données publics Lakehouse sont diffusés via le catalogue REST Iceberg, vous pouvez y accéder depuis Apache Spark et d'autres moteurs compatibles. Vous pouvez vous connecter à l'ensemble de données public à l'aide de n'importe quel environnement Spark standard, tel qu'un environnement sur site, Managed Service pour Apache Spark ou d'autres fournisseurs cloud.

Se connecter à Apache Spark

Utilisez les options de configuration suivantes lorsque vous démarrez votre session Spark SQL. Ces options configurent un catalogue nommé lakehouse-sample pointant vers le point de terminaison REST public :

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-gcp-bundle:1.10.0 \
  --conf spark.hadoop.hive.cli.print.header=true \
  --conf spark.sql.catalog.bqms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.bqms.type=rest \
  --conf spark.sql.catalog.bqms.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog \
  --conf spark.sql.catalog.bqms.warehouse=gs://CATALOG_NAME \
  --conf spark.sql.catalog.bqms.header.x-goog-user-project=PROJECT_ID \
  --conf spark.sql.catalog.bqms.rest.auth.type=google \
  --conf spark.sql.catalog.bqms.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO \
  --conf spark.sql.catalog.bqms.header.X-Iceberg-Access-Delegation=vended-credentials \
  --conf spark.sql.defaultCatalog=lakehouse-sample

Remplacez les éléments suivants :

Se connecter avec PySpark et Managed Service pour Apache Spark

Vous pouvez également utiliser un notebook Spark géré et sans serveur dans Managed Service pour Apache Spark pour interroger les tables sans créer ni gérer de cluster :

from google.cloud.dataproc_v1 import Session
from google.cloud.dataproc_spark_connect import DataprocSparkSession

PROJECT_ID = "PROJECT_ID"
spark_catalog = "CATALOG_NAME"

session = Session()
session.runtime_config.properties = {
  "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
  f"spark.sql.catalog.{spark_catalog}": "org.apache.iceberg.spark.SparkCatalog",
  f"spark.sql.catalog.{spark_catalog}.type": "rest",
  f"spark.sql.catalog.{spark_catalog}.uri": "https://biglake.googleapis.com/iceberg/v1/restcatalog",
  f"spark.sql.catalog.{spark_catalog}.rest.auth.type": "org.apache.iceberg.gcp.auth.GoogleAuthManager",
  f"spark.sql.catalog.{spark_catalog}.io-impl": "org.apache.iceberg.gcp.gcs.GCSFileIO",
  f"spark.sql.catalog.{spark_catalog}.header.X-Iceberg-Access-Delegation": "vended-credentials",
  f"spark.sql.catalog.{spark_catalog}.warehouse": f"gs://{spark_catalog}",
  f"spark.sql.catalog.{spark_catalog}.header.x-goog-user-project": PROJECT_ID,
}

spark = (
   DataprocSparkSession.builder
     .appName("Lakehouse Public Data Demo")
     .dataprocSessionConfig(session)
     .getOrCreate()
)
spark.conf.set("spark.sql.defaultCatalog", spark_catalog)

Remplacez les éléments suivants :

Exemples de requêtes

Une fois connecté, vous disposez d'un accès SQL complet aux ensembles de données.

Interroger les pages vues de Wikipédia et les commits GitHub

Lorsque vous êtes connecté au catalogue lakehouse-public-data dans une session PySpark, vous pouvez interroger le nombre de vues mensuelles de Wikipédia pour les articles liés à BigQuery :

df1 = spark.sql("""
SELECT
  title,
  wiki,
  SUM(views) AS total_views
FROM wikipedia.pageviews_2026
WHERE datehour >= TIMESTAMP '2026-01-01 00:00:00'
  AND datehour <  TIMESTAMP '2026-02-01 00:00:00'
  AND LOWER(title) LIKE '%bigquery%'
GROUP BY title, wiki
ORDER BY total_views DESC
LIMIT 20
""")
df1.show(10)

Vous pouvez également récupérer les commits GitHub récents faisant référence à Iceberg :

df2 = spark.sql("""
SELECT
  commits.commit,
  commits.subject,
  commits.message,
  commits.author.name AS author_name,
  timestamp_seconds(commits.committer.date.seconds) AS commit_time,
  repo_name
FROM github_repos.commits AS commits
WHERE LOWER(commits.subject) LIKE '%iceberg%'
   OR LOWER(commits.message) LIKE '%iceberg%'
ORDER BY commit_time DESC
LIMIT 50
""")
df2.show(10)

Interroger l'ensemble de données NYC Taxi

L'ensemble de données NYC Taxi est disponible dans le catalogue biglake-public-nyc-taxi-iceberg, modélisé sous forme de table Iceberg pour illustrer les fonctionnalités de partitionnement et de métadonnées.

La requête suivante agrège des millions d'enregistrements pour trouver le tarif moyen et la distance moyenne du trajet par nombre de passagers. Il montre comment Iceberg analyse efficacement les fichiers de données sans avoir à lister les répertoires, en utilisant l'élagage de partition :

SELECT
    passenger_count,
    COUNT(1) AS num_trips,
    ROUND(AVG(total_amount), 2) AS avg_fare,
    ROUND(AVG(trip_distance), 2) AS avg_distance
FROM
    lakehouse-sample.public_data.nyc_taxicab
WHERE
    data_file_year = 2021
    AND passenger_count > 0
GROUP BY
    passenger_count
ORDER BY
    num_trips DESC;

L'une des fonctionnalités les plus puissantes d'Iceberg est le voyage dans le temps. Vous pouvez interroger la table telle qu'elle existait à un moment précis dans le passé. La requête suivante vous permet d'auditer les modifications en comparant le nombre de lignes de la version actuelle à celui d'un instantané spécifique :

-- Compare the row count of the current version vs. a specific snapshot
SELECT
    'Current State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab
UNION ALL
SELECT
    'Past State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab VERSION AS OF 2943559336503196801Q;

En interrogeant la table de métadonnées de l'historique (par exemple, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), vous pouvez trouver les ID d'instantanés et remonter dans le temps pour voir comment l'ensemble de données a évolué.

Pour en savoir plus, consultez Interroger des tables Apache Iceberg avec Lakehouse.

Ensembles de données disponibles

Lakehouse fournit des ensembles de données publics et des exemples de tables que vous pouvez interroger en tant que tables Apache Iceberg dans deux catalogues publics : lakehouse-public-data et biglake-public-nyc-taxi-iceberg.

lakehouse-public-data catalogue

Le catalogue lakehouse-public-data (gs://lakehouse-public-data) inclut les espaces de noms et les tables suivants au format Apache Iceberg.

austin_bikeshare

L'espace de noms austin_bikeshare inclut les tables suivantes :

Nom Description
bikeshare_trips Enregistrements des trajets en vélo en libre-service à Austin, y compris la durée du trajet, les codes temporels de début et de fin, et les détails de la station.

bls

L'espace de noms bls inclut des statistiques économiques fournies par le Bureau of Labor Statistics des États-Unis :

Nom Description
cpi_u Données de la série de l'indice des prix à la consommation pour tous les consommateurs urbains (CPI-U).
unemployment_cps Statistiques sur le chômage issues de l'enquête Current Population Survey (CPS).

census_bureau_acs

L'espace de noms census_bureau_acs inclut les tables suivantes :

Nom Description
state_2020_5yr Estimations sur cinq ans au niveau des États pour 2020, issues de l'American Community Survey (ACS) du Bureau du recensement des États-Unis.

chicago_taxi_trips

L'espace de noms chicago_taxi_trips inclut les tables suivantes :

Nom Description
taxi_trips Enregistrements des courses de taxi à Chicago, y compris les codes temporels, la distance, les tarifs, ainsi que les lieux de prise en charge et de dépose.

crypto_ethereum

L'espace de noms crypto_ethereum inclut les tables suivantes :

Nom Description
transactions Enregistrements des transactions de la blockchain Ethereum, y compris les adresses de l'expéditeur et du destinataire, la valeur et les métriques de gaz.

ga4_obfuscated_sample_ecommerce

L'espace de noms ga4_obfuscated_sample_ecommerce inclut les tables suivantes :

Nom Description
events_20210131 Données d'événement Google Analytics 4 obscurcies émulant une implémentation d'e-commerce Web pour le 31 janvier 2021.

geo_openstreetmap

L'espace de noms geo_openstreetmap inclut les tables suivantes :

Nom Description
planet_features Éléments géographiques mondiaux d'OpenStreetMap, y compris les types d'éléments, les tags et les géométries.

geo_us_boundaries

L'espace de noms geo_us_boundaries inclut les tables suivantes :

Nom Description
zip_codes Limites des codes postaux américains, y compris les codes FIPS de ville, de comté et d'État, ainsi que les géométries géographiques.

github_repos

L'espace de noms github_repos inclut les données des dépôts publics sous licence Open Source sur GitHub :

Nom Description
commits Commits Git uniques provenant de dépôts Open Source sur GitHub, regroupés par dépôt.
contents Contenu unique des fichiers texte de moins de 1 Mio sur la branche HEAD.
languages Langages de programmation par dépôt, d'après l'API GitHub.
licenses Code SPDX de licence Open Source pour chaque dépôt.
sample_commits Exemple de commits de la table commits.
sample_contents Échantillon aléatoire de 10% du contenu des fichiers texte de la table contents.
sample_files Métadonnées de fichiers échantillonnées pour les fichiers situés à l'emplacement HEAD,à partir des 400 000 premiers dépôts répertoriés dans sample_repos.
sample_repos Les 400 000 premiers dépôts GitHub par nombre d'étoiles.

L'espace de noms google_trends inclut les tables suivantes :

Nom Description
top_terms Les 25 termes de recherche les plus populaires chaque jour aux États-Unis, avec leur score, leur classement, l'heure et la zone de marché désignée (DMA).

imdb

L'espace de noms imdb inclut les tables suivantes :

Nom Description
title_basics Métadonnées de titre IMDb, y compris le type de titre, les titres principaux et originaux, l'année de sortie, la durée et les genres.
title_ratings Notes moyennes des utilisateurs d'IMDb et nombre de votes pour les titres.

iowa_liquor_sales

L'espace de noms iowa_liquor_sales inclut les tables suivantes :

Nom Description
sales Enregistrements des achats de boissons alcoolisées en gros dans l'État de l'Iowa par des marchands pour la vente aux particuliers depuis 2012.

ml_datasets

L'espace de noms ml_datasets inclut des tables de benchmark de machine learning :

Nom Description
census_adult_income Ensemble de données sur les revenus des adultes du recensement utilisé pour les tâches de classification prédisant si les revenus dépassent 50 000 $ par an.
penguins Mesures des manchots de l'archipel Palmer, y compris l'espèce, l'île, les dimensions du culmen, la longueur des nageoires et la masse corporelle.
ulb_fraud_detection Transactions anonymisées par carte de crédit effectuées par des titulaires de cartes européens en septembre 2013 pour l'analyse comparative de la détection des fraudes.

new_york_citibike

L'espace de noms new_york_citibike inclut les tables suivantes :

Nom Description
citibike_trips Enregistrements des trajets Citi Bike à New York, y compris la durée du trajet, les codes temporels, l'emplacement des stations et les données démographiques des cyclistes.

new_york_taxi_trips

L'espace de noms new_york_taxi_trips inclut les tables suivantes :

Nom Description
taxi_zone_geom ID, noms, arrondissements et géométries des limites des zones de taxi de la NYC Taxi and Limousine Commission (TLC).
tlc_green_trips_2022 Enregistrements des trajets en taxi vert de la NYC TLC pour 2022.
tlc_yellow_trips_2022 Enregistrements des courses des taxis jaunes de la TLC de New York pour 2022.

noaa_gsod

L'espace de noms noaa_gsod inclut les données météorologiques du Global Surface Summary of the Day (GSOD) de la National Oceanic and Atmospheric Administration (NOAA) :

Nom Description
gsod2023 Observations quotidiennes de la météo de surface à l'échelle mondiale pour 2023.
stations Métadonnées des stations météorologiques de la NOAA, y compris les identifiants, les noms, les pays, les États et les coordonnées des stations.

sec_quarterly_financials

L'espace de noms sec_quarterly_financials inclut les tables suivantes :

Nom Description
numbers Données d'états financiers numériques extraites des déclarations trimestrielles de la Securities and Exchange Commission (SEC) des États-Unis.

stackoverflow

L'espace de noms stackoverflow inclut les tables suivantes :

Nom Description
posts_answers Réponses Stack Overflow, y compris le corps du texte, le score, la date de création et les informations sur l'auteur.
posts_questions Questions publiées sur Stack Overflow, y compris le titre, le corps du texte, les tags, le nombre de vues et l'ID de la réponse acceptée.
users Profils utilisateur Stack Overflow, y compris le nom à afficher, la réputation, la date de création et le nombre de badges.

tpc_ds_1g

L'espace de noms tpc_ds_1g inclut les tables de benchmark TPC-DS de 1 Go :

Nom Description
date_dim Table de dimension de date TPC-DS mappant les dates calendaires aux périodes fiscales, aux trimestres et aux jours fériés.
store_sales Table de faits des ventes en magasin TPC-DS enregistrant les transactions en magasin.

wikipedia

L'espace de noms wikipedia inclut les statistiques de pages vues Wikimedia et les entités Wikidata :

Nom Description
pageviews_2015 Nombre de pages vues par heure sur Wikipédia en 2015, partitionné par date.
pageviews_2016 Nombre de pages vues par heure sur Wikipédia en 2016, partitionné par date.
pageviews_2017 Nombre de pages vues par heure sur Wikipédia en 2017, partitionné par date.
pageviews_2018 Nombre de pages vues par heure sur Wikipédia en 2018, partitionné par date.
pageviews_2019 Nombre de pages vues par heure sur Wikipédia en 2019, partitionné par date.
pageviews_2020 Nombre de pages vues par heure sur Wikipédia en 2020, partitionné par date.
pageviews_2021 Nombre de pages vues par heure sur Wikipédia en 2021, partitionné par date.
pageviews_2022 Nombre de pages vues Wikipédia par heure pour 2022, partitionné par date.
pageviews_2023 Nombre de pages vues par heure sur Wikipédia en 2023, partitionné par date.
pageviews_2024 Nombre de pages vues par heure sur Wikipédia en 2024, partitionné par date.
pageviews_2025 Nombre de pages vues par heure sur Wikipédia pour 2025, partitionné par date.
pageviews_2026 Nombre de pages vues sur Wikipédia par heure pour 2026, partitionné par date.
table_activists Nombre de pages vues sur Wikipédia pour les articles sur les activistes.
table_actors Nombre de pages vues sur Wikipédia pour les articles sur les acteurs.
table_alumni Nombre de pages vues sur Wikipédia pour les articles sur les anciens élèves.
table_artists Nombre de pages vues sur Wikipédia pour les articles sur les artistes.
table_athlete Nombre de pages vues sur Wikipédia pour les articles sur les athlètes.
table_bands Nombre de pages vues sur Wikipédia pour les articles sur des groupes de musique.
table_born Nombre de pages vues Wikipédia pour les articles classés par année de naissance.
table_businesspeople Nombre de pages vues sur Wikipédia pour les articles sur les hommes et femmes d'affaires.
table_comedians Nombre de pages vues sur Wikipédia pour les articles sur les humoristes.
table_composers Nombre de pages vues sur Wikipédia pour les articles sur les compositeurs.
table_inventors Nombre de pages vues sur Wikipédia pour les articles sur les inventeurs.
table_politicians Nombre de pages vues sur Wikipédia pour les articles sur les personnalités politiques.
table_scientists Nombre de pages vues sur Wikipédia pour les articles sur les scientifiques.
table_singers Nombre de pages vues sur Wikipédia pour les articles sur les chanteurs.
table_writers Nombre de pages vues sur Wikipédia pour les articles sur les écrivains.
wikidata Entités de la base de connaissances Wikidata structurée, y compris les libellés, descriptions, liens annexes et revendications multilingues.

world_bank_health_population

L'espace de noms world_bank_health_population inclut les statistiques de la Banque mondiale sur la santé, la nutrition et la population :

Nom Description
country_series_definitions Définitions et métadonnées associant les codes pays et les codes de série d'indicateurs.
country_summary Métadonnées des pays, y compris les noms courts et longs, les codes ISO, les unités monétaires et les régions.
health_nutrition_population Valeurs annuelles des indicateurs de santé, de nutrition et de population par pays.
series_summary Métadonnées pour les indicateurs de santé et de population, y compris les définitions, les unités de mesure et la périodicité.
series_times Métadonnées et descriptions de séries temporelles par code de série d'indicateurs et par année.

world_bank_wdi

L'espace de noms world_bank_wdi inclut les données des indicateurs du développement dans le monde (IDM) de la Banque mondiale :

Nom Description
country_summary Métadonnées des pays, y compris les noms courts et longs, les codes ISO, les unités monétaires et les groupes de revenus.
indicators_data Valeurs annuelles des indicateurs du développement dans le monde par pays et par code d'indicateur.
series_summary Définitions, thèmes et unités de mesure pour les séries d'indicateurs du développement dans le monde.

biglake-public-nyc-taxi-iceberg catalogue

Le catalogue biglake-public-nyc-taxi-iceberg (gs://biglake-public-nyc-taxi-iceberg) inclut les tables suivantes dans l'espace de noms public_data au format Apache Iceberg :

Nom Description
nyc_taxicab Données d'enregistrement des trajets de la NYC Taxi and Limousine Commission (TLC).
nyc_taxicab_2021 Données d'enregistrement des trajets de la NYC Taxi and Limousine Commission (TLC) pour 2021.

Étapes suivantes