Apache Iceberg テーブルを作成すると、Lakehouse ランタイム カタログ の名前空間内に新しいテーブル メタデータとストレージが初期化されます。
既存の Apache Iceberg テーブルをカタログで使用できるようにする場合は、テーブルを登録するをご覧ください。
テーブルの作成時に、名前空間またはテーブル レベルで明示的なストレージの場所を指定しない場合、システムはカタログのデフォルトの場所(カタログのベース Cloud Storage バケットから派生)に、名前空間とテーブルの識別子を追加して、テーブルのメタデータとデータ ディレクトリを自動的に作成します。
始める前に
-
BigLake API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。 - Apache Iceberg REST カタログ エンドポイントを使用して Lakehouse ランタイム カタログを設定します。
必要なロール
テーブルの作成に必要な権限を取得するには、プロジェクトとストレージ バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
テーブルを作成する:
- BigLake 管理者(
roles/biglake.admin)- プロジェクト - ストレージ管理者(
roles/storage.admin)- ターゲット Cloud Storage バケット
- BigLake 管理者(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
テーブルの機能とサポート
Lakehouse ランタイム カタログでテーブルを使用する場合は、さまざまなテーブルタイプとそのオプトイン 機能を理解して おくと便利です。Apache Iceberg テーブルの使用について詳しくは、Apache Iceberg テーブルの概要をご覧ください。
サポートされている Iceberg テーブル
Apache Iceberg V2(GA)テーブルと V3(プレビュー)テーブルのみがサポートされています。Iceberg V1 テーブルはサポートされていません。既存の V1 テーブルをアップグレードするには、Iceberg V1 テーブルを V2 にアップグレードするをご覧ください。
テーブル オプションを使用する(プレビュー)
特定のテーブル プロパティを構成することで、BigQuery データ操作言語(DML)や自動テーブル管理など、BigQuery のマネージド機能を使用するようにオプトインできます。これらの機能は、テーブルの作成場所に応じて異なる方法で有効になります。
- BigQuery から: BigQuery DML と自動テーブル管理はデフォルトで有効になっています。
- オープンソース エンジンから: オプトインするには、テーブル プロパティを明示的に構成する必要があります。詳細については、テーブル オプションを構成するをご覧ください。
テーブルを作成する
Iceberg テーブルを作成します。
コンソール
コンソールで、[Lakehouse] に移動します。 Google Cloud
既存のカタログを選択するか、カタログがない場合は作成します。
メニューバーで [+ テーブルを作成] をクリックします。
[**テーブル形式**] で [**Iceberg**] を選択します。
[**テーブル名**] に一意のテーブル名を入力します。
省略可: [プロパティ] セクションで、テーブル プロパティを構成します。
gcp.biglake.bigquery-dml.enabledやgcp.biglake.table-management.enabledなどの事前定義プロパティが表示されます。たとえば、これらの値を
trueに変更して、BigQuery DML または自動テーブル管理を有効にできます。詳細については、 テーブル オプションを構成するをご覧ください。[作成] をクリックします。
テーブルが [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
gcloud を使用してテーブルを作成するには、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 プロジェクト IDCATALOG_ID: Lakehouse ランタイム カタログ IDNAMESPACE: 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: カタログの名前空間の名前。
次のステップ
- テーブルを一覧表示する方法を学習する。
- テーブルにデータを挿入する方法を学習する。
- テーブル ACL を管理する方法を学習する。