9.6. XML データファイルソースからのインポート
JBoss Data Virtualization はデータソースとしての XML ファイルをサポートします。これらのデータソースからインポートし、データを数分でクエリーするために必要なメタモデルを作成できます。以下の手順に従って、XML データソースの定義、XML データファイルの解析パラメーターの設定、必要な Teiid プロジージャーが含まれるソースモデルの作成、および XML データファイルの列データを定義する SQL が含まれるビューテーブルの作成を行います。
Teiid Designer の JDBC、Salesforce、および WSDL インポーターと同様に、XML ファイルインポーターは特定のデータツール接続プロファイルの使用を基にします。
インポーターの結果には、
getTextFiles() または invokeHTTP() プロシージャーが含まれるソースモデルが含まれます。これらのプロシージャーは JBoss Data Virtualization によってサポートされます。
インポーターは、選択した XMLソースファイルのビューテーブルが含まれる新しいビューモデルも作成します。ソースモデルからの
getTextFiles() プロシージャーが含まれる SQL トランスフォーメーションはビューテーブル内で生成され、Teiid XMLTABLE() 関数に必要な列定義およびパラメーターはデータファイルのクエリーに使用されます。また、新しいビューモデルを作成する代わりに既存のビューモデルの更新を選択することもできます。
XMLTABLE 関数は XQuery を使用して表形式出力を生成します。XMLTABLE 関数は暗黙的にはネストされたテーブルで、先行の FROM 句エントリーに関連付けることがあります。XMLTABLE は SQL/XML 2006 仕様の一部です。
XMLTABLE([<NSP>,] xquery-expression [<PASSING>] [COLUMNS <COLUMN>, ... )] AS name
XMLTABLE([<NSP>,] xquery-expression [<PASSING>] [COLUMNS <COLUMN>, ... )] AS name
COLUMN := name (FOR ORDINALITY | (datatype [DEFAULT expression] [PATH string]))
COLUMN := name (FOR ORDINALITY | (datatype [DEFAULT expression] [PATH string]))
Teiid Designer は各ビューテーブルの完全な SQL ステートメントを次の形式で構築します。
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
SELECT A.entryDate AS entryDate, A.internalAudit AS internalAudit FROM (EXEC CCC.getTextFiles('sample.xml')) AS f, XMLTABLE(XMLNAMESPACES('http://www.kaptest.com/schema/1.0/party' AS pty), '/pty:students/student' PASSING XMLPARSE(DOCUMENT f.file) COLUMNS entryDate FOR ORDINALITY, internalAudit string PATH '/internalAudit') AS A
SELECT A.entryDate AS entryDate, A.internalAudit AS internalAudit FROM (EXEC CCC.getTextFiles('sample.xml')) AS f, XMLTABLE(XMLNAMESPACES('http://www.kaptest.com/schema/1.0/party' AS pty), '/pty:students/student' PASSING XMLPARSE(DOCUMENT f.file) COLUMNS entryDate FOR ORDINALITY, internalAudit string PATH '/internalAudit') AS A
XML データファイルソースからインポートするには、以下の手順に従います。
- In Model Explorer, click File > Import action
in the toolbar or select a project, folder or model in the tree and choose Import...
- インポートオプション Teiid Designer > File Source (XML) >> Source and View Model を選択し、Next> をクリックします。
図9.19 XML ファイルソースからのインポート
- ウィザードの次のページでは、XML ファイルがローカルまたはリモートであるかを指定する XML インポートモードを選択できます。上部の Description には、このウィザードが実行する操作の詳細が記載されています。XML file on local file system または XML file via remote URL を選択し、Next> をクリックします。
図9.20 XML Import File Options ページ
- ドロップダウンメニューから既存または以前の接続プロファイルを選択するか、 ボタンをクリックして New Connection Profile ダイアログを開始します。または、 をクリックして選択前に既存の接続プロファイルを変更します。新しい XML 接続プロファイルは、XML File URL または REST Web Services URL から作成できます。XML File URL オプションでは、ファイルまたは URL ベースの XML ドキュメントへの接続が有効になります。REST Web Service URL オプションでは、REST ベースの Web サービスへの接続が有効になります。接続プロファイルを選択した後、接続プロファイルからの XML データファイルが Available Data Files パネルに表示されます。処理するデータファイルを選択します。データの読み出しと結果セットの返信に必要な SQL トランスフォーメーションが含まれるビューテーブルの構築には、このファイルからのデータとカスタムインポートオプションが使用されます。最後に、ページの下部にある Source Model Definition に一意なソースモデル名を入力するか、Browse ボタンを使用して既存のソースモデルを選択します。モデル名の有効性、モデルが存在するかどうか、およびモデルに
getTextFiles()プロジージャーがすでに含まれているかどうかを示す Model Status を確認してください。この場合、ソースモデルもプロシージャーも生成されません。このページの作業を終了したら Next> をクリックします。図9.21 XML Data File Source Selection ページ
- このインポーターの主な目的は、ユーザー定義のデータファイルをクエリーするために必要なトランスフォーメーションが含まれるビューテーブルを作成することです。このページには、下部のパネル (Generated SQL Statement) に表示される生成された SQL ステートメントをカスタマイズするために使用できるオプションが示されます。パネルには、XML ファイルの内容のツリービューと、中央にある Column Information パネルに表示される列エントリーの作成に使用するアクションやボタンが含まれます。列を作成するには、ルート XML 要素を選択し、右クリックで アクションを選択します。これにより、ルートパスの値が入力されます。次に、クエリーに含めたいツリーの列を選択します。、、または を使用して SQL の列情報を管理すると、カスタムの列を変更または作成できます。列の プロパティーの値は、定義されたルートパスを基にした選択された要素への相対パスになります。ルートパスが定義されていない場合は、パスはすべて絶対パスになります。各列エントリーにはデータタイプとオプションのデフォルト値が必要になります。
XMLTABLE()関数の詳細は Teiid User's Guide を参照してください。このページの作業を終了したら Next> をクリックします。図9.22 XML File Delimited Columns Options ページ
- View Model Definition ページで、新しいビューモデルを作成するフォルダーの場所を選択します。新しいビューテーブルに既存のモデルを選択することもできます。モデル名の有効性、モデルが存在するかどうか、およびモデルに
getTextFiles()プロジージャーがすでに含まれているかどうかを示す Model Status を確認してください。Finish をクリックしてモデルを生成し、ウィザードを終了します。図9.23 View Model Definition ページ