ボーダーレス レイクハウスの一般公開データセット

ボーダーレス Lakehouse を使用すると、Google Cloud 公開データセット プログラムの一環として、Apache Iceberg REST カタログ エンドポイントを介して提供される読み取り専用の公開データセットをクエリできます。BigQuery、Managed Service for Apache Spark、Trino、Apache Flink を接続して、これらのテーブルをプライベート データと組み合わせたり、ストレージ インフラストラクチャを管理することなく、ライブ Apache Iceberg REST カタログ エンドポイントに対してオープンソース エンジンの構成をテストしたりできます。

Google では、これらのデータセットの保存費用を負担しており、Lakehouse を介してデータへの公開アクセスを提供しています。データで実行したクエリにのみ料金が発生します。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  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

Apache Spark に接続する前に、次のものが必要です。

一般公開データセットのロケーション

各一般公開データセットは、US や EU などの特定のロケーションに保存されます。Lakehouse の一般公開データセットは、US マルチリージョン ロケーションに保存されています。一般公開データセットに対してクエリを実行する場合は、処理ロケーションがデータセットのロケーションと互換性があることを確認してください。

Apache Spark を使用して一般公開データセットにアクセスする

Lakehouse の一般公開データセットは Iceberg REST Catalog を介して提供されるため、Apache Spark やその他の互換性のあるエンジンからアクセスできます。オンプレミス、Managed Service for Apache Spark、他のクラウド ベンダーなど、標準の Spark 環境を使用して一般公開データセットに接続できます。

Apache Spark に接続する

Spark SQL セッションを開始するときに、次の構成フラグを使用します。これらのフラグは、公開 REST エンドポイントを指す lakehouse-sample という名前のカタログを構成します。

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

次のように置き換えます。

PySpark と Managed Service for Apache Spark に接続する

Managed Service for Apache Spark でマネージド サーバーレス Spark ノートブックを使用して、クラスタを作成または管理せずにテーブルをクエリすることもできます。

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)

次のように置き換えます。

クエリの例

接続すると、データセットへの完全な SQL アクセス権が付与されます。

Wikipedia のページビューと GitHub の commit をクエリする

PySpark セッションで lakehouse-public-data カタログに接続すると、BigQuery 関連の記事の月間 Wikipedia 視聴回数をクエリできます。

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)

Iceberg を参照する最近の GitHub commit を取得することもできます。

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)

NYC Taxi データセットに対してクエリを実行する

NYC Taxi データセットは biglake-public-nyc-taxi-iceberg カタログで利用できます。これは、パーティショニングとメタデータ機能を示すために Iceberg テーブルとしてモデル化されています。

次のクエリは、数百万件のレコードを集計して、乗客数別の平均運賃と乗車距離を求めます。この例は、Iceberg がパーティション プルーニングを使用して、ディレクトリを一覧表示することなく、データファイルを効率的にスキャンする方法を示しています。

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;

Iceberg の最も強力な機能の一つは、タイムトラベルです。過去の特定の時点に存在していたテーブルをクエリできます。次のクエリでは、現在のバージョンの行数と特定のスナップショットを比較して、変更を監査できます。

-- 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;

履歴メタデータ テーブル(SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history など)をクエリすると、スナップショット ID を確認し、データセットが時間の経過とともにどのように増加したかを確認できます。

詳細については、Lakehouse で Apache Iceberg テーブルに対してクエリを実行するをご覧ください。

利用可能なデータセット

Lakehouse には、lakehouse-public-data と biglake-public-nyc-taxi-iceberg の 2 つの一般公開カタログに Apache Iceberg テーブルとしてクエリできる一般公開データセットとサンプル テーブルが用意されています。

lakehouse-public-data カタログ

lakehouse-public-data カタログ(gs://lakehouse-public-data)には、Apache Iceberg 形式の次の名前空間とテーブルが含まれています。

austin_bikeshare

austin_bikeshare 名前空間には、次のテーブルが含まれています。

名前 説明
bikeshare_trips Austin Bikeshare の乗車記録(乗車時間、開始と終了のタイムスタンプ、ステーションの詳細など)。

bls

bls 名前空間には、米国労働統計局が提供する経済統計が含まれています。

名前 説明
cpi_u すべての都市消費者向けの消費者物価指数(CPI-U)シリーズのデータ。
unemployment_cps Current Population Survey(CPS)の失業統計。

census_bureau_acs

census_bureau_acs 名前空間には、次のテーブルが含まれています。

名前 説明
state_2020_5yr 米国国勢調査局の American Community Survey(ACS)による 2020 年の州レベルの 5 年間の推定値。

chicago_taxi_trips

chicago_taxi_trips 名前空間には、次のテーブルが含まれています。

名前 説明
taxi_trips シカゴのタクシーの乗車記録(乗車日時、距離、料金、乗車場所、降車場所など)。

crypto_ethereum

crypto_ethereum 名前空間には、次のテーブルが含まれています。

名前 説明
transactions Ethereum ブロックチェーンのトランザクション レコード(送信者と受信者のアドレス、値、ガス指標など)。

ga4_obfuscated_sample_ecommerce

ga4_obfuscated_sample_ecommerce 名前空間には、次のテーブルが含まれています。

名前 説明
events_20210131 2021 年 1 月 31 日のウェブ e コマース実装をエミュレートした、難読化された Google アナリティクス 4 イベントデータ。

geo_openstreetmap

geo_openstreetmap 名前空間には、次のテーブルが含まれています。

名前 説明
planet_features OpenStreetMap のグローバルな地理的対象物(対象物のタイプ、タグ、ジオメトリなど)。

geo_us_boundaries

geo_us_boundaries 名前空間には、次のテーブルが含まれています。

名前 説明
zip_codes 米国の郵便番号の境界(市区町村、郡、州の FIPS コード、地理的ジオメトリを含む)。

github_repos

github_repos 名前空間には、GitHub の公開オープンソース ライセンス リポジトリのデータが含まれています。

名前 説明
commits GitHub のオープンソース リポジトリからの一意の Git commit。リポジトリ別にグループ化されています。
contents HEAD ブランチ上の 1 MiB 未満のテキスト ファイルの一意のファイル コンテンツ。
languages GitHub API によって報告されたリポジトリ別のプログラミング言語。
licenses 各リポジトリのオープンソース ライセンス SPDX コード。
sample_commits commits テーブルの commit のサンプル。
sample_contents contents テーブルからランダムにサンプリングされたテキスト ファイルの内容の 10% のサブセット。
sample_files sample_repos にリストされている上位 400,000 件のリポジトリから HEAD にあるファイルのサンプリングされたファイル メタデータ。
sample_repos スター数上位 40 万の GitHub リポジトリ。

google_trends 名前空間には、次のテーブルが含まれています。

名前 説明
top_terms 米国における日ごとの上位 25 件の検索キーワード(スコア、ランキング、時間、指定マーケット エリア(DMA)を含む)。

imdb

imdb 名前空間には、次のテーブルが含まれています。

名前 説明
title_basics IMDb タイトル メタデータ(タイトルタイプ、メインタイトル、オリジナル タイトル、公開年、上映時間、ジャンルなど)。
title_ratings IMDb ユーザーの平均評価とタイトルの投票数。

iowa_liquor_sales

iowa_liquor_sales 名前空間には、次のテーブルが含まれています。

名前 説明
sales 2012 年以降のアイオワ州における、小売業者による個人向け販売用の酒類卸売購入記録。

ml_datasets

ml_datasets 名前空間には、ML ベンチマーク テーブルが含まれています。

名前 説明
census_adult_income 年収が 50,000 ドルを超えるかどうかを予測する分類タスクに使用される国勢調査の成人所得データセット。
penguins パーマー諸島のペンギンの測定値(種、島、クチバシの寸法、フリッパーの長さ、体重など)。
ulb_fraud_detection 不正行為検出のベンチマークを目的とした、2013 年 9 月のヨーロッパのカード所有者によるクレジット カード取引の匿名化データ。

new_york_citibike

new_york_citibike 名前空間には、次のテーブルが含まれています。

名前 説明
citibike_trips ニューヨーク市の Citi Bike の利用記録。利用時間、タイムスタンプ、ステーションの場所、利用者の属性などが含まれます。

new_york_taxi_trips

new_york_taxi_trips 名前空間には、次のテーブルが含まれています。

名前 説明
taxi_zone_geom NYC Taxi and Limousine Commission(TLC)のタクシーゾーン ID、名前、行政区、境界ジオメトリ。
tlc_green_trips_2022 2022 年の NYC TLC グリーンタクシーの乗車記録。
tlc_yellow_trips_2022 2022 年の NYC TLC イエロー タクシーの乗車記録。

noaa_gsod

noaa_gsod 名前空間には、米国海洋大気庁(NOAA)の Global Surface Summary of the Day(GSOD)気象データが含まれています。

名前 説明
gsod2023 2023 年の世界の地表気象の概要観測データ(日次)。
stations NOAA 気象観測所のメタデータ(観測所の識別子、名前、国、州、座標など)。

sec_quarterly_financials

sec_quarterly_financials 名前空間には、次のテーブルが含まれています。

名前 説明
numbers 米国証券取引委員会(SEC)の四半期報告書から抽出された数値財務諸表データ。

stackoverflow

stackoverflow 名前空間には、次のテーブルが含まれています。

名前 説明
posts_answers Stack Overflow の回答投稿(本文、スコア、作成日、作成者の詳細など)。
posts_questions Stack Overflow の質問投稿(タイトル、本文テキスト、タグ、視聴回数、承認された回答 ID など)。
users Stack Overflow のユーザー プロフィール(表示名、評価、作成日、バッジ数など)。

tpc_ds_1g

tpc_ds_1g 名前空間には、TPC-DS 1 GB ベンチマーク テーブルが含まれています。

名前 説明
date_dim カレンダーの日付を会計期間、四半期、休日にマッピングする TPC-DS 日付ディメンション テーブル。
store_sales 小売店の店舗での取引件数を記録する TPC-DS 店舗販売ファクト テーブル。

wikipedia

wikipedia 名前空間には、Wikimedia のページビュー統計情報と Wikidata エンティティが含まれています。

名前 説明
pageviews_2015 2015 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2016 2016 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2017 2017 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2018 2018 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2019 2019 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2020 2020 年の 1 時間あたりの Wikipedia ページビュー数。日付でパーティション分割されています。
pageviews_2021 2021 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
pageviews_2022 2022 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
pageviews_2023 2023 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
pageviews_2024 2024 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
pageviews_2025 2025 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
pageviews_2026 2026 年の Wikipedia の 1 時間あたりのページビュー数。日付でパーティション分割されています。
table_activists 活動家に関する記事の Wikipedia ページビュー数。
table_actors 俳優に関する記事の Wikipedia ページビュー数。
table_alumni 卒業生に関する記事の Wikipedia ページビュー数。
table_artists アーティストに関する記事の Wikipedia ページビュー数。
table_athlete アスリートに関する記事の Wikipedia ページビュー数。
table_bands 音楽バンドに関する記事の Wikipedia ページビュー数。
table_born 出生年別に分類された記事の Wikipedia ページビュー数。
table_businesspeople 実業家に関する記事の Wikipedia ページビュー数。
table_comedians コメディアンに関する記事の Wikipedia ページビュー数。
table_composers 作曲家に関する記事の Wikipedia ページビュー数。
table_inventors 発明家に関する記事の Wikipedia ページビュー数。
table_politicians 政治家に関する記事の Wikipedia ページビュー数。
table_scientists 科学者に関する記事の Wikipedia ページビュー数。
table_singers 歌手に関する記事の Wikipedia ページビュー数。
table_writers 作家に関する記事の Wikipedia ページビュー数。
wikidata 構造化された Wikidata ナレッジベース エンティティ(多言語ラベル、説明、サイトリンク、クレームなど)。

world_bank_health_population

world_bank_health_population 名前空間には、世界銀行の健康、栄養、人口に関する統計情報が含まれています。

名前 説明
country_series_definitions 国コードと指標シリーズコードをリンクする定義とメタデータ。
country_summary 国メタデータ(短い名前と長い名前、ISO コード、通貨単位、地域など)。
health_nutrition_population 国別の年間健康、栄養、人口指標の値。
series_summary 健康指標と人口指標のメタデータ(定義、測定単位、周期など)。
series_times 指標シリーズコードと年別の時系列メタデータと説明。

world_bank_wdi

world_bank_wdi 名前空間には、世界銀行の世界開発指標(WDI)データが含まれています。

名前 説明
country_summary 国のメタデータ(短い名前と長い名前、ISO コード、通貨単位、所得グループなど)。
indicators_data 国と指標コード別の世界開発指標の年間値。
series_summary 世界開発指標シリーズの定義、トピック、測定単位。

biglake-public-nyc-taxi-iceberg カタログ

biglake-public-nyc-taxi-iceberg カタログ(gs://biglake-public-nyc-taxi-iceberg)には、Apache Iceberg 形式の public_data 名前空間に次のテーブルが含まれています。

名前 説明
nyc_taxicab ニューヨーク市タクシー&リムジン委員会(TLC)の乗車記録データ。
nyc_taxicab_2021 2021 年のニューヨーク市タクシー&リムジン委員会(TLC)の乗車記録データ。

次のステップ