テーブルの作成

Lakehouse ランタイム カタログを使用すると、Cloud Storage に Apache Iceberg テーブルを作成し、BigQuery、Apache Spark、Trino、Iceberg REST API でクエリと変更を行うことができます。明示的なストレージ パスを指定せずにテーブルを作成すると、Lakehouse ランタイム カタログは、名前空間とテーブル識別子を追加して、メタデータとデータ ディレクトリをカタログ エンドポイントのデフォルトの Cloud Storage ロケーションに自動的に配置します。

新しいストレージ ディレクトリを作成せずに既存の Apache Iceberg テーブルを登録するには、テーブルを登録するをご覧ください。

始める前に

  1. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  2. BigLake API を有効にします(有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。

    API の有効化

  3. Apache Iceberg REST カタログ エンドポイントを使用して Lakehouse ランタイム カタログを設定します。自動テーブル管理を有効にするには、カタログで認証情報提供モードが使用されていることを確認します。

必要なロール

テーブルの作成に必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • テーブルを作成する:
    • BigLake 管理者(roles/biglake.admin)- プロジェクト
    • ストレージ管理者(roles/storage.admin)- ターゲット Cloud Storage バケット

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

カタログ エンドポイントが認証情報自動販売モードを使用し、その Cloud Storage バケットが VPC Service Controls サービス境界で保護されている場合は、テーブルを作成する前に、カタログ エンドポイントのサービス アカウントに上り(内向き)ルールを構成する必要があります。詳細については、認証情報の自動販売で VPC Service Controls を使用するをご覧ください。

テーブルの機能とサポート

Lakehouse ランタイム カタログでテーブルを使用する場合は、さまざまなテーブルタイプとそのオプトイン機能を理解しておくと便利です。Apache Iceberg テーブルの使用方法については、Apache Iceberg テーブルの概要をご覧ください。

サポートされている Iceberg テーブル

Apache Iceberg V2(一般提供)テーブルと V3(プレビュー)テーブルのみがサポートされています。Iceberg V1 テーブルはサポートされていません。既存の V1 テーブルをアップグレードするには、Iceberg V1 テーブルを V2 にアップグレードするをご覧ください。

テーブル オプションを使用する(プレビュー)

特定のテーブル プロパティを構成することで、BigQuery データ操作言語(DML)や自動テーブル管理などの BigQuery マネージド機能を使用するようにオプトインできます。これらの機能は、テーブルが作成される場所に応じて異なる方法で有効になります。

  • BigQuery から: BigQuery DML と自動テーブル管理はデフォルトで有効になっています。
  • オープンソース エンジンから: オプトインするには、テーブル プロパティを明示的に構成する必要があります。詳細については、テーブル オプションを構成するをご覧ください。

テーブルを作成する

Iceberg テーブルを作成する。自動テーブル管理(gcp.biglake.table-management.enabled)を有効にするには、カタログで認証情報ベンディング モードを使用する必要があります。

コンソール

  1. Google Cloud コンソールで [Lakehouse] に移動します。

    [レイクハウス] に移動

  2. 既存のカタログを選択するか、カタログがない場合は作成します。

  3. 既存の名前空間を選択するか、名前空間がない場合は作成します。

  4. メニューバーで [+ テーブルを作成] をクリックします。

  5. [テーブル形式] で [Iceberg] を選択します。

  6. [テーブル名] に、一意のテーブル名を入力します。

  7. 省略可: [プロパティ] セクションで、テーブルのプロパティを構成します。このセクションでは、gcp.biglake.bigquery-dml.enabled や gcp.biglake.table-management.enabled などの事前定義されたプロパティについて説明します。

    たとえば、これらの値を true に変更して、BigQuery DML またはテーブル管理を有効にできます。テーブル管理では、圧縮やスナップショットの有効期限などのバックグラウンド タスクが実行されます。詳細については、テーブル オプションを構成するをご覧ください。

  8. [作成] をクリックします。

テーブルが [Namespace の詳細] ページに表示されます。

Spark

spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")

次の値を置き換えます。

  • NAMESPACE_NAME: 名前空間の名前。
  • TABLE_NAME: テーブルの名前。

読み取り / 書き込みの相互運用性とテーブル管理(プレビュー)を有効にするには、TBLPROPERTIES 句にプロパティを追加します。

TBLPROPERTIES (
  'gcp.biglake.bigquery-dml.enabled' = true,
  'gcp.biglake.table-management.enabled' = true
)

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

次の値を置き換えます。

  • SCHEMA_NAME: スキーマの名前。
  • TABLE_NAME: テーブルの名前。

読み取り / 書き込みの相互運用性とテーブル管理(プレビュー)を有効にするには、次のプロパティを WITH 句に追加します。

WITH (
  "gcp.biglake.bigquery-dml.enabled" = 'true',
  "gcp.biglake.table-management.enabled" = 'true'
)

gcloud

Google Cloud CLI を使用してテーブルを作成するには、gcloud biglake iceberg tables create コマンドを実行します。

gcloud biglake iceberg tables create \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --create-from-file="TABLE_DEFINITION_FILE"

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

  • PROJECT_ID: 実際の Google Cloudプロジェクト ID。
  • CATALOG_ID: カタログの ID。
  • NAMESPACE_NAME: カタログの名前空間の名前。
  • TABLE_DEFINITION_FILE: Iceberg テーブル定義を含む JSON ファイルのパス。

BigQuery

BigQuery から Lakehouse ランタイム カタログに Apache Iceberg テーブルを作成するには、次の GoogleSQL CREATE TABLE ステートメントを使用します。BigQuery からテーブルを作成すると、BigQuery DML とテーブル管理がデフォルトで有効になります。自動テーブル管理を使用するには、カタログで認証情報自動販売モードを使用する必要があります。

CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • CATALOG_ID: Lakehouse ランタイム カタログ ID。
  • NAMESPACE: Iceberg 名前空間の名前。
  • TABLE_NAME: Iceberg テーブルの名前。

REST

REST API を使用して Iceberg テーブルを作成するには、CreateIcebergTable エンドポイントに POST リクエストを送信します。

POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables

リクエストの本文には、テーブル スキーマ、パーティション仕様、初期プロパティを定義する有効な Iceberg CreateTableRequest JSON ペイロードが含まれている必要があります。

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • CATALOG_ID: カタログの ID。
  • NAMESPACE_NAME: カタログの名前空間の名前。

次のステップ