Hologres では、Object Storage Service (OSS) などの外部データソースへの接続の詳細を指定するために Foreign Server を設定します。これにより、システム間で外部テーブルを作成し、データをクエリできます。このトピックでは、HoloWeb ビジュアルツールを使用して Foreign Server を作成し、外部テーブルを管理し、データをプレビューする方法について説明します。
前提条件
-
OSS バケットを作成し、データをインポートします。詳細については、「クイックスタート」をご参照ください。
-
DLFカタログが作成されました。詳細については、「データカタログ」をご参照ください。
-
使用する外部データラッパーに対する USAGE 権限が必要です。権限付与手順については、「権限を付与」をご参照ください。
-
Foreign Server で使用される DLF カタログには、すでにデータベースとテーブルが含まれている必要があります。作成手順については、「データベース、テーブル、および関数」をご参照ください。
制限事項
Hologres は、外部テーブルデータに対するクロスリージョンクエリをサポートしていません。
Foreign Server の作成
Hologres では、Foreign Server は、外部データラッパーを介して Object Storage Service (OSS) などの外部データソースにアクセスするための接続の詳細を指定します。これにより、システム間のデータアクセスとクエリが可能になります。また、「ユーザーマッピング」を使用して、特定のユーザーの接続の詳細を定義することもできます。詳細については、「Foreign Server の作成」をご参照ください。
-
Hologres Management Console にログインします。
-
トップメニューバーの左側で、適切なリージョンを選択します。
-
左側のナビゲーションウィンドウで、Instances を選択します。ターゲットインスタンスの Actions 列にある Data Lake Acceleration をクリックして、データレイクアクセラレーションを有効にします。
-
Go to HoloWeb をクリックして、HoloWeb 開発ページを開きます。
-
ターゲットデータベースにログイン後、トップメニューバーの Metadata Management をクリックします。
-
Metadata Management ページで、 をクリックします。

パラメータの説明は次のとおりです。
パラメーター
説明
サーバー名
Foreign Server の名前。
重要Foreign Server 名はデータベース内で一意である必要があります。
DLFエンドポイント
デフォルトは現在のリージョンの DLF エンドポイントです。詳細については、「サポートされているリージョンとエンドポイント」をご参照ください。
DLFカタログ
ドロップダウンリストから既存の DLF カタログを選択します。リストが空の場合は、Create in DLF Console をクリックします。
OSSエンドポイント
デフォルトは現在のリージョンのネイティブ OSS エンドポイントです。OSS-HDFS エンドポイントを使用するには、ドロップダウンリストから選択します。OSS バケットを作成していない場合は、Create in OSS Console をクリックします。
説明-
OSS エンドポイント: 「リージョンとエンドポイント」から取得します。
-
OSS-HDFS エンドポイント: OSS-HDFS が有効になっている OSS バケットの Overview ページで確認します。
-
-
Submit をクリックして、Foreign Server の作成を完了します。
外部テーブルを作成する
-
Hologres Management Console にログインします。
-
トップメニューバーの左側から、リージョンを選択します。
-
Go to HoloWeb をクリックして、HoloWeb 開発ページを開きます。
-
HoloWeb のトップメニューバーで、Metadata Management をクリックします。
-
Metadata Management ページで、 をクリックします。

必要に応じて、次のいずれかのアクセラレーションモードを選択します: [データベース全体アクセラレーション]、[部分アクセラレーション]、または [単一テーブルアクセラレーション]。パラメータの説明は次のとおりです。
データベース全体アクセラレーション
カテゴリ
パラメータ名
説明
Acceleration Mode
データベース全体アクセラレーション
指定された DLF データベース配下のすべてのテーブルを Hologres 外部テーブルとして作成します。
DLFデータソース
サーバー名
外部データソースへの接続の詳細を定義する既存の Foreign Server。
DB名
Foreign Server で指定された DLF カタログ配下のデータベース名。
Target Location
Holoスキーマ
デフォルトは public です。ドロップダウンリストから適切な権限を持つ別のスキーマを選択します。
Advanced Options
Table Name Conflict
作成中に同じ名前のテーブルがすでに存在する場合、次のいずれかのアクションを選択します。
-
[他のテーブルの作成を無視して続行]: 現在のテーブルをスキップし、他のテーブルの作成を続行します。
-
[既存のテーブルを更新および変更]: 既存のテーブルのデータを更新します。
-
[エラーを返し、重複作成を停止]: エラーを返し、それ以上の作成を停止します。
Unsupported Data Type
テーブル作成中にサポートされていないデータ型が存在する場合、次のいずれかのアクションを選択します。
-
[エラーを返し、インポートを失敗させる]: エラーを返し、インポートを失敗させます。
-
Ignore and Skip Table of Unsupported Fields: サポートされていないフィールドを持つテーブルをスキップし、インポートを続行します。
部分アクセラレーション
カテゴリ
パラメータ名
説明
Acceleration Mode
部分アクセラレーション
特定のテーブルを選択して外部テーブルとして作成します。テーブル名であいまい検索を使用します。
DLFデータソース
サーバー名
外部データソースへの接続の詳細を定義する既存の Foreign Server。
DB名
Foreign Server で指定された DLF カタログ配下のデータベース名。
Target Location
Holoスキーマ
デフォルトは public です。ドロップダウンリストから適切な権限を持つ別のスキーマを選択します。
Advanced Options
Table Name Conflict
作成中に同じ名前のテーブルがすでに存在する場合、次のいずれかのアクションを選択します。
-
[他のテーブルの作成を無視して続行]: 現在のテーブルをスキップし、他のテーブルの作成を続行します。
-
[既存のテーブルを更新および変更]: 既存のテーブルのデータを更新します。
-
[エラーを返し、重複作成を停止]: エラーを返し、それ以上の作成を停止します。
Unsupported Data Type
テーブル作成中にサポートされていないデータ型が存在する場合、次のいずれかのアクションを選択します。
-
[エラーを返し、インポートを失敗させる]: エラーを返し、インポートを失敗させます。
-
Ignore and Skip Table of Unsupported Fields: サポートされていないフィールドを持つテーブルをスキップし、インポートを続行します。
検索
テーブル名であいまい検索を使用して、ターゲットテーブルを検索して選択します。
単一テーブルアクセラレーション
カテゴリ
パラメータ名
説明
Acceleration Mode
単一テーブルアクセラレーション
単一の指定されたテーブルに対して Hologres 外部テーブルを作成します。
DLFデータソース
サーバー名
外部データソースへの接続の詳細を定義する既存の Foreign Server。
DB名
Foreign Server で指定された DLF カタログ配下のデータベース名。
テーブル名
DLF データベースで作成されたテーブル名。
Hologres Target Table
スキーマ
デフォルトは public です。ドロップダウンリストから適切な権限を持つ別のスキーマを選択します。
テーブル名
新しい Hologres 外部テーブルの名前。
説明ターゲット DLF テーブル名を入力すると、システムが自動入力します。必要に応じて名前を変更します。
Target Table Description
新しい Hologres 外部テーブルのカスタム説明。
-
-
Submit をクリックします。更新後、新しい外部テーブルが左側の対応するスキーマの下に表示されます。
-
(オプション) 作成された外部テーブルをダブルクリックし、Query Table をクリックして SQL クエリウィンドウを開き、標準 PostgreSQL 構文を使用して開発します。
説明テーブル名を入力すると、外部ソーステーブルのすべてのフィールドが表示されます。デフォルトでは、すべてのフィールドが外部テーブルに作成されます。特定のフィールドのみを作成するには、単一テーブルアクセラレーションまたは SQL ステートメントを使用します。SQL ベースの外部テーブル作成については、「CREATE FOREIGN TABLE」をご参照ください。
Foreign Server の追加操作 (SQL メソッド)
作成が成功した後、SQL ステートメントを使用して Foreign Server を表示、変更、または削除します。構文は次のとおりです。
-
作成された Foreign Server の表示
SELECT * FROM pg_foreign_server; -
Foreign Server の DLF カタログの変更
ALTER SERVER <foreignserver_name> OPTIONS (ADD|SET|DROP dlf_catalog ['<catalog_name>']) ;パラメータの説明は次のとおりです。
パラメーター
説明
foreignserver_name
変更する Foreign Server の名前。
ADD
Foreign Server に DLF カタログを追加します。
SET
Foreign Server の DLF カタログを変更します。
DROP
Foreign Server から DLF カタログを削除します。例:
ALTER SERVER foreign_server_test OPTIONS (DROP dlf_catalog) ;。 -
Foreign Server の削除
DROP SERVER <foreignserver_name> CASCADE;パラメータの説明は次のとおりです。
パラメーター
説明
foreignserver_name
削除する Foreign Server の名前。
CASCADE
Foreign Server を削除する際、外部テーブルなどの依存オブジェクトも削除します。
外部テーブルの追加操作
外部テーブルを編集する
-
HoloWeb ページの左側のナビゲーションウィンドウで、[ログイン済みインスタンス] リストを選択します。
-
ターゲットインスタンス > ターゲットデータベース > ターゲットスキーマ をクリックし、Foreign Tables をクリックして、作成されたすべての外部テーブルを表示します。
-
ターゲットの外部テーブルをダブルクリックし、詳細ページで Edit Table をクリックします。
-
必要に応じて、外部ソーステーブルからマッピングされた Fields または Partitions を変更します。
-
Submit をクリックして、外部テーブルへの変更を保存します。
外部テーブルの名前を変更する
-
HoloWeb の左側のナビゲーションウィンドウにある [ログイン済みインスタンス] リストで、ターゲットの外部テーブルを見つけます。手順については、「外部テーブルの編集」の手順 1~2 をご参照ください。
-
ターゲットの外部テーブルを右クリックし、Rename を選択します。
-
Modify Table Name ダイアログボックスで、新しい名前を入力します。
-
OK をクリックします。
外部テーブルを削除する
-
HoloWeb の左側のナビゲーションウィンドウにある [ログイン済みインスタンス] リストで、ターゲットの外部テーブルを見つけます。手順については、「外部テーブルの編集」の手順 1~2 をご参照ください。
-
ターゲットの外部テーブルを右クリックし、Delete Table を選択します。
-
Delete Table ダイアログボックスで、OK をクリックします。
データプレビュー
-
HoloWeb の左側のナビゲーションウィンドウにある [ログイン済みインスタンス] リストで、ターゲットの外部テーブルを見つけます。手順については、「外部テーブルの編集」の手順 1~2 をご参照ください。
-
ターゲットの外部テーブルをダブルクリックし、外部テーブル詳細ページで Data Preview をクリックします。
FAQ
-
問題: HoloWeb で外部テーブルにアクセスする際、RAM DLF API 権限エラーが発生します。エラーメッセージには次の内容が含まれます。
You are not authorized to perform the operation. Please use RAM to authorize the operation.Action: [dlf:xxx]. -
ソリューション: RAM で AliyunDLF 関連の OpenAPI 権限を付与します
参考文献
-
SQL を使用して Foreign Server を作成することもできます。詳細については、「Foreign Server の作成」をご参照ください。
-
SQL を使用して外部テーブルを作成することもできます。詳細については、「Hologres インスタンスで外部テーブルを作成」をご参照ください。
-
外部テーブル DDL ステートメントの詳細については、以下をご参照ください。