Hologres V3.0 以降では、DLF 2.0 をソースとする外部スキーマに外部テーブルを作成できます。Apache Paimon 形式の外部テーブルのみを作成できます。このトピックでは、CREATE EXTERNAL TABLE ステートメントの使用方法と制限について説明します。
構文
テーブル作成構文
次のコードは、CREATE EXTERNAL TABLE ステートメントの構文を示しています。
CREATE EXTERNAL TABLE [IF NOT EXISTS] <ext_db_name>.<ext_schema_name>.<ext_table_name>
(
[{
<col_name> <col_type> [<col_constraints> [, ...]] |
<table_constraints> [, ...]
}]
)
[LOGICAL PARTITION BY LIST(<col_name> [, ...])]
[
WITH
(
"<property>" = '<value>' [, ...]
)
];
WITH 句のパラメーター
パラメーター | 説明 | 例 |
table_format | 作成する外部テーブルのテーブル形式。Apache Paimon テーブルのみがサポートされています。 |
|
file_format | 作成する外部テーブルのファイル形式。ORC 形式と Parquet 形式のみがサポートされています。 |
|
bucket | データはバケット単位で Apache Paimon テーブルとの間で読み書きされます。 このパラメーターを設定すると、非パーティションテーブルのすべてのデータ、またはパーティションテーブルの各パーティションのデータが異なるバケットに分散されます。これにより、ジョブで Apache Paimon テーブルとの間でデータを同時読み取りまたは同時書き込みできるため、処理効率が向上します。詳細については、「データ分散」をご参照ください。 |
|
bucket-key | データをバケットに分散するためのキー。 |
|
changelog-producer | ダウンストリームでストリーミングモードでの使用を可能にするには、Apache Paimon テーブルに対する INSERT、DELETE、および UPDATE 操作の完全な変更ログが必要です。変更ログは、データベースのバイナリログに似ています。このパラメーターは、Apache Paimon テーブルの変更ログを生成する方法を指定します。詳細については、「変更ログプロデューサー」をご参照ください。 |
|
その他の操作
テーブル作成ステートメントのクエリ
SELECT * FROM hologres.hg_dump_script_external('<ext_db_name>.<ext_schema_name>.<ext_table_name>');
テーブルの列とパーティションのプロパティのクエリ
SELECT * FROM hologres.hg_external_columns('<ext_db_name>', '<ext_schema_name>', '<ext_table_name>');
外部スキーマ内のすべてのテーブルのクエリ
SELECT * FROM hologres.hg_external_tables ('<ext_db_name>', '<ext_schema_name>');
外部テーブルのメタデータの更新
REFRESH CACHE FOR External TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH( cache_level = 'metadata');
例
DLF 2.0 にパーティションテーブルを作成する
この例では、Apache Paimon 追加専用テーブルが作成されます。
CREATE EXTERNAL TABLE ext_db_dlf.ext_schema_dlf.ext_par_table_dlf(
id TEXT,
created_at BIGINT,
type TEXT,
actor_id TEXT,
actor_login TEXT,
repo_id TEXT,
repo_name TEXT,
org TEXT,
org_login TEXT
)
LOGICAL PARTITION BY LIST(created_at)
WITH (
"file_format" = 'orc',
"bucket"=6,
"bucket-key"='id'
);
DLF 2.0 に非パーティションテーブルを作成する
この例では、Apache Paimon プライマリキテーブルが作成されます。
CREATE EXTERNAL TABLE openlake_win.github_events.gh_event_ods(
id TEXT,
created_at BIGINT,
type TEXT,
actor_id TEXT,
actor_login TEXT,
repo_id TEXT,
repo_name TEXT,
org TEXT,
org_login TEXT,
PRIMARY KEY(id)
) WITH (
"changelog-producer"='input',
"bucket"=6,
"bucket-key"='id'
);