テーブルの作成

Apache Iceberg テーブルを作成すると、テーブル メタデータが Lakehouse ランタイム カタログの Namespace に登録されます。

サポートされている表の形式

Apache Iceberg V2 テーブルのみがサポートされています。Iceberg V1 テーブルは対象外です。既存の Iceberg V1 テーブルがある場合は、登録または使用する前に、V2 にアップグレードする必要があります(たとえば、ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); を実行するか、同様のエンジン オペレーションを使用します)。

テーブルの作成時に名前空間またはテーブルレベルで明示的なストレージの場所を指定しない場合、システムは、名前空間とテーブルの識別子を追加して、カタログのデフォルトの場所(カタログのベースとなる Cloud Storage バケットから派生)の下にテーブルのメタデータとデータ ディレクトリを自動的に作成します。

クエリエンジンの統合に加えて、Lakehouse ランタイム カタログはオープンソースの Iceberg REST Catalog API 仕様(POST /v1/{prefix}/namespaces/{namespace}/tables)を実装しているため、互換性のある REST クライアントでテーブルを直接作成できます。

始める前に

さまざまなタイプのテーブルと、それらを使用した場合の影響については、テーブルの概要をご覧ください。

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

  2. BigLake API を有効にします。

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

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API の有効化

必要なロール

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

  • すべて:
    • BigLake 管理者(roles/biglake.admin)- プロジェクト
    • ストレージ管理者(roles/storage.admin) - ターゲット Cloud Storage バケット

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

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

テーブルを作成する

Iceberg テーブルを作成します。

コンソール

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

    [レイクハウス] に移動

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

  3. メニューバーで [+Create Table] をクリックします。

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

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

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

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

Spark

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

spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

次の値を置き換えます。

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

Trino

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

DESCRIBE SCHEMA_NAME.TABLE_NAME;

次の値を置き換えます。

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

Trino で BigQuery カタログ連携を使用する場合、テーブルのロケーションを指定することはできません。スキーマのデフォルトの場所が常に使用されます。

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: Lakehouse ランタイム カタログの ID。
  • NAMESPACE_NAME: カタログ Namespace の名前。

次のステップ