すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE EXTERNAL TABLE

最終更新日:Jan 11, 2025

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 テーブルのみがサポートされています。

"table_format" = 'paimon'

file_format

作成する外部テーブルのファイル形式。ORC 形式と Parquet 形式のみがサポートされています。

"file_format" = 'orc'

bucket

データはバケット単位で Apache Paimon テーブルとの間で読み書きされます。

このパラメーターを設定すると、非パーティションテーブルのすべてのデータ、またはパーティションテーブルの各パーティションのデータが異なるバケットに分散されます。これにより、ジョブで Apache Paimon テーブルとの間でデータを同時読み取りまたは同時書き込みできるため、処理効率が向上します。詳細については、「データ分散」をご参照ください。

"bucket" = '1'

bucket-key

データをバケットに分散するためのキー。

"bucket-key"='id'

changelog-producer

ダウンストリームでストリーミングモードでの使用を可能にするには、Apache Paimon テーブルに対する INSERT、DELETE、および UPDATE 操作の完全な変更ログが必要です。変更ログは、データベースのバイナリログに似ています。このパラメーターは、Apache Paimon テーブルの変更ログを生成する方法を指定します。詳細については、「変更ログプロデューサー」をご参照ください。

"changelog-producer"='input'

その他の操作

テーブル作成ステートメントのクエリ

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