Ensembles de données publics Borderless Lakehouse

Le lakehouse sans frontières héberge des ensembles de données publics de haute qualité fournis par le biais du catalogue REST Apache Iceberg. Ils sont ainsi mis à la disposition du grand public dans le cadre du Google Cloud Programme d'ensembles de données publics.

Ces ensembles de données sont disponibles en accès en lecture seule. Vous pouvez y accéder et les intégrer à vos applications à l'aide d'Apache Spark, Trino, Flink ou BigQuery. 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 effectuez sur les données.

L'objectif de ces ensembles de données publics est de faciliter l'accès à Iceberg. Vous n'avez pas besoin de gérer l'infrastructure pour apprendre Iceberg, vous devez vous connecter. Vous pouvez utiliser ces ensembles de données pour :

  • Utilisez BigQuery (via Lakehouse) pour interroger directement ces tables à l'aide de SQL, en les combinant avec vos données privées.
  • Testez les configurations de votre moteur OSS (par exemple, Spark, Trino ou Flink) par rapport à un catalogue REST en direct.

Avant de commencer

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

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

  3. 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 aux 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 que sur site, Managed Service pour Apache Spark ou d'autres fournisseurs de cloud.

Se connecter à Apache Spark

Utilisez les indicateurs de configuration suivants lorsque vous démarrez votre session Spark SQL. Ces indicateurs 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 sans serveur géré dans Managed Service pour Apache Spark afin d'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 vues de page 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 des articles liés à BigQuery sur Wikipédia :

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 sur les taxis de New York est disponible dans le catalogue biglake-public-nyc-taxi-iceberg. Il est modélisé sous forme de table Iceberg pour illustrer les capacités de partitionnement et de métadonnées.

La requête suivante agrège des millions d'enregistrements pour trouver le prix moyen et la distance de trajet par nombre de passagers. Il montre comment Iceberg analyse efficacement les fichiers de données sans avoir besoin de 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 des métadonnées de l'historique (par exemple, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), vous pouvez trouver des ID d'instantané et revenir en arrière pour voir comment l'ensemble de données a évolué au fil du temps.

Pour en savoir plus, consultez Utiliser le catalogue REST Iceberg avec Cloud Storage.

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.

Catalogue lakehouse-public-data

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 Austin Bikeshare, y compris la durée du trajet, les codes temporels de début et de fin, et les informations sur les stations.

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 quinquennales au niveau des États pour 2020 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 des trajets, la distance, les tarifs, et 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énements Google Analytics 4 obscurcies simulant 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 Fonctionnalités géographiques mondiales d'OpenStreetMap, y compris les types de fonctionnalités, 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 des villes, des comtés et des États, ainsi que les géométries géographiques.

github_repos

L'espace de noms github_repos inclut des données provenant de 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, tels qu'indiqués par l'API GitHub.
licenses Code SPDX de licence Open Source pour chaque dépôt.
sample_commits Exemple d'engagements provenant de la table commits.
sample_contents Sous-ensemble de 10% du contenu du fichier texte échantillonné de manière aléatoire à partir de la table contents.
sample_files Exemple de métadonnées de fichiers pour les fichiers situés dans HEAD à partir des 400 000 premiers dépôts listé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 les plus recherchés 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 des titres 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 Moyennes des notes et nombre de votes des utilisateurs IMDb 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 les marchands pour la vente aux particuliers depuis 2012.

ml_datasets

L'espace de noms ml_datasets inclut des tableaux de référence pour le machine learning :

Nom Description
census_adult_income Ensemble de données sur les revenus des adultes recensés utilisé pour les tâches de classification permettant de prédire 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 bec, la longueur de la nageoire et la masse corporelle.
ulb_fraud_detection Transactions anonymisées par carte de crédit de titulaires européens depuis septembre 2013 pour le benchmarking 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 des trajets, les codes temporels, les emplacements des stations et les données démographiques des utilisateurs.

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 courses de taxi vert TLC à New York pour l'année 2022.
tlc_yellow_trips_2022 Enregistrements des courses de taxis jaunes TLC à New York pour l'année 2022.

noaa_gsod

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

Nom Description
gsod2023 Observations quotidiennes des conditions météorologiques en 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 numériques des états financiers 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 Posts de 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 Posts de questions 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 référence TPC-DS de 1 Go :

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

wikipedia

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

Nom Description
pageviews_2015 Nombre de pages vues Wikipédia par heure pour l'année 2015, partitionné par date.
pageviews_2016 Nombre de pages vues Wikipédia par heure pour l'année 2016, partitionné par date.
pageviews_2017 Nombre de pages vues Wikipédia par heure pour 2017, partitionné par date.
pageviews_2018 Nombre de pages vues Wikipédia par heure pour l'année 2018, partitionné par date.
pageviews_2019 Nombre de pages vues Wikipédia par heure pour 2019, partitionné par date.
pageviews_2020 Nombre de pages vues Wikipédia par heure pour l'année 2020, partitionné par date.
pageviews_2021 Nombre de pages vues sur Wikipédia par heure pour l'année 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 Wikipédia par heure pour l'année 2023, partitionné par date.
pageviews_2024 Nombre de pages vues sur Wikipédia par heure pour l'année 2024, partitionné par date.
pageviews_2025 Nombre de pages vues Wikipédia par heure pour 2025, partitionné par date.
pageviews_2026 Nombre de pages vues sur Wikipédia par heure pour l'année 2026, partitionné par date.
table_activists Nombre de pages vues sur Wikipédia pour les articles sur les militants.
table_actors Nombre de pages vues Wikipédia pour les articles sur les acteurs.
table_alumni Nombre de vues des pages Wikipédia sur les anciens élèves.
table_artists Nombre de vues des pages Wikipédia consacrées aux artistes.
table_athlete Nombre de pages vues Wikipédia pour les articles sur les athlètes.
table_bands Nombre de pages vues Wikipédia pour les articles sur les groupes musicaux.
table_born Nombre de pages vues Wikipédia pour les articles classés par année de naissance.
table_businesspeople Nombre de vues de pages Wikipédia sur des hommes et femmes d'affaires.
table_comedians Nombre de pages vues Wikipédia pour les articles sur les humoristes.
table_composers Nombre de pages vues Wikipédia pour les articles sur les compositeurs.
table_inventors Nombre de pages vues Wikipédia pour les articles sur les inventeurs.
table_politicians Nombre de vues de pages Wikipédia sur des articles concernant des personnalités politiques.
table_scientists Nombre de vues des pages Wikipédia sur les scientifiques.
table_singers Nombre de pages vues Wikipédia pour les articles sur les chanteurs.
table_writers Nombre de vues des pages Wikipédia sur les écrivains.
wikidata Entités structurées de la base de connaissances Wikidata, y compris les libellés, les descriptions, les liens vers les sites et les 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 des séries temporelles par code et année de série d'indicateurs.

world_bank_wdi

L'espace de noms world_bank_wdi inclut les données des indicateurs de développement mondiaux (WDI) de la Banque mondiale :

Nom Description
country_summary Métadonnées sur les 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 mondial par pays et code d'indicateur.
series_summary Définitions, thèmes et unités de mesure pour la série des indicateurs du développement mondial.

Catalogue biglake-public-nyc-taxi-iceberg

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 sur les courses de la NYC Taxi and Limousine Commission (TLC).
nyc_taxicab_2021 Données sur les courses de taxi et de limousine de la ville de New York (TLC) pour 2021.

Étapes suivantes