Oracle® Fusion Middleware

Oracle Data Integratorでのナレッジ・モジュールの開発

12c (12.2.1.2.6)

E85909-01(原本部品番号:E80993-02)

2017年2月

Oracle Fusion Middleware Oracle Data Integratorでのナレッジ・モジュールの開発, 12c (12.2.1.2.6)

E85909-01

Copyright © 2010, 2017, Oracle and/or its affiliates All rights reserved.

原本著者: Laura Hofman Miquel、Aslam Khan

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

例一覧

図一覧

表一覧

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

1 ナレッジ・モジュールの概要

- 1.1 ナレッジ・モジュールとは

- 1.2 リバースエンジニアリング・ナレッジ・モジュール(RKM)

- 1.3 チェック・ナレッジ・モジュール(CKM)

- 1.4 ロード・ナレッジ・モジュール(LKM)

- 1.5 統合ナレッジ・モジュール(IKM)

- 1.6 抽出ナレッジ・モジュール(XKM)

- 1.7 ジャーナル化ナレッジ・モジュール(JKM)

- 1.8 サービス・ナレッジ・モジュール(SKM)

- 1.9 ナレッジ・モジュール開発者のためのガイドライン

2 コンポーネントKMの概要

- 2.1 コンポーネントKMとは

- 2.2 コンポーネントKMの構文要素

- 2.3 コンポーネントKM - フロー制御コマンド

- 2.4 グローバル・テンプレート

- 2.5 KM継承

- 2.6 Groovy変数定義スクリプト

- 2.7 構造化置換API

- 2.8 タスク制御オブジェクト

- 2.9 シード済コンポーネントKM

3 OdiRef置換APIの概要

- 3.1 代替APIの概要

- 3.2 置換メソッドの使用

- 3.2.1 一般構文

- 3.2.2 CKM固有の構文

- 3.2.3 フレックスフィールドの使用

- 3.2.4 コード生成タグの使用

- 3.3 アクションでの置換メソッドの使用

- 3.3.1 アクション行のコード

- 3.3.2 アクション・コール・メソッド

- 3.4 オブジェクト名の使用

- 3.5 表、列および式のリストの使用

- 3.5.1 INSERT.getTargetColListを使用した表の作成

- 3.5.2 getTargetColListを使用した表の作成

- 3.5.3 getColListを使用したINSERT VALUES文

- 3.5.4 getSrcTableListの使用

- 3.6 ソースのSELECT文の生成

- 3.7 APIによるその他の情報の取得

- 3.8 コード生成の高度な技術

4 リバースエンジニアリング戦略

- 4.1 カスタマイズ・リバースエンジニアリング・プロセス

- 4.1.1 SNP_REV表

- 4.1.2 カスタマイズ・リバースエンジニアリング戦略

- 4.2 ケース・スタディ

- 4.2.1 RKM Oracle

- 4.2.1.1 SNP_REV表のリセット

- 4.2.1.2 表の取得

- 4.2.1.3 ビュー、パーティション、列、FK、キーおよびその他のOracleメタデータの取得

- 4.2.1.4 メタデータの設定

5 データ整合性の戦略

- 5.1 データ整合性のチェック・プロセス

- 5.1.1 チェック・ナレッジ・モジュールの概要

- 5.1.2 エラー表の構造

- 5.1.2.1 エラー表の構造

- 5.1.2.2 サマリー表の構造

- 5.2 ケース・スタディ

- 5.2.1 Oracle CKM

- 5.2.1.1 チェック表の削除

- 5.2.1.2 チェック表の作成

- 5.2.1.3 エラー表の作成

- 5.2.1.4 PKエラーの挿入

- 5.2.1.5 制御表からのエラーの削除

- 5.2.2 存在しない参照を動的に作成

- 5.2.2.1 ユースケース

- 5.2.2.2 ディスカッション

- 5.2.2.3 実装の詳細

- 5.2.2.3.1 エラー表の作成

- 5.2.2.3.2 FKエラーの挿入

- 5.2.2.3.3 欠落している参照の挿入

- 5.2.2.3.4 制御表からのエラーの削除

6 ロード戦略

- 6.1 ロード・プロセス

- 6.1.1 ロード・プロセスの概要

- 6.1.2 ロード表の構造

- 6.1.3 ロード・メソッド

- 6.1.3.1 エージェントを使用したロード

- 6.1.3.2 ローダーを使用したファイルのロード

- 6.1.3.3 アンロード/ロードを使用したロード

- 6.1.3.4 RDBMS固有の戦略を使用したロード

- 6.2 ケース・スタディ

- 6.2.1 LKM SQL to SQL

- 6.2.1.1 作業表の削除

- 6.2.1.2 作業表の作成

- 6.2.1.3 データのロード

- 6.2.1.4 作業表の削除

7 統合戦略

- 7.1 統合プロセス

- 7.1.1 統合プロセスの概要

- 7.1.2 統合戦略

- 7.1.2.1 ターゲット上のステージング領域を使用した戦略

- 7.1.2.1.1 追加

- 7.1.2.1.2 制御追加

- 7.1.2.1.3 増分更新

- 7.1.2.1.4 緩やかに変化するディメンション

- 7.1.2.2 ターゲットと異なるステージング領域による戦略

- 7.1.2.2.1 ファイルからサーバーへの追加

- 7.1.2.2.2 サーバーからサーバーへの追加

- 7.1.2.2.3 サーバーからファイルまたはJMSへの追加

- 7.2 ケース・スタディ

- 7.2.1 単純な置換または追加

- 7.2.1.1 ターゲット表の削除

- 7.2.1.2 新しい行の挿入

- 7.2.2 ロード前のターゲット表のバックアップ

- 7.2.2.1 バックアップ表の削除

- 7.2.2.2 バックアップ表の作成

- 7.2.3 法的コンプライアンスのためにレコードの追跡

- 7.2.3.1 追跡レコードのロード

A SQL構造化置換APIリファレンス

- A.1 SqlInsertStatement.getColumnList()

- A.2 SqlInsertStatement.getQuery()

- A.3 SqlQuery.getSubqueries ()

- A.4 SqlInsertStatement.getTargetTable ()

- A.5 SqlQuery.getFromList ()

- A.6 SqlQuery.getSelectList ()

- A.7 FromClause.getJoinTable ()

- A.8 FromClause.getSourceTables ()

- A.9 FromClause.getTableQuery ()

- A.10 ArrayExpression.getTemplate()

- A.11 ArrayExpression.getChildMap()

B 置換APIリファレンス

- B.1 置換メソッドのリスト

- B.1.1 グローバル・メソッド

- B.1.2 ジャーナル化ナレッジ・モジュール

- B.1.3 ロード・ナレッジ・モジュール

- B.1.4 チェック・ナレッジ・モジュール

- B.1.5 統合ナレッジ・モジュール

- B.1.6 リバースエンジニアリング・ナレッジ・モジュール

- B.1.7 サービス・ナレッジ・モジュール

- B.1.8 アクション

- B.2 置換メソッドのリファレンス

- B.2.1 getAK()メソッド

- B.2.2 getAKColList()メソッド

- B.2.3 getAllTargetColList()メソッド

- B.2.4 getCatalogName()メソッド

- B.2.5 getCatalogNameDefaultPSchema()メソッド

- B.2.6 getCK()メソッド

- B.2.7 getColDefaultValue()メソッド

- B.2.8 getColList()メソッド

- B.2.9 getColumn()メソッド

- B.2.10 getContext()メソッド

- B.2.11 getDataSet()メソッド

- B.2.12 getDataSetCount()メソッド

- B.2.13 getDataType()メソッド

- B.2.14 getFilter()メソッド

- B.2.15 getFilterList()メソッド

- B.2.16 getFK()メソッド

- B.2.17 getFKColList()メソッド

- B.2.18 getFlexFieldValue()メソッド

- B.2.19 getFormattedName()メソッド

- B.2.20 getFrom()メソッド

- B.2.21 getGrpBy()メソッド

- B.2.22 getGrpByList()メソッド

- B.2.23 getHaving()メソッド

- B.2.24 getHavingList()メソッド

- B.2.25 getIndex()メソッド

- B.2.26 getIndexColList()メソッド

- B.2.27 getInfo()メソッド

- B.2.28 getJDBCConnection()メソッド

- B.2.28.1 getJDBCConnection("WORKREP")

- B.2.29 getJDBCConnectionFromLSchema()メソッド

- B.2.30 getJoin()メソッド

- B.2.31 getJoinList()メソッド

- B.2.32 getJrnFilter()メソッド

- B.2.33 getJrnInfo()メソッド

- B.2.34 getLoadPlanInstance()メソッド

- B.2.35 getModel()メソッド

- B.2.36 getNbInsert()、getNbUpdate()、getNbDelete()、getNbErrors()およびgetNbRows()メソッド

- B.2.37 getNewColComment()メソッド

- B.2.38 getNewTableComment()メソッド

- B.2.39 getNotNullCol()メソッド

- B.2.40 getObjectName()メソッド

- B.2.41 getObjectNameDefaultPSchema()メソッド

- B.2.42 getObjectShortName()メソッド

- B.2.43 getOdiGeneratedAccessName()メソッド

- B.2.44 getOdiInstance()メソッド

- B.2.45 getOggModelInfo()メソッド

- B.2.46 getOggProcessInfo()メソッド

- B.2.47 getOption()メソッド

- B.2.48 getPackage()メソッド

- B.2.49 getParentLoadPlanStepInstance()メソッド

- B.2.50 getPK()メソッド

- B.2.51 getPKColList()メソッド

- B.2.51.1 getPop()メソッド

- B.2.52 getPrevStepLog()メソッド

- B.2.53 getQuotedString()メソッド

- B.2.54 getSchemaName()メソッド

- B.2.55 getSchemaNameDefaultPSchema()メソッド

- B.2.56 getSession()メソッド

- B.2.57 getSessionVarList()メソッド

- B.2.58 getSrcColList()メソッド

- B.2.59 getSrcTablesList()メソッド

- B.2.60 getStep()メソッド

- B.2.61 getSubscriberList()メソッド

- B.2.62 getSysDate()メソッド

- B.2.63 getTable()メソッド

- B.2.64 getTargetColList()メソッド

- B.2.65 getTableName()メソッド

- B.2.66 getTargetTable()メソッド

- B.2.67 getTemporaryIndex()メソッド

- B.2.68 getTemporaryIndexColList()メソッド

- B.2.69 getUser()メソッド

- B.2.70 getVersion()メソッド

- B.2.71 hasPK()メソッド

- B.2.72 isColAttrChanged()メソッド

- B.2.73 isVersionCompatible()メソッド

- B.2.74 nextAK()メソッド

- B.2.75 nextCond()メソッド

- B.2.76 nextFK()メソッド

- B.2.77 setNbInsert()、setNbUpdate()、setNbDelete()、setNbErrors()およびsetNbRows()メソッド

- B.2.78 setTableName()メソッド

- B.2.79 setTaskName()メソッド

C SNP_REV表のリファレンス

- C.1 SNP_REV_SUB_MODEL

- C.2 SNP_REV_TABLE

- C.3 SNP_REV_COL

- C.4 SNP_REV_KEY

- C.5 SNP_REV_KEY_COL

- C.6 SNP_REV_JOIN

- C.7 SNP_REV_JOIN_COL

- C.8 SNP_REV_COND

例の一覧

図一覧

- 1-1 リバースエンジニアリング・ナレッジ・モジュール

- 1-2 チェック・ナレッジ・モジュール(STATIC_CONTROL)

- 1-3 チェック・ナレッジ・モジュール(FLOW_CONTROL)

- 1-4 ロード・ナレッジ・モジュール

- 1-5 統合ナレッジ・モジュール(ステージング領域がターゲット上にある場合)

- 1-6 統合ナレッジ・モジュール(ステージング領域がターゲットと異なる場合)

- 1-7 抽出ナレッジ・モジュール(XKM)

- 1-8 ジャーナル化ナレッジ・モジュール

- 3-1 構造化置換API

- 7-1 タイプ2 緩やかに変化するディメンションの例

- A-1 SQL構造化置換APIオブジェクトUMLダイアグラム

- A-2 SQL構造化置換APIオブジェクト(簡易バージョン)

表一覧

- 3-1 静的オブジェクト名の取得メソッド

はじめに

このマニュアルでは、Oracle Data Integratorでの独自のナレッジ・モジュールの開発方法について説明します。

ここでは、次のトピックについて説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

このマニュアルは、Oracle Data Integratorの高度な使用を必要とし、統合プロセス用にナレッジ・モジュールをカスタマイズする開発者を対象としています。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、Oracle Data Integratorライブラリの次のドキュメントを参照してください。

- Oracle Data Integratorリリース・ノート

- Oracle Data Integratorの理解

- Oracle Data Integratorの管理

- 『Oracle Data Integratorでの統合プロジェクトの開発』

- Oracle Data Integratorのインストールと構成

- Oracle Data Integratorのアップグレード

- Oracle Data Integrator接続およびナレッジ・モジュール・ガイド

- Oracle Warehouse BuilderからOracle Data Integratorへの移行

- Oracle Data Integratorツール・リファレンス

- Oracle Data Integratorデータ・サービスJava APIリファレンス

- Oracle Data Integratorオープン・ツールJava APIリファレンス

- Oracle Data IntegratorのためのSAP ABAP BWアダプタ・スタート・ガイド

- Oracle Data Integrator Java APIリファレンス

- Oracle Data IntegratorのためのSAP ABAP ERPアダプタ・スタート・ガイド

- Oracle Data Integrator 12cオンライン・ヘルプ([F1]を押すか、「ヘルプ」を選択してから、「検索」または「目次」を選択してメイン・メニューからJDeveloperヘルプ・センターを開いて、ODI Studioで入手可能)

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 ナレッジ・モジュールの概要

この章では、ナレッジ・モジュール(KM)の概要を示します。ナレッジ・モジュールの内容を説明し、そして様々なタイプのKMについて記載します。

この章の内容は次のとおりです。

- ナレッジ・モジュールとは

- リバースエンジニアリング・ナレッジ・モジュール(RKM)

- チェック・ナレッジ・モジュール(CKM)

- ロード・ナレッジ・モジュール(LKM)

- 統合ナレッジ・モジュール(IKM)

- 抽出ナレッジ・モジュール(XKM)

- ジャーナル化ナレッジ・モジュール(JKM)

- サービス・ナレッジ・モジュール(SKM)

- ナレッジ・モジュール開発者のためのガイドライン

1.1 ナレッジ・モジュールとは

ナレッジ・モジュール(KM)は、テンプレートを使用してコードを生成するプロシージャです。それぞれのKMは、データ統合プロセス全体の中の専用のジョブに対応しています。KMのコードの表示は、実行される形式とほとんど同じですが、Oracle Data Integrator (ODI)の置換メソッドが含まれている点で異なるため、一般的に多様な統合ジョブで使用できます。生成および実行されるコードは、ODIのデザイナ・モジュールで定義された宣言規則およびメタデータから導出されます。

- KMは、複数のマッピングまたはモデルの間で再使用されます。ハンドコードされたスクリプトおよびプロシージャを使用する数百ものジョブの動作を変更するには、開発者がそれぞれのスクリプトまたはプロシージャを変更する必要があります。これに対して、ナレッジ・モジュールの利点は、1回の変更が即座に数百の変換に伝播されることです。KMは、実行される論理タスクに基づきます。物理オブジェクト(データストア、属性、物理パスなど)への参照は含まれません。

- KMは、影響分析のために分析可能です。

- KMはスタンドアロンでは実行できません。マッピング、データストアおよびモデルからのメタデータが必要です。

KMは、7つの異なるカテゴリに分類されます。その要約を次の表に示します。

ナレッジ・モジュール

説明

使用方法

リバースエンジニアリングKM

Oracle Data Integrator の作業リポジトリに格納するメタデータを取得します

カスタマイズされたリバースエンジニアリングを実行するモデル

チェックKM

制約と照合してデータの一貫性をチェックします

- モデル、サブモデルおよびデータストア(データ整合性監査の場合)

- マッピング(フロー制御または静的制御の場合)

ロードKM

異種データをステージング領域にロードしたり、あるサーバーから別のサーバーへのデータの移動を促進します。

異機種間ソースを使用するマッピング

統合KM

ソースまたはステージング実行ユニットからターゲットにデータを統合します

マッピングでの使用

抽出KM

ソースおよび中間マッピング・コンポーネントに関するコア生成メタデータを作成します。

マッピングでの使用

ジャーナル化KM

ソース・ステージング領域に、チェンジ・データ・キャプチャ・フレームワーク・オブジェクトを作成します

モデル、サブモデルおよびデータストア(ジャーナルの作成、開始、停止、およびサブスクライバの登録のため)

サービスKM

データ操作Web サービスを生成します

モデルおよびデータストア

次の各項では、それぞれのタイプのナレッジ・モジュールについて説明します。

1.2 リバースエンジニアリング・ナレッジ・モジュール(RKM)

RKMの役割は、モデルのカスタマイズ済リバースエンジニアリングを実行することです。RKMは、アプリケーションまたはメタデータ・プロバイダに接続し、作成されたメタデータを変換してOracle Data Integratorのリポジトリに書き込みます。メタデータは、一時的にSNP_REV_xx表に書き込まれます。その後、RKMによってOracle Data Integrator APIがコールされ、これらの表からデータが読み取られ、Oracle Data Integratorの作業リポジトリのメタデータ表に、増分更新モードで書き込まれます。図に示すと次のようになります。

図1-1 リバースエンジニアリング・ナレッジ・モジュール

通常のRKMは、次の手順に従います。

1. 前の実行で取得されたSNP_REV_xx表を、OdiReverseResetTableツールを使用してクリーンアップします。

2. メタデータ・プロバイダからサブモデル、データストア、属性、一意キー、外部キー、条件を取得し、SNP_REV_SUB_MODEL、SNP_REV_TABLE、SNP_REV_COL、SNP_REV_KEY、SNP_REV_KEY_COL、SNP_REV_JOIN、SNP_REV_JOIN_COL、SNP_REV_CONDの各表に書き込みます。

3. OdiReverseSetMetaDataツールをコールして、作業リポジトリ内のモデルを更新します。

1.3 チェック・ナレッジ・モジュール(CKM)

CKMは、データセットのレコードが定義済の制約と一致することをチェックします。CKMは、データの整合性を保持するために使用され、全体的なデータ品質の決定に関与します。CKMは、次の2つの方法で使用できます。

- 既存データの一貫性チェック。これは、STATIC_CONTROLオプションを「Yes」に設定して、任意のデータストアまたはマッピング内で実行できます。1つ目のケースでは、現在データストアにあるデータがチェックされます。2つ目のケースでは、ターゲット・データストアのデータがロード後にチェックされます。

- ターゲット・データストアにレコードをロードする前の、受け取ったデータの一貫性チェック。これは、FLOW_CONTROLオプションを使用して実行します。このケースでは、作成されたフローのターゲット・データストアの制約が、ターゲットに書き込まれる前に、CKMによってシミュレートされます。

要約すると: CKMは、既存の表またはIKMによって作成された一時表「I$」をチェックできます。

CKMは、一連の制約とチェック対象の表名を受け入れます。また、拒否されたすべてのレコードを書き込むエラー表「E$」を作成します。さらに、チェックした結果セットからエラーのあるレコードを削除することもできます。

次の図は、STATIC_CONTROLモードおよびFLOW_CONTROLモードの両方で、CKMがどのように動作するかを示しています。

図1-2 チェック・ナレッジ・モジュール(STATIC_CONTROL)

STATIC_CONTROLモードの場合、CKMは表の制約を読取り、表のデータと照合してチェックします。制約と一致しないレコードは、ステージング領域の「E$」エラー表に書き込まれます。

図1-3 チェック・ナレッジ・モジュール(FLOW_CONTROL)

FLOW_CONTROLモードでは、CKMがマッピングのターゲット表の制約を読み取ります。これらの制約を、ステージング領域の「I$」フロー表に含まれるデータと照合してチェックします。これらの制約に違反するレコードは、ステージング領域の「E$」表に書き込まれます。

いずれの場合も、通常、CKMは次のタスクを実行します。

1. ステージング領域に「E$」エラー表を作成します。エラー表には、データストア内の属性と同じ列に加えて、エラー・メッセージのトレース、エラー元のチェックおよび日付のチェックを行うための追加の列が必要です。

2. チェックする必要がある主キー、代替キー、外部キー、条件、必須列ごとに、エラーのあるレコードを「E$」表に隔離します。

3. 必要に応じて、チェックした表からエラーのあるレコードを削除します。

1.4 ロード・ナレッジ・モジュール(LKM)

LKMは、ソース・データをソース・サーバーからターゲット・サーバー(ステージング領域または最終ターゲット)にロードします。一部のソース・データストアがソースのステージングまたはターゲット・サーバーと同じデータ・サーバー上にない場合に、マッピングによって使用されます。LKMは、ソース・サーバーで実行する必要があるマッピング・コンポーネント・ロジックを実装します。これは、単一の結果セットを取得して"C$"ステージング表(LKMタイプ = PERSISTENT)にロードするか、ターゲット・サーバーがソース・サーバー・データ(LKMタイプ = TRANSPARENT_SOURCE)にアクセスするための透過アクセス・メカニズムを設定するか、ソース・サーバーがターゲット・サーバーに直接アクセスしてターゲット・データストア(LKMタイプ = TRANSPARENT_TARGET)を直接ロードするための透過アクセス・メカニズムを設定します。

図1-4 ロード・ナレッジ・モジュール

1. LKMは、ステージング領域に一時表「C$」を作成します。この表には、ソース・サーバーからロードされたレコードが保持されます。

2. LKMは、ソース上で適切な変換を実行することで、ソース・サーバーから一連の事前変換済レコードを取得します。SQLタイプのLKMについては、ソース・サーバーがRDBMSの場合、単一のSQL SELECT問合せを使用して実行されます。ソースにSQLの機能がない場合(フラット・ファイルまたはアプリケーションなど)、LKMは、単純に適切な方法(ファイルの読取りまたはAPIの実行)でソース・データを読み取ります。

3. LKMは、ステージング領域の「C$」表にレコードをロードします。

注意:
ステージング領域がソースと同じである場合、"C$"表はターゲット領域に作成されます。

タイプTRANSPARENT_SOURCEのLKMの場合:

a. LKMはターゲット・サーバーがソース・データにアクセスするための透過アクセス・メカニズムを作成します。

b. LKMは、ソースとソース・マッピング・ロジックに関する情報を保存するコード生成メタデータ・オブジェクトを作成し、このオブジェクトをターゲットIKMに渡します。

タイプTRANSPARENT_TARGETのLKMの場合:

a. LKMはソース・サーバーがターゲット・データストアにアクセスするための透過アクセス・メカニズムを作成します。

b. LKMは、ソース上で適切な変換を実行することで、ソース・サーバーから一連の事前変換済レコードを取得します。

c. LKMは、手順1で作成された透過アクセス・メカニズムを使用して、データを直接ターゲット・データストアにロードします。

マッピングでは、異なるソースからデータストアを使用する際にいくつかのLKMが必要になる場合があります。すべてのソース・データストアがステージング領域と同じデータ・サーバー上にある場合は、LKMは不要です。

1.5 統合ナレッジ・モジュール(IKM)

IKMは、変換された最終データをターゲット表に書き込みます。すべてのマッピングでは、ロードする各ターゲットに対して単一のIKMを使用します。IKMの起動時には、リモート・サーバーの全ロード・フェーズのタスクは完了済であるとみなされます。つまり、すべてのリモート・ソース・データセットがLKMによってステージング領域の一時表「C$」にロードされている、もしくはソース・データストアがステージング領域と同じデータ・サーバー上にある、またはソースの透過アクセス・メカニズムが設定されているとみなされます。そのため、IKMによって実行されるのは、「C$」表またはステージング領域と同じデータ・サーバー上にある表、または透過的にアクセスできる他のサーバー上にある表に対する、「ステージングまたはターゲット(あるいはその両方)」の変換、結合およびフィルタ処理のみです。通常、作成されるセットはIKMによって処理され、一時表「I$」に書き込まれるか、ターゲットに直接ロードされます。これらの変換済最終レコードは、マッピングで選択されたIKMに応じて複数の方法で書き込むことができます。ターゲットに単純に追加するか、増分更新または緩やかに変化するディメンションのために比較することが可能です。IKMには、ステージング領域がターゲット・データストアと同じサーバー上にあることを前提条件とするIKM、およびこの条件に当てはまらない場合に使用できるIKMの2種類があります。これらを次の図に示します。

図1-5 統合ナレッジ・モジュール(ステージング領域がターゲット上にある場合)

ステージング領域がターゲット・サーバー上にある場合は、通常、IKMは次の手順で行われます。

1. セット指向の単一のSELECT文を実行し、すべての「C$」表およびローカル表(図のDのような)のステージング領域およびターゲットの宣言規則を実行します。これにより、結果セットが生成されます。

2. 単純な追加IKMでは、この結果セットがターゲット表に直接書き込まれます。より複雑なIKMでは、この結果セットを格納する「I$」表が作成されます

3. ターゲットの制約と照合してデータ・フローをチェックする必要がある場合は、CKMをコールしてエラーのあるレコードを隔離し、「I$」表をクレンジングします。

4. 定義された戦略(増分更新、緩やかに変化するディメンションなど)に従って、「I$」表または結果セットからターゲットにレコードを書き込みます。

5. 一時表「I$」を削除します。

6. 必要に応じて、CKM を再びコールしてターゲット・データストアの一貫性をチェックします。

この種類のKMは、ターゲット・サーバー外部のデータを操作しません。大量のジョブを実行する場合は、最大限の効率を得るために、データ処理はセット指向で行われます。

図1-6 統合ナレッジ・モジュール(ステージング領域がターゲットと異なる場合)

図1-6に示すように、ステージング領域がターゲット・サーバーと異なる場合は、通常、IKMは次の手順で行われます。

1. セット指向の単一のSELECT文を実行し、すべての「C$」表およびソースまたはステージング領域の表(図のDのような)に対して宣言規則を実行します。これにより、結果セットが生成されます。

2. 定義された戦略(追加または増分更新)に従って、この結果セットをターゲット・データストアにロードします。

このアーキテクチャには、次のような一定の制限があります。

- CKMを使用して、処理対象のデータにデータ整合性監査を実行することはできません。

- データは、ターゲットにロードする前にステージング領域から抽出する必要があります。これによってパフォーマンスの問題が発生する場合があります。

1.6 抽出ナレッジ・モジュール(XKM)

XKMは、ソースおよび中間マッピング・コンポーネントのマッピング・ロジックを収集およびアセンブルし、それを「抽象構文ツリー」またはASTオブジェクトと呼ばれるコード生成オブジェクトのセットに保存します。ASTオブジェクトは、特定の形式の実行可能コードの生成に適しています。

ODIの12cリリースより前は、各インタフェースまたはマッピングに、1つのLKMと1つのIKM、および場合によっては1つのCKMが割り当てられました。ODI 12c以降は、マッピング物理設計の各コンポーネントにコンポーネントKMが割り当てられます。コンポーネントKMは、XKM、LKM、IKM、またはCKMにできます。XKMは各ソースまたは中間ノードに割り当てられ、LKMは各APノードに割り当てられ、IKMは各ターゲット・データストア・ノードに割り当てられます。コードの生成中、マッピング・コード・ジェネレータがすべてのマッピング・コンポーネント・ノードを繰り返し、各コンポーネントKMの情報を使用して最終的な結果コードが生成されます。各コンポーネントKMには委譲スクリプトが関連付けられており、これはODI内部javaクラスとして、またはgroovyスクリプトによって実装されます。各KMの委譲スクリプトは、java ASTオブジェクトの生成に使用されます。生成されたASTオブジェクトは、次のノードのKM委譲クラスの入力パラメータとして渡されます。APノードのLKMまたはターゲット・ノードのIKMが達すると、複合ASTツリーが作成され、そこにはすべてのアップストリーム・ノードによって作成されたすべてのASTオブジェクトが含まれます。ASTツリーは、LKMまたはIKMのタスク・ライン・コマンドの値を置換するための置換APIオブジェクトとして使用できます。

次の図に、XKMによるコントリビューションも含むコード生成プロセスを示します。

図1-7 抽出ナレッジ・モジュール(XKM)

通常、XKMは自身のセッション・ステップを生成しません。主な機能は、java ASTオブジェクト・インスタンスをダウンストリームのコンポーネントKMに提供することです。

1.7 ジャーナル化ナレッジ・モジュール(JKM)

JKMは、モデル、サブモデルまたはデータストア上に、チェンジ・データ・キャプチャのインフラストラクチャを作成します。JKMは、CDCインフラストラクチャの初期化方法を定義するために、マッピングではなくモデル内で使用されます。次の図に示すように、このインフラストラクチャは、サブスクライバ表、変更の表、この表のビューおよび1つ以上のトリガーまたはログ取得プログラムで構成されます。

図1-8 ジャーナル化ナレッジ・モジュール

1.8 サービス・ナレッジ・モジュール(SKM)

SKMは、データ操作Webサービスを作成して、サービス指向アーキテクチャ(SOA)インフラストラクチャにデプロイします。SKMはモデル上で設定されます。それらは、各データストアのWebサービスに対して生成される、様々な操作を定義します。他のKMとは異なり、実行可能コードを生成しません。かわりにWebサービス・デプロイメントのアーカイブ・ファイルを生成します。SKMは、Oracle Data IntegratorのWebサービス用フレームワークを使用して、Javaコードを生成するように設計されています。生成されたコードは後でコンパイルされ、最終的にアプリケーション・サーバーのコンテナにデプロイされます。

1.9 ナレッジ・モジュール開発者のためのガイドライン

独自のKMを開発する場合の第一のガイドラインは、決してゼロから始めないことです。

Oracle Data Integratorには、すぐに使用できる多数のナレッジ・モジュールが用意されています。ODIバージョン12.2.1.2.1以降は、多くのグローバルKMがリポジトリにシードされており、Studio UIのグローバルKMツリーに表示されます。まずは既存のKMを確認することから開始し、自分のユースケースに近い既存のKMを出発点とすることをお薦めします。既存のKMが見つかったら、同じタイプ(XKM/LKM/IKM/CKM)の新しいKMを作成し、KMエディタで既存のKMをベースKMとして設定し、必要に応じて新しいKMをカスタマイズします。または、既存のKMを複製し、コードを編集してカスタマイズします。KMのカスタマイズは、シード済KMの拡張によって行うことをお薦めします。そうすることによって、シード済KMが更新された場合に、カスタマイズ済KMに自動的に反映されます。

独自のKMを開発する際には、そのKMが統合プロセスの特定の段階を対象とすることに留意してください。その他の留意事項は次のとおりです。

- LKMは、データをC$ステージング表にロードすること、またはターゲットからソース(またはその逆)へのなんらかの透過アクセスを構成することによって、リモート・ソース・データ・セットをステージングまたはターゲット・サーバーにロードできるように設計されています。

- IKMは、ステージング領域のソース・フローをターゲットに適用します。まず、C$ステージング表またはソースを変換および結合して単一の統合表(「I$」)を作成し、CKMをコールしてこの統合表のデータ品質チェックを実行して、最後にフロー・データをターゲットに書き込みます。

- CKMは制約として表されるデータ品質規則と照合して、データストアまたは統合表(「I$」)でデータ品質をチェックします。拒否されたレコードはエラー表(「E$」)に格納されます。

- RKMは、SNP_REV_xx一時表を使用して、メタデータ・プロバイダからOracle Data Integratorのリポジトリへメタデータを抽出します。

- JKMは、チェンジ・データ・キャプチャ・インフラストラクチャを作成および管理します。

次に示す一般的な過ちに注意してください。

- KMの多用: 通常のプロジェクトで必要なKMの数は5未満です。KMとプロシージャを混同しないでください。KMを特定のユースケースごとに作成しないでください。似たKMは1つのKMにまとめて、オプションを使用してパラメータ化できます。

- KMでのハードコードされた値(カタログまたはスキーマ名を含む)の使用: かわりにgetTable()、getTargetTable()、getObjectName()、ナレッジ・モジュール・オプションなどの適切な置換メソッドを使用してください。

- KMでの変数の使用: かわりに、オプションまたはフレックス・フィールドを使用して設計者から情報を収集してください。

- KM全体のJython、GroovyまたはJavaでの記述: それが適切なソリューションである場合にのみ使用してください(たとえば、Java APIのみを持つテクノロジからソースを取得する場合)。Java、Groovy、またはJythonコードよりもSQLの方が読取りおよびメンテナンスを簡単に行えます。

- コード生成の条件の作成にチェック・ボックス・オプションのかわりに<%if%>または{# IF #}文を使用。KMステップの生成を有効または無効にするにはチェック・ボックス・オプションを使用し、コードの個別のセットを条件付きで生成できるようにします。

KMに適用されるその他の一般的なコード記述の推奨事項:

- コードは正しくインデントしてください。

- 生成されるコードも、読み取れるようにインデントしてください。

- selectやinsertなどのSQLキーワードは、読み取りやすくするために小文字で記述してください。

2 コンポーネントKMの概要

この章では、コンポーネントKMの概要を説明します。コンポーネントKMとその様々なタイプについて簡単に説明します。

この章の内容は次のとおりです。

- コンポーネントKMとは

- コンポーネントKMの構文要素

- コンポーネントKM - フロー制御コマンド

- グローバル・テンプレート

- KM継承

- Groovy変数定義スクリプト

- 構造化置換API

- タスク制御オブジェクト

- シード済コンポーネントKM

2.1 コンポーネントKMとは

コンポーネントKMは、KM開発の新しく改良されたスタイルであり、IKM、LKM、XKMに適用されます。マッピング用のKMには、従来の11gスタイルとコンポーネント・スタイルという、2つの異なる実装スタイルがあります。11gスタイルのKMは、モノリシックodiRef置換APIオブジェクトおよび構文をテンプレート・コマンドで使用できるように設計されています。コンポーネント・スタイルのKMは、新しいオブジェクト指向の置換APIオブジェクトおよび新しいテンプレート・フロー制御構文をテンプレート・コマンドで使用できるように設計されています。両方のスタイルのKMは、プロジェクトとグローバルKMツリーに、XKMという事前定義済のコンポーネント・スタイルのKMのセットを持つIKM、LKMおよびCKMとして表示されます。新しいすべてのLKM、IKMおよびXKMは、新しいコンポーネントKMスタイルを使用して設計およびコーディングする必要があります。コンポーネントKMはODI 12cの新機能であり、ODI Studioの12.2.1.2.1リリースで初めて公開されました。コンポーネントKMには、タスクやオプションなど、他のKMと同じ機能が備わっています。ただし、新しく追加された次のような機能も含まれています。

- 抽象構文ツリー(AST)を作成することを目的とした、関連委譲スクリプト。作成されたASTオブジェクトは、特定の言語およびテクノロジ用のコードを生成するための使用に適した方法でマッピング・コンポーネントのメタデータを説明する、javaクラス・インスタンスのツリーです。

- 既存のソースおよびターゲット・テクノロジ・フィールドに類似した、KMおよびKMタスク・レベルのソースおよびターゲットの言語フィールド。

- KMがタスク、オプションおよびフィールド値をベースKMから継承することを可能にする、KM継承のサポート。

- KMタスクのソースおよびターゲット・コマンドのコード生成フローを制御するための、フロー制御構文要素のセット。

- 「グローバル・テンプレート」と呼ばれる、グローバルに共有可能なコード・テンプレート・スニペットを、KMタスクのソースまたはターゲット・コマンドの一部として含める機能。

- 新しい置換変数の定義を可能にする、各KMタスクに関連付けられたgroovy言語スクリプト。新しく定義された置換変数は、タスクのソースおよびターゲット・コマンドで使用できます。

コンポーネントKMには、IKM、LKM、XKM、CKMの4つのタイプのいずれかを指定できます。コンポーネントKMのタイプの詳細は、「ナレッジ・モジュールとは」を参照してください。

2.2 コンポーネントKMの構文要素

コンポーネントKMには、2つの新しい固有の基本構文があります。

- コンポーネントKMタスクで使用できる1つ目のメイン・コンポーネントKM構文要素は、次のようなコマンド構文です。{# command #}。{#...#}のエスケープ文字は、すべてのKMに存在するJSP-type <%...%>エスケープ・コマンドと似ていますが、エスケープされるテキストがjavaでないという点が異なります。コンポーネントKM固有のコマンド構文はApache Velocity Template Language (VTL)構文のコマンド構文に似ていますが、異種コード生成で厳密に必要とされる追加の文字がある点が異なります。ODIコード生成テンプレートで使用されるすべての構文は厳格である必要があり、それによって、ある言語/テクノロジの組合せで実際に生成されたテキストによって混乱が生じる可能性を最小化します。

- コンポーネントKM固有のその他の構文要素は、置換変数およびAPIコールを逆参照するために使用するエスケープ構文です。構文は、$[variableName]または$[variable.methodName()]のようになります。
例 -

"tableName"という変数がgroovy変数定義スクリプトで作成されている場合、コマンドにはCREATE TABLE $[tableName]のようなテキストを含めます。コードが生成されると、これはCREATE TABLE MY_TABLEとしてレンダリングされます。これは、tableName変数がこのマッピングでMY_TABLEに評価される場合です。

たとえば、オブジェクト・タイプ変数に対するメソッドのコールは、コマンド・テキストをCREATE TABLE $[physicalNode.getName()]として定義します。このKMが割り当てられているノードのMapPhysicalNodeインスタンスには、組込み変数physicalNodeが設定されています。そのため、ターゲットの物理ノードの名前が"TGT_TABLE"であった場合、コードが生成されると、このコードはCREATE TABLE TGT_TABLEとしてレンダリングされます。

この構文もまた、${variableName}を使用するApache Velocity Template Language (VTL)構文に似ています。「{」は、すでにjavaやシェル・スクリプト構文、およびその他の言語で頻繁に使用されているため、「{」のかわりに角カッコ「[」を使用します。新しい置換API変数の逆参照構文が、<%=variableName%>などのJSPタイプの式構文と混同されないようにする必要があります。主な相違点は、エスケープされるテキストがjavaではないことです。任意の複雑なjava式ではなく、変数名または1つのメソッド・コールのみがサポートされます。複雑なjava式が必要な場合は、KMタスクまたはKMに関連付けられているgroovy変数定義スクリプトに新しい置換変数を定義し、それを複雑なjava式と等しくすることが、コンポーネントKMのベスト・プラクティスです。groovyスクリプトは複雑なjavaまたはgroovy式をサポートしていません。この方法では、固有のjavaまたはgroovyコードは実際のテンプレート・コマンドとは別に保持されます。

- コンポーネントKM構文に関して注意する必要があるもう1つの重要な事項は、これがコード生成の実行フェーズにのみ適用されることです。山カッコを使用する従来のJSPタイプのテンプレート置換構文(例: (<%...%>))では、全体で4つの実行フェーズが定義されています。これらを次に示します。

- コード生成フェーズ<%...%>

- エージェント・フェーズ<?...?>

- エージェント後フェーズ<$...$>

- 実行前フェーズ<@...@>

これらは、置換実行時のコード生成と実行プロセスが発生する時間フェーズを定義します。ただし、コンポーネントKM構文要素については、置換は常に最初のコード生成フェーズで実行されます。コンポーネントKMの機能は、新しいエージェントや実行機能が存在しないため、その全体がコード生成機能です。エージェント・フェーズまたはエージェント後の置換(パスワード置換の遅延など)が必要な場合は、JSPタイプのエスケープを引き続き使用する必要があります。

2.3 コンポーネントKM - フロー制御コマンド

コンポーネントKMで使用されるフロー制御コマンドを次にリストします。

1. #IF
構文

{# IF condition #} text [{# ELSIF condition #} text [{# ELSIF condition #} text ...]] [{# ELSE #} text] {# ENDIF #}
説明

生成されたコードにテキストを条件付きで含めます。条件には、単純な置換変数の参照またはメソッド・コール、あるいは簡単な関係条件術語の組合せを指定できます。サポートされる関係演算子: [==、!=、<、>、!、OR、AND]。

例

{# INCLUDE = 'ConstantFromClauseText' #}
{# IF $[QUERY.isConstantQuery()] #}
{# ELSE #}FROM {#NL#}
{# LIST #}  $[QUERY.getFromList().foreach(getText())]{# SEP #} ,{#NL#} {# ENDLIST #}
{# ENDIF #}

2. #INCLUDE
構文

{# INCLUDE 'templateName' #}
説明

このテンプレート・テキストの一部として名前付きのグローバル共有テンプレートのテキストを含めます。

例

{# INCLUDE = 'PreInsertList' #}

3. #TEMPLATE
構文

{# TEMPLATE name='templateName' technology='technoName' #}
説明

指定された名前とテクノロジを使用して、ローカル・オーバーライド・テンプレートを作成するか、依存テンプレートを指定します。テクノロジにはGENERICを指定できます。

例

{# TEMPLATE name='ANSIJoinText' technology='GENERIC' #}
templateText...
{# ENDTEMPLATE #}

4. 置換変数参照
構文

$[variableName[.methodName([primitiveArg[,primitiveArg...]]).methodName(primitiveArgs)]][.foreach(methodName())]]
説明

有効範囲内の変数またはメソッド・コールの結果の文字列値を、生成されたテンプレート・テキストに置換します。太字の角カッコはリテラル角カッコであり、その他の角カッコはオプションの構文インジケータです。プリミティブ型引数は、文字列や整数などの単純なリテラルjavaデータ型を持つ、メソッドのパラメータです。foreachメソッドは、#LISTコマンド・ブロックの内部でのみ使用できる特殊な構文であり、各リスト・アイテムに対して指定されたメソッドをコールし、生成されたテキストを返します。

例

UNION ALLセット操作の一部である2つの問合せ間のセット操作を生成します。

SELECT A, B FROM TAB1
$[QUERY.getSetOperation()]
SELECT C, D FROM TAB2

現在処理中のQUERYオブジェクトにUNION ALLタイプのセット操作が含まれている場合、このコマンドから生成されるコードは、次のようになります。

SELECT A, B FROM TAB1
UNION ALL
SELECT C, D FROM TAB2

デフォルト組込み変数の詳細は、SQL構造化置換APIリファレンス(付録の章)を参照してください。

5. #INDENT
構文

{# INDENT #}
説明

現在のインデント・レベルに応じて、タブまたは空白文字のセットを生成されたコードに置換します。

例

{# INDENT #}

6. #LIST
構文

{# LIST #} listVariablesAndListText {#SEP#}separatorChars{# ENDLIST #}
説明

リスト変数およびテキストのセットを生成されたコードに置換します。リスト・テキストには、1つ以上のリスト変数を含める必要があり、複数のリスト変数に加え、ランダム・テキストと非リスト置換変数を含めることができます。リスト・テキストには、他のテンプレート・コマンドを含めることができます。複数のリスト変数が存在する場合、各リストは同じサイズである必要があります。セパレータ文字が指定されている場合、それらは各リスト項目の後に生成されるコードで再作成されます。

例

{# LIST #} $[INSERT.getColumnList().foreach(getText())] {#SEP#},{#NL#}{# ENDLIST #}

7. #FOR
構文

{# FOR (listVar[, listVar ...]) IN ($[listItemAlias][,$[listItemAlias]]) SEP = 'separatorChars' #} text $[listItemAlias] [text $[listItemAlias]] {# ENDFOR #}
説明

リスト変数およびテキストのセットを生成されたコードに置換します。複数のリスト変数が存在する場合、各リストは同じサイズである必要があります。セパレータ文字が指定されている場合、それらは各リスト項目の後に生成されるコードで再作成されます。

例

{# FOR ($[QUERY.getSelectList()],$[QUERY.getAliasList()]) IN ($[SL],$[AL]) SEP = ',0x000A' #} $[SL] $[QUERY.getColumnAliasSeparator()] $[AL] {# ENDFOR #}

8. #INC_INDENT
構文

{# INC_INDENT #}
説明

現在のインデント数を増加させます。

例

{# INC_INDENT #}

9. #DEC_INDENT
構文

{# DEC_INDENT #}
説明

現在のインデント数を減少させます。

例

{# DEC_INDENT #}

10. #NL
構文

{#NL#}
説明

改行文字を生成されたコードに置換します。

注意:
テンプレート・オプションのREPLICATE_NEWLINE がfalseに設定されている場合(デフォルトはtrue)、テンプレート内の実際の改行は、生成されたコードに再作成されないことがあります。

例

Hello world{#NL#}

11. #TEMPLATE_OPTIONS
構文

{# TEMPLATE OPTIONS optName='optValue'[ optName='optValue' ...]
説明

一部の名前付きテンプレート・オプションの値を設定します。オプションは、テンプレートのTEMPLATE_OPTIONSコマンドの直後に有効になります。

例

{# TEMPLATE_OPTIONS REPLICATE_NEWLINE='false' #}

12. 行コメント
構文

## commentText
説明

生成されたコードに再作成されないテンプレート・コメント・テキスト。

例

## This is a comment.

13. 複数行コメント
構文

#* commentText *#
説明

生成されたコードに再作成されない複数行のコメント・テキスト。

例

#* This is a comment. *#

2.4 グローバル・テンプレート

グローバル・テンプレートは、コンポーネントKMと密接に関連したODIオブジェクトの一種です。これらは、「グローバル・テンプレート」フォルダの下のグローバル・オブジェクト・ツリーにあります。グローバル・テンプレートは基本的に、任意のコンポーネントKMで再使用できるテンプレート・テキストのスニペットです。名前、および関連付けられた言語とテクノロジがあります。一部の事前シード済グローバル・テンプレートは、よく使用されるSQL問合せや挿入、Spark Pythonスクリプトなどのために、ODIのインストール時に提供されます。

- グローバル・テンプレートは、テンプレート名を指定する{# INCLUDE #}コマンドを使用することによって、KMタスク・コマンド内で使用します。コードの生成中、{#INCLUDE#}コマンドが挿入されたテキスト位置に、テンプレート・テキストが生成されたテキストで置換されます。

- KMコマンド・エディタで、テキストの左側にある「+」コード折りたたみボタンをクリックすると、#INCLUDE文を展開できます。それを行うと、コマンド・テキストの#INCLUDE文でグローバル・テンプレート・テキストが置換されます。#INCLUDE文はネストすることができ、それによってテンプレート・テキストの置換がネストされます。

- コード・ジェネレータがセッションまたはシナリオ・タスク生成の一貫としてKMタスクのテキストを展開する際、#INCLUDE文で指定されたテンプレート名およびテンプレートのテクノロジと言語に基づいて、各#INCLUDE文に一致する適切なグローバル・テンプレートを見つけます。テクノロジと言語が異なっていれば、同じ名前の複数のグローバル・テンプレートを定義できます。実行テクノロジおよびKMタスク言語の設定と、グローバル・テンプレートのテクノロジおよび言語の設定を一致させることで、正しいものを選択します。#INCLUDE文に言語とテクノロジを指定すると、実行テクノロジと言語に関係なく、特定のグローバル・テンプレート・インスタンスを選択できます。

2.5 KM継承

KM継承によって、KMがタスク、オプションおよびフィールド値をベースKMから継承できるようになります。KM継承を使用するには、コンポーネントKMの「ベース・コンポーネントKM」フィールドを設定する必要があります。ベースKMを設定すると、導出されたKMは次のプロパティをベースKMから継承します。

- すべてのKMオプション

- ベースKM言語、テクノロジ、生成タイプ、生成スタイル設定、およびベースKM委譲スクリプト

- 次のルール・セットに基づいて、一部のベースKMタスクが継承されます。

1. タスク・タイプ(MAP_BEGIN、EX_UNIT_BEGINなど)ごとに、導出されたKMにそのタイプのタスクが直接所有されていない場合、およびベース・タスクが明示的に削除されていない場合は、そのタイプのすべてのベース・タスクが継承されます。通常、このルールは、ベースKMが設定され、新しく作成されたKMに適用されます。

2. 指定された行タイプの直接所有タスクが追加された場合は、KMエディタで「タスクを含める」ボタンを使用して明示的に追加しないかぎり、そのタイプのベース・タスクはデフォルトで継承されません。

3. KMエディタにある「タスクを含める」アイコンを使用してベース・タスクの任意のセットを個々に追加することで、導出されたKMにそれらを含めることができます。

4. KMエディタの「タスク」タブにある「削除」アイコンを使用して、含まれている任意のベース・タスクを削除できます。

5. 一部のシード済KMは、内部でのみ使用可能な、異なるタイプのタスク包含を使用する場合があります。これには、キーワードに基づくタスクの一致が含まれます。ただし、これらのKMを継承する任意のKMは、前述のようにタスクを包含および除外して、それ以降は標準のタスク包含ルールに従うように指定できます。

2.6 Groovy変数定義スクリプト

各コンポーネントKMタスクには、すべてのKMと同じように、ソースおよびターゲット・コマンド・テンプレートがあります。ただし、既存の組込み置換API変数を使用して新しい置換変数を定義するために使用できる、groovy変数定義スクリプトもあります。たとえば、SqlInsertStatementオブジェクトに含まれるSqlQueryオブジェクトに、さらに含まれるSelectItemオブジェクトをループして、列リスト文字列を作成できます。

さらに、KM自身が所有するgroovy変数定義スクリプトもあります。KMレベルの変数定義スクリプトで定義された変数は、KM内のすべてのタスクで再使用できます。これは、ある値がKM内の複数のタスクで使用される場合に便利です。

タスク・レベルとKMレベルのgroovy変数定義スクリプトはいずれも、KMタスク・コマンド・エディタで編集および表示できます。

2.7 構造化置換API

コンポーネントKMは、構造化置換APIにアクセスできる唯一のタイプのKMです。構造化置換APIオブジェクトには、すべてのKMで<%...%>エスケープ文字の内部で使用する「odiRef」変数に似た一連の組込み構造化API変数を使用してアクセスします。組込み変数には2つのタイプがあります。これらを次に示します。

- 組込みパブリックSDK変数 - これらの変数はKMに関係なく常に同じであり、コンポーネント・ノードとKMのマッピング・パブリックSDKオブジェクトを公開します。

- 組込み構造化置換API変数 - 置換APIの組込み変数は常に、すべて大文字であり、編集している特定のIKMまたはLKMで作成されたAPIオブジェクトを表します。すべての組込み置換API変数のリストは、KMソース/ターゲット・コマンド・エディタの右下隅にある有効範囲内ツリーから取得できます。

SQL IKMまたはLKMによって作成される標準的な置換APIオブジェクトのリストは、次のとおりです。

- INSERT - ターゲットをロードする最上位INSERT DML文を表すSqlInsertStatementオブジェクト。挿入タイプのKMでのみ使用可能です。

- UPDATE - ターゲットをロードする最上位update DML文を表すSqlUpdateStatementオブジェクト。更新タイプのKMでのみ使用可能です。

- MERGE - ターゲットをロードするmerge文を作成するために使用する最上位MergeStatementオブジェクト。

- QUERY - ロードするデータをフェッチする最上位抽出問合せを表すSqlQueryオブジェクト。

- TABLE - ターゲット表をロードするKMの最上位ターゲット表オブジェクト。

- FROMLIST - 最上位SqlQueryオブジェクトのFromClauseオブジェクトのリスト。

- JOIN - 結合コードの生成時の現在の結合を表すJoinTableオブジェクト。JoinTableテンプレートなど、結合テキストを作成するために使用するグローバル・テンプレート内でのみ使用可能です。

- ATTR - ソース属性のテキスト生成時の現在のソース属性SourceMapAttributeなど、ソース属性テキストを作成するために使用するグローバル・テンプレート内でのみ使用可能です。

- COLLIST - 挿入文用に書式設定されたC$ステージング表の列のリスト。

- SUBQUERY - フィルタ副問合せコンポーネントのフィルタを表すFilterSubQueryオブジェクト。

コンポーネントKMのソースおよびターゲット・コマンドで使用可能な組込み置換API変数のリストは、次のとおりです。

- physicalNode - これは、コンポーネントKMの割当て先であるMapPhysicalNodeタイプのマッピング物理ノード・オブジェクトです。たとえば、IKMの場合、physicalNode組込み変数はターゲット・データストア・コンポーネントと関連付けられているノードへの参照です。物理ノードには、このIKMが自身のIKMとして割り当てられます。

- component - コンポーネントKMの割当て先である物理ノードに関連付けられているマッピング論理コンポーネント。

- connector - 物理ノードに関連付けられているマッピング・コネクタ・ポイント。APノードに割り当てられているLKMの場合は、このコネクタ・ポイントが、APノードが接続しているターゲット・コンポーネントの入力コネクタ・ポイントです。ターゲットに割り当てられているIKMの場合、これはデータソース出力コネクタ・ポイントです。XKMの場合、これは物理ノードの関連付けられている出力コネクタ・ポイントになります。これは、たとえば、スプリッタ・コンポーネントなどの場合、各出力コネクタに異なる物理ノードがあるため、どれがノードとXKMに関連付けられているかを認識できると便利です。

- generatorContext - コンポーネントKMを使用するコード・ジェネレータに関連付けられているGeneratorContextオブジェクト。ジェネレータ・コンテキストは、コード・ジェネレータの実行に対してグローバルな名前付きプロパティを保持するコンテナです。

- taskControl - これは、単一のコンポーネントKMタスク・ラインに生成された多数のセッションまたはシナリオ・タスクを制御するために使用できる、TaskControlオブジェクトへの参照です。このオブジェクトのメソッドはテンプレート置換文字列として使用できる文字列値を返さないため、このオブジェクトはgroovyスクリプトで使用する必要があります。

- upstreamASTList - java.util.Listは、そのうちの1つからこのコンポーネントKMが割り当てられている、すべてのアップストリーム・ノードによって作成されたAST置換APIオブジェクトのリストが含まれるオブジェクトです。現在のコンポーネントが結合などのマルチ入力コンポーネントである場合は、複数のアイテムが含まれている可能性があります。その他の場合、リストには1つのアップストリーム置換APIオブジェクトのみが含まれます。たとえば、SQLの生成では、通常のアップストリームASTオブジェクトはSqlQueryオブジェクトです。

- baseNode - マルチ接続IKMにのみ適用されます。マルチ接続IKMの割当て先であるデータストア・ターゲット・ノードに接続しているAPノードへの参照。

- componentKM - テンプレート・コマンドまたはgroovy変数定義スクリプトで使用できる、所有しているコンポーネントKMオブジェクトへの参照。

- componentGenerator - このコンポーネントKMが割り当てられているコンポーネントのコードの生成に使用されるComponentGeneratorインスタンス。

- subtype - このコンポーネントKMのサブタイプ値、または、サブタイプが設定されていない場合はnull。サブタイプは、このコンポーネントKMのAST置換APIオブジェクトを作成するためにコールされる、コンポーネントKMジェネレータ委譲メソッドの名前の決定に使用される文字列値です。targetNameForLoadingTaskはIKMにのみ適用され、ターゲットの名前はこのIKMによってロードされます。

- collTableName - LKM (PERSISTENTタイプのLKM)にのみ適用されます。ソース・データをステージングするために作成される一時ステージング表の名前に設定されます。

各組込みオブジェクトで使用される置換メソッドの詳細は、SQL構造化置換APIリファレンス(付録の章)を参照してください。

2.8 タスク制御オブジェクト

タスク制御オブジェクトはgroovy変数定義スクリプトで使用でき、組込み変数「taskControl」を使用してアクセスできます。このタスクから生成される多数のタスク・インスタンスを制御するためにコールできる、特定のメソッドがあります。これらのメソッドを次に示します。

- skipTaskGeneration() - このメソッドをコールすると、コード・ジェネレータはこのタスクのメイン・インスタンスの生成をスキップします。instantiateTask()をコールすると、タスクの他のインスタンスを引き続き追加できます。

- instantiateTask() - これをコールすると、コード・ジェネレータは生成されたセッションまたはシナリオのタスクの追加のインスタンスをインスタンス化します。メソッドを複数回コールすることによって、任意の数のタスク・インスタンスを生成できます。タスク生成のためにバインドされている変数の代替セットを含むハッシュ表は、パラメータとして渡せます。代替変数セットの変数の1つが標準の組込み変数と同じ名前を持つ場合は、標準のデフォルト値ではなく代替値が使用されます。タスクの各追加インスタンスには一意の名前が付けられ、これがベース・タスク名になり一意の接尾辞が付けられます。

2.9 シード済コンポーネントKM

組込みグローバル・コンポーネントXKM、LKMおよびIKMのセットが用意されています(ODIバージョン12.2.1.2.1以降)。これらは、グローバルKMツリーで表示できます。これらはシード済KMと呼ばれます。シード済KMはUI Studioでは削除または編集できません。ただし、シード済KMは複製でき、複製したKMのコピーは必要に応じて編集できます。また、新しいコンポーネントKMを作成し、シード済KMをそのベースKMとして設定できます。このようにして、新しいKMはシード済ベースKMの機能を継承し、必要に応じて特定の機能をオーバーライドできます。これが、組込みシード済KMのカスタマイズで使用する方法のベスト・プラクティスです。

3 OdiRef置換APIの概要

この章では、例を使用してOracle Data IntegratorのOdiRef置換APIの概要を説明します。

この章の内容は次のとおりです。

- 代替APIの概要

- 置換メソッドの使用

- アクションでの置換メソッドの使用

- オブジェクト名の使用

- 表、列および式のリストの使用

- ソースのSELECT文の生成

- APIによるその他の情報の取得

- コード生成の高度な技術

注意:

置換APIメソッドは、置換APIリファレンスに一覧表示されています。

3.1 代替APIの概要

KMは、Oracle Data Integratorの代替APIを使用してテンプレートとして記述されます。APIメソッドは、文字列値、または文字列に変換可能なオブジェクト値あるいは別のメソッドにパラメータとして渡されるオブジェクト値を返すJavaメソッドです。ODIバージョン12.2.1.2.1からは、2つのタイプの置換APIオブジェクトがあります。

- 1つ目のタイプは、構造化置換APIと呼ばれます。これは、生成されるコードの構造を表す、構造化されたオブジェクトのセットです。構造化置換APIオブジェクトは、一般的にツリーに似た構造によって関連付けられたオブジェクトのコレクションです。親オブジェクトから子オブジェクトにナビゲートするためのナビゲーション方法が用意されています。構造化置換APIは、IKM、LKM、XKMおよびCKMで構成される、コンポーネントKMのコマンドまたはグローバル・テンプレートを記述する場合にのみ使用可能です。

- ASTオブジェクトの2つめのタイプはモノリシック置換API、またはodiRef (ODIバージョン12.2.1.2.1より前に使用できた唯一の置換APIオブジェクト)です。

構造化置換API

構造化置換APIツリーは、KMによって生成されるコードのベース言語によって構造が異なります。現在サポートされているベース言語は、SQL、SPARK_PYTHONです。

次の図に、SQLのツリー構造を示します。

図3-1 構造化置換API

同じメソッドでも、ツリーの生成に使用されたマッピング・ロジックの構造に応じて異なる値を返すことがあります。ツリーは、マッピング内の特定のターゲットについてすべてのソース・コンポーネントを反復し、各コンポーネントKMに対してKM委譲を実行することによって生成されます。

次の例では、構造化置換APIを使用してKMにcreate table文を記述する方法を示します。

次のコードはKMまたはグローバル・テンプレートに入力されます。

CREATE TABLE $[tableName] ({#LIST} $[tgtColNameList] $[tgtColDataTypeList] {#SEP#},{#NL#} {#ENDLIST#})

PRODUCT表に対して生成されたコードは次のとおりです。

CREATE TABLE db_staging.PRODUCT( PRODUCT_ID numeric(10), PRODUCT_NAME varchar(250), FAMILY_ID numeric(4), SKU varchar(13), LAST_DATE timestamp)

CUSTOMER表に対して生成されたコードは次のとおりです。

CREATE TABLE db_staging.CUSTOMER( CUST_ID numeric(10), CUST_NAME varchar(250), ADDRESS varchar(250), CITY varchar(50), ZIP_CODE varchar(12), COUNTRY_ID varchar(3))

次に、テンプレートの各要素について説明します。

- CREATE TABLEは、生成コードに複製される単純テキストです。

- $[tableName]は、groovyベースのテンプレート構文(12.2.1.2.1以降)を使用した置換APIコールです。$[…]エスケープ文字内の名前は、組込みまたはgroovy変数の単純な変数名にするか、"table.getName()"などのメソッド・コールを含めることができます("table"変数がgetName()メソッドを使用したオブジェクトであった場合)。tableName変数はKMタスクと関連付けられている変数定義groovyスクリプトに定義されています。

- {#LIST#}は、テンプレート・フロー制御コマンド構文(ODI 12.2.1.2.1以降)の例です。これらのコマンドは常に{#...#}でエスケープされ、テキスト生成のフローの制御で使用できます。この場合、リスト内の各オブジェクトに対して"toString()"をコールすることで、リスト変数を表示できます。{#LIST#}コマンドについて、各リスト・アイテムに対して異なるメソッドをコールする必要がある場合は、"foreach()"構文を使用します(例: "columnList.foreach(getText())")。{#LIST#}に続くリスト置換APIオブジェクトは1つずつ展開され、それぞれに固定テキストが使用されます。

- {#SEP#}は、常に{#LIST#}とペアになる別のテンプレート・フロー制御コマンドです。このコマンドに続くテキストは、各リスト・アイテム間のセパレータとして使用されます。

- {#ENDLIST#}コマンドは、リスト・フロー制御定義を閉じます。

モノリシック置換APIオブジェクト - odiRef

モノリシック置換APIメソッドは、"odiRef"という名前の単一のオブジェクト・インスタンスに属します。同じメソッドでもそれを起動するKMのタイプに応じて異なる値を返すことがあります。この理由により、それらはKMのタイプによって分類されます。

このAPIの動作方法を理解できるように、次の例では、KMでのCREATE TABLE文の記述方法、および関連するデータストアに応じて生成されるコードについて説明します。

次のコードがKMに入力されます。

CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>(<%=odiRef.getColList("", "\t[COL_NAME] [DEST_CRE_DT]", ",\n", "", "")%>)

PRODUCT表に対して生成されたコードは次のとおりです。

CREATE TABLE db_staging.I$_PRODUCT(
P    RODUCT_ID numeric(10),    PRODUCT_NAME varchar(250),    FAMILY_ID numeric(4),    SKU varchar(13),    LAST_DATE timestamp)

CUSTOMER表に対して生成されたコードは次のとおりです。

CREATE TABLE db_staging.I$_CUSTOMER(    CUST_ID numeric(10),    CUST_NAME varchar(250),    ADDRESS varchar(250),    CITY varchar(50),    ZIP_CODE varchar(12),    COUNTRY_ID varchar(3))

適切なメタデータを使用してKM を実行した結果、商品および顧客の表に対して異なるコードが生成されたことがわかります。

次の各トピックでは、主要な代替API の一部について説明し、KM 内での使用方法を説明します。読みやすくするために、例ではタグ<% と%>、およびodiRefオブジェクト参照は省略しています。

odiRef置換APIメソッドへのコールは、KMタスクのgroovy変数定義スクリプトに作成することもできます。そのため、odiRefコールまたはいくつかのコールの組合せの結果と値が等しい、新しい変数を定義できます。

3.2 置換メソッドの使用

ナレッジ・モジュールとプロシージャからアクセス可能なメソッドは、Javaで実装されているOracle Data Integratorのメソッドのダイレクト・コールです。これらのメソッドは通常、Oracle Data Integratorリポジトリに格納されているメタデータに対応するテキストの生成に使用されます。

3.2.1 一般構文

置換メソッドは、ナレッジ・モジュールまたはプロシージャのタスクの任意のテキストで使用されます。

odiRefメソッドは、groovy変数定義スクリプトの内部でコールできます。また、次の構文を使用して、任意のKMタスク・コマンド内で使用することもできます。

<%=java_expression%>

この構文の説明は次のとおりです。

- <%= %>タグは、java_expressionで返されるテキストの出力に使用されます。この構文は、Java Server Pages (JSP)で使用される構文とほぼ同じです。

- Java expressionは、文字列を返す任意のJava式です。

次の構文は、3つのパラメータを使用してodiRef javaオブジェクトのgetTableメソッドのコールを実行します。このメソッドのコールは文字列を返します。それがCREATE TABLEテキストの後に書き込まれます。

CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>

Oracle Data Integratorのモノリシック置換APIは、JavaクラスOdiReferenceに実装されており、そのインスタンスOdiRefはいつでも使用できます。たとえば、getFrom()メソッドをコールするには、odiRef.getFrom()と記述する必要があります。

注意:

下位互換性のために、odiRef APIはsnpRef APIとして参照することもできます。snpRefおよびodiRefオブジェクトのインスタンスは同義語で、前の構文snpRef.<method_name>はまだサポートされていますが、非推奨です。

3.2.2 CKM固有の構文

次の構文は、チェック・プロシージャ(CKM)の実行をコールするために、IKMで使用されます。

この構文は、処理のこの段階で、すべてのCKMプロシージャ・コマンドを自動的に含めます。

<% @ INCLUDE (CKM_FLOW | CKM_STATIC) [DELETE_ERROR] %>

この構文のオプションは次のとおりです。

- CKM_FLOW: フロー制御をトリガーします。マッピングの物理ダイアグラムにある、ターゲット・データストアのプロパティの「チェック・ナレッジ・モジュール」タブでのCKMの選択内容に従ってトリガーされます。

- CKM_STATIC: ターゲット・データストアの静的管理をトリガーします。データストアに対して静的な制約として定義および選択された制約がチェックされます。

- DELETE_ERROR: このオプションは、検出されたエラーを検証済の表(CKM_FLOWの場合はフロー表、CKM_STATICの場合はターゲット表)から削除するようにCKMに指示します。より正確には、すべてのCKMコマンドがRemove Errorsというタグ付きで生成されます。

例: 次のコールはエラー検出によるフロー制御をトリガーします。

<% @ INCLUDE  CKM_FLOW DELETE_ERROR %>

3.2.3 フレックスフィールドの使用

フレックスフィールドは、Oracle Data Integratorのオブジェクトのプロパティをユーザーがカスタマイズできるようにするユーザー定義フィールドです。フレックスフィールドは「オブジェクト」ウィンドウの「フレックスフィールド」タブで定義され、「オブジェクト」ウィンドウの「フレックスフィールド」タブを使用して各オブジェクト・インスタンスに対して設定できます。

Groovyベース変数とマッピングAPIを使用したフレックスフィールド・アクセス

新しい構造化置換APIを使用すると、組込みコンポーネントKM変数"physicalNode"で開始しODIパブリックAPIを使用して値にナビゲートすることによって、データストアのフレックスフィールド値を取得できます。これは、次のようなgroovy言語(javaと同様の記述方法)を使用したgroovy変数定義スクリプトで実行できます。

flexFieldValue = “”;
String ffName = “MY_FLEX_FIELD”;
IMapComponent comp = node.getLogicalComponent();
if (comp.isOfType(DatastoreComponent.COMPONENT_TYPE_NAME)) {
DatastoreComponent datastoreComp = (DatastoreComponent) comp.getDelegate();
OdiDataStore datastore = (OdiDataStore) datastoreComp.getBoundDataStore();
Collection<IFlexFieldValue> ffValues = datastore.getFlexFieldsValues();
for (IFlexFieldValue value : ffValues) {
if (value.getName().equals(ffName)) {
// found it
flexFieldValue = value.getValue().toString();
}

このコードがgroovy変数定義スクリプトに記述されている場合は、テンプレートまたはKMコマンドの変数参照で変数"flexFieldValue"を使用できます。

このコードは、単純なodiRef getTableまたはgetSrcTableListコールより複雑です(次の例を参照)。ただし、特定のオブジェクトから配列にすべてのフレックスフィールドを取得したり、他のオブジェクトやコンテキスト・ターゲットまたはソース表からフレックスフィールドを取得するような、特殊なケースに対応できる柔軟性があります。

また、KMタスクのgroovy変数定義スクリプトでodiRefコールを使用して一時変数に値を保存し、これをテンプレート・コマンドで使用することもできます。

モノリシックodiRef置換APIを使用したフレックスフィールド・アクセス

Oracle Data Integratorの置換メソッドを使用してオブジェクト・プロパティにアクセスする場合、フレックスフィールドのコードを指定すると、Oracle Data Integratorは、そのコードをオブジェクト・インスタンスのフレックスフィールド値で置き換えます。

次に例を示します。

<%=odiRef.getTable("L", "MY_DATASTORE_FIELD", "W")%>の場合、現在の表のフレックスフィールドMY_DATASTORE_FIELDの値が返されます。

<%=odiRef.getSrcTableList("", "[MY_DATASTORE_FIELD] ", ", ", "")%>の場合、マッピングの各ソース表のフレックスフィールド値が返されます。

フレックスフィールド値は、getFlexFieldValue()メソッドを使用して取得することもできます。

注意:

フレックスフィールドは特定のオブジェクト・タイプにのみ存在します。「フレックスフィールド」タブのないオブジェクトではサポートされていません。

3.2.4 コード生成タグの使用

次のコード生成タグは、テンプレート内に実行可能javaを記述するために使用できます。

- <%... %>: このタグは、シナリオ生成時またはセッション作成時に評価されます。テキスト内のメタデータ情報を置換するために使用されます。PRODUCT表の例を次に示します。

CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>

これは次のように変換されます。

CREATE TABLE db_staging.I$_PRODUCT

新しいコンポーネントKM (IKM/LKM/XKM/CKM)に<%...%>タグを使用することはお薦めしません。かわりに、新しい構造化置換APIとgroovy変数定義スクリプトを使用してください。

- <?...?>: このタグはセッション実行時に評価され、実行コンテキストに基づいて物理トポロジ情報が置換されます。このタグの評価後に、セッション・タスク・ログが作成されます。ターゲット・データ・サーバー・ユーザー'TargetName'の例を次に示します。

"<?=snpRef.getInfo("DEST_USER_NAME")?>"

これは次のように変換されます。

'TargetName'

- <@...@>: このタグはセッション・ログの作成後に評価されるため、セッション・タスク・ログに含めない置換に対して使用する必要があります。セキュリティ上の理由でセッション・タスク・ログに記録されないようにするクリア・テキスト・パスワードを置換する場合に使用できます。次に例を示します。

<@=snpRef.getInfo("SRC_PASS") @>

3.3 アクションでの置換メソッドの使用

アクションはDDL操作(表の作成、参照の削除など)に対応しています。この操作を使用して、Data Integratorモデルで実行する変更をデータベースに実装するためのセッションまたはシナリオ・タスクを生成します(DDLの生成操作)。各アクションには、DDL操作を実行するために必要なコマンドに対応する、いくつかのアクション行が含まれます(たとえば、表を削除するには、先にその制約をすべて削除する必要があります)。

3.3.1 アクション行のコード

アクション行には、アクション・グループのテクノロジで有効な文が含まれます。プロシージャやナレッジ・モジュール・コマンドと異なり、これらの文は1つの接続を使用します(SELECT ... INSERT文は使用できません)。ナレッジ・モジュールのスタイルでは、アクションは置換メソッドを使用してDDLコードを汎用にします。

たとえば、アクション行に、表のチェック制約を削除するための次のコードが含まれることがあります。

ALTER TABLE $[tableName]
DROP CONSTRAINT $[constraintName]

3.3.2 アクション・コール・メソッド

アクション・コール・メソッドは、アクション行でのみ使用できるodiRefコールです。他の置換メソッドと異なり、テキストの生成には使用されず、コンテキストに適切なアクションを生成するために使用されます。

たとえば、Drop Table DDL操作を実行するためには、まず表を参照している外部キーをすべて削除する必要があります。

表の削除アクションでは、最初のアクション行はdropReferringFKs()アクション・コール・メソッドを使用して、現在の表の各外部キーについて外部キーの削除アクションを自動的に生成します。このコールは、次のコードでアクション行を作成することによって実行されます。

<% odiRef.dropReferringFKs(); %>

アクション・コール・メソッドをコールするための構文は次のとおりです。

<% odiRef.method_name(); %>

注意:

アクション・コール・メソッドは、アクション行1行に1つのみにする必要があります。=記号を前に付けずにコールしてください。また、最後にセミコロンが必要です。

アクションでは、次のアクション・コール・メソッドを使用できます。

- addAKs(): 現在の表のすべての代替キーに対して、代替キーの追加アクションをコールします。

- dropAKs(): 現在の表のすべての代替キーに対して、代替キーの削除アクションをコールします。

- addPK(): 現在の表の主キーに対して、主キーの追加アクションをコールします。

- dropPK(): 現在の表の主キーに対して、主キーの削除アクションをコールします。

- createTable(): 現在の表に対して表の作成アクションをコールします。

- dropTable(): 現在の表に対して表の削除アクションをコールします。

- addFKs(): 現在の表のすべての外部キーに対して、外部キーの追加アクションをコールします。

- dropFKs(): 現在の表のすべての外部キーに対して、外部キーの削除アクションをコールします。

- enableFKs(): 現在の表のすべての外部キーに対して、外部キーの有効化アクションをコールします。

- disableFKs(): 現在の表のすべての外部キーに対して、外部キーの無効化アクションをコールします。

- addReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの追加アクションをコールします。

- dropReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの削除アクションをコールします。

- enableReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの有効化アクションをコールします。

- disableReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの無効化アクションをコールします。

- addChecks(): 現在の表のすべてのチェック制約に対して、チェック制約の追加アクションをコールします。

- dropChecks(): 現在の表のすべてのチェック制約に対して、チェック制約の削除アクションをコールします。

- addIndexes(): 現在の表のすべての索引に対して、索引の追加アクションをコールします。

- dropIndexes(): 現在の表のすべての索引に対して、索引の削除アクションをコールします。

- modifyTableComment(): 現在の表に対して表のコメントの変更をコールします。

- AddColumnsComment(): 現在の表のすべての列に対して列のコメントの変更をコールします。

3.4 オブジェクト名の使用

デザイナで作業する場合、実行コンテキストによって変化するデータベース名やスキーマ名などの物理情報は指定しないようにする必要があります。正しい物理情報は、実行時にOracle Data Integratorによって提供されます。

代替APIには、実行時のコンテキストを考慮してオブジェクトまたはデータストアの完全修飾名を算出するメソッドが備わっています。これらのメソッドを次の表に示します。

odiRefの計算の名前付けメソッドは、groovy変数定義スクリプトまたはコマンドテキスト内の<%...%>などのjavaタグ内部からコールできます。

必要な完全修飾名

メソッド

次で使用可能

OBJ_NAMEという名前のすべてのオブジェクト

getObjectName("L", "OBJ_NAME", "D")

すべて

現在のマッピングのターゲット・データストア

getTable("L", "TARG_NAME", "A")

LKM、CKM、IKM、JKM

現在のマッピングの統合(I$)表

getTable("L", "INT_NAME", "A")

LKM、IKM

現在のロード・フェーズのロード表(C$)

getTable("L", "COLL_NAME", "A")

LKM

チェックされたデータストアのエラー表(E$)

getTable("L", "ERR_NAME", "A")

LKM、CKM、IKM

チェックされたデータストア

getTable("L", "CT_NAME", "A")

CKM

外部キーによって参照されるデータストア

getTable("L", "FK_PK_TABLE_NAME", "A")

CKM

さらに、groovyスクリプトでマッピング・パブリックAPIが使用され、マップ物理ノードが使用可能である場合に対応して、特殊な静的オブジェクト名の取得メソッドが用意されています。これは、現在のターゲット以外のオブジェクトに、生成されたオブジェクト名が必要な場合に便利です。

表3-1 静的オブジェクト名の取得メソッド

必要な完全修飾名

メソッド

次で使用可能

OBJ_NAMEという名前のすべてのオブジェクト

OdiRef.getOdiGeneratedAccessName("OBJ_NAME", mapPhysicalNode, "D")

すべて

3.5 表、列および式のリストの使用

多くの場合、項目のリストからコードを生成するには、whileループまたはforループが必要になります。Oracle Data Integratorは、一連のテンプレート・フロー制御コマンドを提供することでこの問題に対応しています。これらのコマンドは、テンプレート・パターンのリスト変数のセットとセパレータのパターンを指定することで、イテレータとして動作します。

ループ動作の主なテンプレート・フロー制御コマンドは、{# LIST #}です。{#LIST#}コマンドと{#ENDLIST#}コマンドの間にあるテンプレート・パターンは、複数回展開されます(テンプレート・パターンで展開されるリスト変数のアイテムごとに1回)。リスト構造の内部には、テンプレート・パターンで展開される少なくとも1つのリスト変数が存在している必要があります。

たとえば、groovyにリスト変数が次のように定義されていた場合、

List myList = [‘a’. ‘b’, ‘c’]
#LISTコマンドを次のように追加します。

{#LIST#} The element value is $[myList] {#SEP#} {#NL#} {#ENDLIST#}
結果として生成されるコードは次のようになります。

The element value is a
The element value is b
The element value is c

{#SEP#}と{#ENDLIST#}の間にあるテンプレート・パターンは、各リスト・アイテムの展開間のセパレータとして使用されます。

パターンには複数のリスト変数を使用できますが、それぞれの要素数が同じである必要があります。

マッピング・オブジェクトとその生成文字列にアクセスするには、groovy変数定義スクリプトで構造化置換APIまたはマッピングAPIを使用します。たとえば、次の問合せを使用して、組込みQUERY構造化置換API変数の生成されたソース列リストを取得できます。

{# LIST #} $[QUERY.getSelectList().foreach(getText())] $[QUERY.getColumnAliasSeparator()] $[QUERY.getAliasList()] {# SEP #},{#NL#}{# ENDLIST #}
古いodiRefイテレータ・メソッドも引き続きサポートされ、Javaベースの<%...%>タグの中またはKMタスクのgroovy変数定義スクリプトで使用できます。これらのメソッドはイテレータとして機能します。代替マスクまたはパターンおよびセパレータを提供すると、メソッドによって、すべての解決済パターンがセパレータで区切られた単一の文字列が戻されます。

すべてのメソッドは1つの文字列を戻し、少なくとも次の4つのパラメータを受け入れます。

- 開始: 作成される文字列を開始するための文字列。

- パターン: リストの各項目の値にバインドされる属性を使用した代替マスク。

- セパレータ: 置き換えられた各パターンと後続のパターンを区切るための文字列。

- 終了: 作成される文字列の最後に追加される文字列。

一部のメソッドは、リストの一部の項目のみを取得するためのフィルタとして機能する、追加のパラメータ(セレクタ)を受け入れます。たとえば、マッピングのターゲット・データストアのマップされた属性のみをリストする場合です。

これらのメソッドの一部について、次の表に要約を示します。

メソッド

説明

次で使用可能

getColList()

Oracle Data Integratorで最も頻繁に使用されるメソッドです。使用されたコンテキスト内で実行する必要がある列および式のリストを返します。たとえば、次のようなリストの生成に使用できます。

- CREATE TABLE文内の列

- 更新キーの列

- LKM、CKMまたはIKM内のSELECT文の式

- ロード・スクリプトのフィールド定義

このメソッドでは、5番目のパラメータとしてセレクタが受け入れられるため、必要に応じて項目をフィルタ処理できます。

LKM、CKM、IKM、JKM、SKM

getTargetColList()

ターゲット・データストアの属性のリストを返します。

このメソッドでは、5番目のパラメータとしてセレクタが受け入れられるため、必要に応じて項目をフィルタ処理できます。

LKM、CKM、IKM、JKM、SKM

getAKColList()

代替キー用に定義された列のリストを返します。

CKM、SKM

getPKColList()

主キーの列のリストを返します。かわりに、セレクタ・パラメータをPKに設定してgetColListを使用することもできます。

CKM、SKM

getFKColList()

現在の外部キーの、参照する列および参照される列のリストを返します。

CKM、SKM

getSrcTablesList()

マッピングのソース表のリストを返します。できるかぎり、getFromメソッドをかわりに使用してください。getFromメソッドについては後述します。

LKM、IKM

getFilterList()

マッピングのフィルタ式のリストを返します。通常はgetFilterメソッドの方が適しています。

LKM、IKM

getJoinList()

マッピングの結合式のリストを返します。通常はgetJoinメソッドの方が適しています。

LKM、IKM

getGrpByList()

マッピングのマッピングで集計関数が検出されると、GROUP BY句に表示される式のリストを返します。通常はgetGrpByメソッドの方が適しています。

LKM、IKM

getHavingList()

マッピングのフィルタで集計関数が検出されると、HAVING句に表示される式のリストを返します。通常はgetHavingメソッドの方が適しています。

LKM、IKM

getSubscriberList()

サブスクライバのリストを返します。

JKM

次の項では、これらのメソッドを使用したコードの生成方法を示します。

3.5.1 INSERT.getTargetColListを使用した表の作成

次の例では、組込み変数INSERT(タイプSqlInsertStatement)を使用して表を作成する方法を示します。

KMコード

create table $[odiRuntimeAccessName]
(
$[tgtColList.call()]
)
Combined with the following groovy variable definitions in the KM task variable definition script:
tableName = physicalNode.getBoundObjectName();
tableCmp = physicalNode.getLogicalComponent();
tableQualifier = physicalNode.getLocation() == null ? null : physicalNode.getLocation().getName();
odiRuntimeAccessName = OdiRef.getOdiGeneratedAccessName("TARG_NAME", physicalNode, "A");
tableAlias = component.getAlias();
tgtColList = {
def cols = component.getAttributes();
String result = ""
def first = true
for (col in cols) {
if (!first) result += ",\n"
result += col.getSQLAccessName(false, "") + " " + MappingUtils.getDdlDataType(col.getBoundObject());
first = false
}
return result
}

次の文を生成します。

Create table MYTABLE
(
CUST_ID numeric(10),
CUST_NAME varchar(250),
ADDRESS varchar(250),
CITY varchar(50),
ZIP_CODE varchar(12),
COUNTRY_ID varchar(3)
)

3.5.2 getTargetColListを使用した表の作成

次の例は、列リストを使用して表を作成する方法を示しています。

KMコード

Create table MYTABLE
<%=odiRef.getTargetColList("(\n", "\t[COL_NAME] [DEST_WRI_DT]", ",\n", "\n)")%>

次の文を生成します。

Create table MYTABLE
(
CUST_ID numeric(10),
CUST_NAME varchar(250),
ADDRESS varchar(250),
CITY varchar(50),
ZIP_CODE varchar(12),
COUNTRY_ID varchar(3)
)

この例の説明は、次のとおりです。

- 開始は"(\n"に設定されています。生成されるコードはカッコで始まり、その後に改行(\n)が続きます。

- パターンは"\t[COL_NAME] [DEST_WRI_DT]"に設定されています。生成されるコードは、各ターゲット列に対してループ処理を行い、タブ文字(\t)、列名([COL_NAME])、空白および変換先の書込み可能データ型([DEST_WRI_DT])の順に生成します。

- セパレータは",\n"に設定されています。生成される各パターンはカンマ(,)および改行(\n)によって後続のパターンと区切られます。

- 終了は"\n)"に設定されています。生成されるコードは改行(\n)およびその後に続くカッコで終わります。

3.5.3 getColListを使用したINSERT VALUES文

次の例は、列リストを使用して表に値を挿入する方法を示しています。

次のKMコードの場合:

insert into MYTABLE
(
<%=odiRef.getColList("", "[COL_NAME]", ", ", "\n", "INS AND NOT TARG")%>
<%=odiRef.getColList(",", "[COL_NAME]", ", ", "", "INS AND TARG")%>
)
Values
(
<%=odiRef.getColList("", ":[COL_NAME]", ", ", "\n", "INS AND NOT TARG")%>
<%=odiRef.getColList(", ", "[EXPRESSION]", ", ", "", "INS AND TARG")%>
)

次の文を生成します。

insert into MYTABLE
(
CUST_ID, CUST_NAME, ADDRESS, CITY, COUNTRY_ID
, ZIP_CODE, LAST_UPDATE
)
Values
(
:CUST_ID, :CUST_NAME, :ADDRESS, :CITY, :COUNTRY_ID
, 'ZZ2345', current_timestamp
)

この例では、MYTABLEに挿入する必要がある値は、ターゲット列と同じ名前のバインド変数または定数式(ターゲット上で実行される場合)のどちらかです。これらの2つの異なる項目セットを取得するために、セレクタ・パラメータを使用してリストが分割されています。

- "INS AND NOT TARG": まず、文の"value"部分にあるバインド変数(:[COL_NAME])にマップされる、カンマ区切りの列のリスト([COL_NAME])を生成します。INSERT文に含めるフラグが設定されており、ターゲット上で実行されない列のみを取得するようにフィルタ処理します。

- "INS AND TARG": 次に、INSERT文に含めるフラグが設定されており、ターゲット上で実行される式([EXPRESSION])に対応する、カンマ区切りの列のリスト([COL_NAME])を生成します。項目が1つでも検出された場合、リストの開始文字はカンマになります。

3.5.4 getSrcTableListの使用

次の例では、ログ目的でマッピングのソース表のリストを連結しています。

次のKMコードの場合:

insert into MYLOGTABLE
(
MAPPING_NAME,
DATE_LOADED,
SOURCE_TABLES
)
values
(
'<%=odiRef.getPop("POP_NAME")%>',
current_date,
'' <%=odiRef.getSrcTablesList("|| ", "'[RES_NAME]'", " || ',' || ", "")%>
)

次の文を生成します。

insert into MYLOGTABLE
(
MAPPING_NAME,
DATE_LOADED,
SOURCE_TABLES
)
values
(
'Int. CUSTOMER',
current_date,
'' || 'SRC_CUST' || ',' || 'AGE_RANGE_FILE' || ',' || 'C$0_CUSTOMER'
)

この例では、getSrcTableListによって、マッピングのソースとして使用されるリソース名のリストを含むメッセージが生成されます。このリストはMYLOGTABLEに追加されます。使用されるセパレータは、連結演算子(||)、引用符で囲まれたカンマ(',')、再び同じ連結演算子の順序で構成されます。表のリストが空の場合は、MYLOGTABLEのSOURCE_TABLES列が空の文字列('')にマップされます。

3.6 ソースのSELECT文の生成

LKMおよびIKMは、両方ともソースの結果セットを操作します。LKMの結果セットは、ソース上で実行する必要があるマッピング、フィルタ処理および結合に従って事前変換されたレコードを表します。一方、IKMの結果セットは、ステージング領域で実行されるマッピング、フィルタ処理および結合と一致する変換レコードを表します。

これらの結果セットを作成するには、通常はKMでSELECT文を使用します。Oracle Data Integratorには、このコードを生成するための高度な置換メソッド(getColListを含む)が用意されています。

メソッド

説明

次で使用可能

getFrom()

適切なソース表、左側外部結合、右側外部結合および完全外部結合を含む、SELECT文のFROM句を返します。このメソッドでは、トポロジからの情報を使用して、ソースまたはターゲットのテクノロジのSQL機能を判別します。テクノロジでサポートされている場合、FROM句は、適切なキーワード(INNER、LEFTなど)およびカッコを使用して適宜作成されます。

- LKMで使用した場合、ソース・サーバーによって実行される必要があるFROM句が返されます。

- IKMで使用した場合、ステージング領域サーバーによって実行される必要があるFROM句が返されます。

LKM、IKM

getFilter()

AND演算子で区切られたフィルタ式を返します。

- LKMで使用した場合、ソース・サーバーによって実行される必要があるFILTER句が返されます。

- IKMで使用した場合、ステージング領域サーバーによって実行される必要があるFILTER句が返されます。

LKM、IKM

getJrnFilter()

ジャーナル化されたソース・データストア用の特別なジャーナル・フィルタ式を返します。このメソッドは、CDCフレームワークとともに使用する必要があります。

LKM、IKM

getGrpBy()

マッピングで集計関数が検出されると、GROUP BY句を返します。

GROUP BY句には、集計関数を含まない列を参照するすべてのマッピング式が含まれます。集計関数のリストは、トポロジに含まれるテクノロジの言語によって定義されます。

LKM、IKM

getHaving()

フィルタで集計関数が検出されると、HAVING句を返します。

HAVING句には、集計関数を含むすべてのフィルタ式が含まれます。集計関数のリストは、トポロジに含まれるテクノロジの言語によって定義されます。

LKM、IKM

任意のSQL RDBMSソース・サーバーから結果セットを取得するには、次のSELECT文をLKMで使用します。

select <%=odiRef.getPop("DISTINCT_ROWS")%>
<%=odiRef.getColList("", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", "")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getFilter()%>
<%=odiRef.getJrnFilter()%>
<%=odiRef.getJoin()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

最終フロー・データを作成するために、任意のSQL RDBMSステージング領域サーバーから結果セットを取得するには、次のSELECT文をIKMで使用します。ターゲット上で実行されず、書込み可能な列にマップされている式のみを取得するために、getColListはフィルタ処理されています。

select <%=odiRef.getPop("DISTINCT_ROWS")%>
<%=odiRef.getColList("", "[EXPRESSION]", ",\n\t", "", "(not TRG) and REW")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getJrnFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

すべてのフィルタおよび結合はANDで始まり、SELECT文のWHERE句は常にtrue (1=1)の条件で始まります。

3.7 APIによるその他の情報の取得

次に示すメソッドは、有用な追加情報を提供します。

メソッド

説明

次で使用可能

getInfo()

ソース・サーバーまたはターゲット・サーバーに関する情報を返します。

任意のプロシージャまたはKM

getSession()

現在実行中のセッションに関する情報を返します。

任意のプロシージャまたはKM

getOption()

特定のオプションの値を返します。

任意のプロシージャまたはKM

getFlexFieldValue()

フレックス・フィールド値に関する情報を返します。フレックス・フィールドの値は、リスト・メソッドを使用してパターン・パラメータの一部に指定できます。

任意のプロシージャまたはKM

getJrnInfo()

CDCフレームワークに関する情報を返します。

JKM、LKM、IKM

getTargetTable()

マッピングのターゲット表に関する情報を返します。

LKM、IKM、CKM

getModel()

リバースエンジニアリングの処理中に現在のモデルに関する情報を返します。

RKM

getPop()

現在のマッピングに関する情報を返します。

LKM、IKM

3.8 コード生成の高度な技術

Oracle Data Integratorでのコード生成は、<%および%>のタグで囲んだすべてのJavaコードを解釈できます。

ただし、ODIバージョン12.2.1.2.1以降で開発された新しいKMのベスト・プラクティスとしては、Javaまたはgroovyコードを、KMタスクのgroovy変数定義スクリプトに追加して、テンプレート・コマンドで使用できる単純な変数のセットを定義することによって、テンプレートとは別に保持します。たとえば、ある複雑な条件に従ってテンプレート・コマンドの一部のセクションを条件付きで生成する場合のベスト・プラクティスは、groovy変数スクリプトにブール変数を定義し、その変数をテンプレート・コマンドの{#IF#}文で使用することです。このようにすると、テンプレートとコードは別々に保持され、両方がより明確になります。

次に示す例は、これらの高度な技術の使用方法を説明しています。

Java変数およびString関数の使用

次のKMコードは、String変数を作成し、それを置換メソッドのコールで使用します。

<%
String myTableName;
myTableName = "ABCDEF";
%>
drop table <%=odiRef.getObjectName(myTableName.toLowerCase())%>

次を生成します。

drop table SCOTT.abcdef

KMオプションを使用した条件付きのコード生成

次のKMコードは、OPT001オプション値に応じてコードを生成します。

<%
String myOptionValue=odiRef.getOption("OPT001");
if (myOption.equals("TRUE"))
{
out.print("/* Option OPT001 is set to TRUE */");
}
else
{
%>
/* The OPT001 option is not properly set */
<%
}
%>

OPT001がTRUEに設定された場合は、次が生成されます。

/* Option OPT001 is set to TRUE */

その他の場合は、次が生成されます。

/* The OPT001 option is not set to TRUE */

4 リバースエンジニアリング戦略

この章では、カスタマイズされたリバースエンジニアリングのプロセスと、高度なメタデータを取得するためにリバースエンジニアリング・ナレッジ・モジュールで使用される戦略について説明します。

この章の内容は次のとおりです。

- カスタマイズ・リバースエンジニアリング・プロセス

- ケース・スタディ

4.1 カスタマイズ・リバースエンジニアリング・プロセス

Oracle Data Integratorの標準リバースエンジニアリングでは、指定されたデータ・サーバーへの接続に使用されるドライバの機能に依存して、データ構造を記述したリッチ・メタデータを返します。

このメタデータが正確でないか、データ・サーバーから特定のメタデータを取得してリッチ化する必要がある場合は、カスタマイズ・リバースエンジニアリングを使用します。

4.1.1 SNP_REV表

Oracle Data Integratorリポジトリには、SNP_REV表と呼ばれるメタデータ・ステージング表のセットが含まれています。

これらのSNP_REV表の内容は、次のツールを使用して管理されます。

- OdiReverseResetTableは、指定されたモデルに対してこれらの表の内容をリセットします。

- OdiReverseGetMetadataは、標準のJDBCリバースエンジニアリングと同じプロセスを使用してこれらの表をロードします。

- OdiReverseSetMetadataは、これらのステージング表の内容を、データストア、列、制約などを記述するリポジトリ表に適用します。このアクションによってOracle Data Integratorモデルが変更されます。

SNP_REV表の詳細はSNP_REV表のリファレンスを、リバースエンジニアリング・ツールの詳細はOracle Data Integrator開発者ガイドを参照してください。

4.1.2 カスタマイズ・リバースエンジニアリング戦略

カスタマイズ・リバースエンジニアリング戦略は、すべてのRKMで共通のパターンに従います。

このパターンには次の手順が含まれます。

1. OdiReverseResetTableツールをコールし、SNP_REV表の前の実行結果をリセットします。

2. SNP_REV表をロードします。これは次の3つの主要パターンを使用して実行されます。

- メタデータ・プロバイダからメタデータを取得し、それらをSNP_REV表にロードします。これはRKM Oracleの例に使用されるパターンです。

- サードパーティ・プロバイダからメタデータを取得します。これはRKM File (FROM EXCEL)の例に使用されるパターンです。メタデータは、モデルに記述されたファイルからではなく、これらのファイルの記述を含むMicrosoft Excelスプレッドシートから抽出されます。

- OdiReverseGetMetadataを使用してSNP_REV表を事前にロードし、これらの表をターゲットとする問合せを使用してメタデータを修正/リッチ化します。

3. OdiReverseSetMetaDataツールをコールして、現在のOracle Data Integratorモデルに変更を適用します。

RKMでは、ソース・コマンドとターゲット・コマンドは次のように機能します。

- 「自動コミット」トランザクションで「未定義」テクノロジにより指定された「ターゲットに対するコマンド」は、リポジトリのSNP_REV表をターゲットとします。

- 「自動コミット」トランザクションで「未定義」スキーマにより指定された「ソースに対するコマンド」は、リバースエンジニアリングのデータ構造を含むデータサーバーからデータを取得します。メタデータ・プロバイダ(たとえば、Excelスプレッドシート)を使用する場合は、特定のテクノロジと論理スキーマを指定する必要があります。

- ツール(OdiReverseSetMetadataなど)のコールは、ODIツール・テクノロジにより、「ターゲットに対するコマンド」で指定されます。

4.2 ケース・スタディ

この項では、リバースエンジニアリング戦略の例を示します。

4.2.1 RKM Oracle

RKM Oracleは、データベース・ディクショナリをメタデータ・プロバイダとして使用するリバースエンジニアリング・プロセスの一般的な例です。

次のコマンドは、OracleのRKMから抽出したもので、ここに例として示します。このナレッジ・モジュールのコードはOracle Data Intagrator Studioで編集して確認できます。

4.2.1.1 SNP_REV表のリセット

このタスクは、現在のモデルに対してSNP_REV表の内容をリセットします。

ターゲットに対するコマンド(ODIツール)

OdiReverseResetTable -MODEL=<%=odiRef.getModel("ID")%>

4.2.1.2 表の取得

このタスクは、Oracleシステム表から表のリストを取得し、その内容をSNP_REV表にロードします。

ソースに対するコマンド

Select    t.TABLE_NAME            TABLE_NAME,    t.TABLE_NAME            RES_NAME,    replace(t.TABLE_NAME,'<%=odiRef.getModel("REV_ALIAS_LTRIM")%>','')        TABLE_ALIAS,    substr(tc.COMMENTS,1,250)        TABLE_DESC,    'T' TABLE_TYPE,    t.NUM_ROWS            R_COUNT,    SUBSTR(PARTITIONING_TYPE ,1,1) PARTITIONING_TYPE,    SUBSTR(SUBPARTITIONING_TYPE,1,1) SUBPARTITIONING_TYPEFrom    ALL_TABLES    t,    ALL_TAB_COMMENTS     tc,    ALL_PART_TABLES tp
Where ...
...

ターゲットに対するコマンド

insert into SNP_REV_TABLE(    I_MOD,    TABLE_NAME,    RES_NAME,    TABLE_ALIAS,    TABLE_TYPE,    TABLE_DESC,    IND_SHOW,    R_COUNT,    PARTITION_METH,    SUB_PARTITION_METH)values(    <%=odiRef.getModel("ID")%>,    :TABLE_NAME,    :RES_NAME,    :TABLE_ALIAS,    'T',    :TABLE_DESC,    '1',    :R_COUNT,    :PARTITIONING_TYPE,    :SUBPARTITIONING_TYPE)

4.2.1.3 ビュー、パーティション、列、FK、キーおよびその他のOracleメタデータの取得

後続のコマンドでは、同じパターンを使用してOracleシステム表の内容からSNP_REV表をロードします。

4.2.1.4 メタデータの設定

このタスクは、現在のモデルに対してSNP_REV表の内容をリセットします。

ターゲットに対するコマンド(ODIツール)

OdiReverseSetMetaData -MODEL=<%=odiRef.getModel("ID")%>

5 データ整合性の戦略

この章では、フロー・チェックおよび静的チェックの実行に使用されるデータ整合性の戦略について説明します。これらの戦略は、チェック・ナレッジ・モジュールに実装されています。

この章の内容は次のとおりです。

- データ整合性のチェック・プロセス

- ケース・スタディ

5.1 データ整合性のチェック・プロセス

データ整合性のチェック・プロセスは、次の場合に有効になります。

- 「静的制御」がモデル、サブモデルまたはデータストアに対して起動された場合(Studioから、またはパッケージを使用して)。データストアのデータは、Oracle Data Integratorモデルに定義されている制約と照合してチェックされます。

- マッピングが実行され、IKMで「フロー制御」が有効化されている場合。統合表(I$)にステージングされたフロー・データは、モデルに定義されているターゲット・データストアの制約と照合してチェックされます。マッピングで選択された制約のみがチェックされます。

このどちらのケースでも、CKMは、事前定義済の一連の制約に従って、データストアのデータ品質をチェックします。CKMは、「静的制御」で既存のデータのチェックに使用するか、「フロー制御」でフロー・データのチェックに使用できます。また、指定すると、チェックした表からエラーのあるレコードを削除することもできます。

静的制御の場合は、使用するCKMはモデルで定義されます。フロー制御の場合は、マッピングで指定されます。

5.1.1 チェック・ナレッジ・モジュールの概要

標準のCKMでは、次の2種類の表が管理されます。

- 各データ・サーバーの単一のサマリー表。名前はSNP_CHECK_TABで、データ・サーバーのデフォルト物理スキーマの作業スキーマで作成されます。この表には、それぞれの表および制約のエラーのサマリーが含まれます。たとえば、モデルの全体的なデータ品質の分析に使用できます。

- チェックされた各データストアのエラー表。名前はE$_<datastore name>です。エラー表には、この表に対して起動されたデータ品質プロセス(静的制御とフロー制御)によって拒否された実際のレコードが含まれます。

標準CKMは、次の手順で構成されます。

- サマリー表を削除して作成します。DROP文は、サマリー表をリセットするために設計者がこれを要求する場合のみ実行されます。CREATE文は常に実行されますが、 表がすでに存在する場合は、エラーが許可されます。

- 前の実行のサマリー・レコードをサマリー表から削除します。

- エラー表を削除して作成します。DROP文は、エラー表を再作成するために設計者がこれを要求する場合のみ実行されます。CREATE文は常に実行されますが、表がすでに存在する場合は、エラーが許可されます。

- 前の実行で拒否されたレコードをエラー表から削除します。

- 主キー制約に違反するレコードを拒否します。

- 代替キー制約に違反するレコードを拒否します。

- 外部キー制約に違反するレコードを拒否します。

- チェック条件制約に違反するレコードを拒否します。

- 必須属性制約に違反するレコードを拒否します。

- 必要に応じて、チェックした表から拒否されたレコードを削除します。

- サマリー表に、検出されたエラーのサマリーを挿入します。

CKMコマンドにタグを付けて、コードの生成方法を指定する必要があります。使用できるタグ は次のとおりです。

- 主キー: コマンドによって、主キー制約のチェックに必要なコードが定義されます。

- 代替キー: コマンドによって、代替キー制約のチェックに必要なコードが定義されます。Oracle Data Integratorでは、コードの生成時にそれぞれの代替キーに対してこのコマンドが使用されます。

- 結合: コマンドによって、外部キー制約のチェックに必要なコードが定義されます。Oracle Data Integratorでは、コードの生成時にそれぞれの外部キーに対してこのコマ ンドが使用されます。

- 条件: コマンドによって、条件制約のチェックに必要なコードが定義されます。Oracle Data Integratorでは、コードの生成時にそれぞれのチェック条件に対してこのコマン ドが使用されます。

- 必須: コマンドによって、必須属性制約のチェックに必要なコードが定義されます。Oracle Data Integratorでは、コードの生成時に必須属性に対してこのコマンドが使用されます。

- エラーの削除: コマンドによって、チェックした表から拒否されたレコードを削除するのに必要なコードが定義されます。

5.1.2 エラー表の構造

この項では、エラー表およびサマリー表の一般的な構造について説明します。

5.1.2.1 エラー表の構造

E$エラー表には、次の表に記載する列のリストが含まれます。

列

説明

[チェックされた表の列]

エラー表にはチェックしたデータストアのすべての属性が含まれます。

ERR_TYPE

エラーの種類:

- 'F': フロー制御中にデータストアがチェックされた場合

- 'S': 静的制御を使用してデータストアがチェックされた場合

ERR_MESS

違反があった制約に関連するエラー・メッセージ

CHECK_DATE

データストアがチェックされた日時

ORIGIN

チェック操作の実行元。この列は、チェックの実行方法によって、データストア名、またはマッピング名とIDのどちらかに設定されます。

CONS_NAME

違反のあった制約の名前

CONS_TYPE

制約の種類:

- 'PK': 主キー

- 'AK': 代替キー

- 'FK': 外部キー

- 'CK': チェック条件

- 'NN': 必須属性

5.1.2.2 サマリー表の構造

SNP_CHECK表には、次の表に記載する列のリストが含まれます。

列

説明

ODI_CATALOG_NAME

チェックされた表のカタログ名(適用される場合)

ODI_SCHEMA_NAME

チェックされた表のスキーマ名(適用される場合)

ODI_RESOURCE_NAME

チェックされた表のリソース名

ODI_FULL_RES_NAME

チェックされた表の完全修飾名。たとえば<catalog>.<schema>.<table>

ODI_ERR_TYPE

エラーの種類:

- 'F': フロー制御中にデータストアがチェックされた場合

- 'S': 静的制御を使用してデータストアがチェックされた場合

ODI_ERR_MESS

エラー・メッセージ

ODI_CHECK_DATE

データストアがチェックされた日時

ODI_ORIGIN

チェック操作の実行元。この列は、チェックの実行方法によって、データストア名、またはマッピング名とIDのどちらかに設定されます。

ODI_CONS_NAME

違反のあった制約の名前

ODI_CONS_TYPE

制約の種類:

- 'PK': 主キー

- 'AK': 代替キー

- 'FK': 外部キー

- 'CK': チェック条件

- 'NN': 必須属性(非Null)

ODI_ERR_COUNT

チェック処理中にこの制約によって拒否されたレコードの合計数

ODI_SESS_NO

ODIセッション番号

ODI_PK

この表の一意の識別子

5.2 ケース・スタディ

この項では、データ整合性のチェック戦略の例を示します。

5.2.1 Oracle CKM

CKM Oracleは、データ整合性チェックの一般的な例です。

次のコマンドは、OracleのCKMから抽出されたもので、ここに例として示します。このナレッジ・モジュールのコードは、Oracle Data Integrator Studioで編集して確認できます。

5.2.1.1 チェック表の削除

このタスクは、エラーのサマリー表を削除します。このコマンドは、DROP_CHECK_TABLEが「はい」に設定され、「エラーの無視」フラグが有効化されている場合のみ実行されます。サマリー表が見つからない場合でもCKMは停止されません。

ターゲットに対するコマンド(Oracle)

drop table <%=odiRef.getTable("L","CHECK_NAME","W")%> <% if (new Integer(odiRef.getOption( "COMPATIBLE" )).intValue() >= 10 ) { out.print( "purge" ); }; %>

5.2.1.2 チェック表の作成

このタスクは、エラーのサマリー表を作成します。このコマンドは常に実行され、「エラーの無視」フラグは有効化されます。サマリー表がすでに存在する場合でもCKMは停止されません。

ターゲットに対するコマンド(Oracle)

...
create table <%=odiRef.getTable("L","CHECK_NAME","W")%>
(
CATALOG_NAME    <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%> ,
SCHEMA_NAME     <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%> ,
RESOURCE_NAME     <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
FULL_RES_NAME    <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ERR_TYPE        <%=odiRef.getDataType("DEST_VARCHAR", "1", "")%> <%=odiRef.getInfo("DEST_DDL_NULL")%>,
ERR_MESS        <%=odiRef.getDataType("DEST_VARCHAR", "250", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%> ,
CHECK_DATE     <%=odiRef.getDataType("DEST_DATE", "", "")%> <%=odiRef.getInfo("DEST_DDL_NULL")%>,
ORIGIN        <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%> <%=odiRef.getInfo("DEST_DDL_NULL")%>,
CONS_NAME     <%=odiRef.getDataType("DEST_VARCHAR", "35", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
CONS_TYPE        <%=odiRef.getDataType("DEST_VARCHAR", "2", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ERR_COUNT        <%=odiRef.getDataType("DEST_NUMERIC", "10", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>
)
...

5.2.1.3 エラー表の作成

このタスクはエラー表(E$)を作成します。このコマンドは常に実行され、「エラーの無視」フラグは有効化されます。エラー表がすでに存在する場合でもCKMは停止されません。

チェックしたデータストアからの属性リストをこの表構造に追加するgetCollistメソッドの使用に注目してください。

ターゲットに対するコマンド(Oracle)

...
create table <%=odiRef.getTable("L","ERR_NAME", "W")%>
(
ODI_ROW_ID         UROWID,
ODI_ERR_TYPE        <%=odiRef.getDataType("DEST_VARCHAR", "1", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_ERR_MESS         <%=odiRef.getDataType("DEST_VARCHAR", "250", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CHECK_DATE    <%=odiRef.getDataType("DEST_DATE", "", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
<%=odiRef.getColList("", "[COL_NAME]\t[DEST_WRI_DT] " + odiRef.getInfo("DEST_DDL_NULL"), ",\n\t", "", "")%>,
ODI_ORIGIN         <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CONS_NAME    <%=odiRef.getDataType("DEST_VARCHAR", "35", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CONS_TYPE        <%=odiRef.getDataType("DEST_VARCHAR", "2", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_PK            <%=odiRef.getDataType("DEST_VARCHAR", "32", "")%> PRIMARY KEY,    ODI_SESS_NO         <%=odiRef.getDataType("DEST_VARCHAR", "19", "")%>
)
...

5.2.1.4 PKエラーの挿入

このタスクは、主キーのチェック中に検出されたエラーをエラー表(E$)に挿入します。このコマンドは常に実行され、このレコードをエラーとしてカウントするために、「主キー」チェック・ボックスを有効にし、「ログ・カウンタ」を「エラー」に設定します。

注意:

CKMを使用してマッピングからフロー制御を実行する場合は、許可するエラーの最大数を定義できます。この数は、「ログ・カウンタ」が「エラー」に設定されているCKMで各コマンドによって返されたレコードの合計数と比較されます。

getCollistメソッドを使用してチェックされたレコード全体をエラー表に挿入し、getPKおよびgetInfoメソッドを使用して内容に応じた情報を取得することに注意してください。

ターゲットに対するコマンド(Oracle)

insert into <%=odiRef.getTable("L","ERR_NAME", "W")%>
(
ODI_PK,
ODI_SESS_NO,
ODI_ROW_ID,
ODI_ERR_TYPE,
ODI_ERR_MESS,
ODI_ORIGIN,
ODI_CHECK_DATE,
ODI_CONS_NAME,
ODI_CONS_TYPE,
<%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "", "MAP")%>
)
select    SYS_GUID(),
<%=odiRef.getSession("SESS_NO")%>,
rowid,
'<%=odiRef.getInfo("CT_ERR_TYPE")%>',
'<%=odiRef.getPK("MESS")%>',
'<%=odiRef.getInfo("CT_ORIGIN")%>',
<%=odiRef.getInfo("DEST_DATE_FCT")%>,
'<%=odiRef.getPK("KEY_NAME")%>',
'PK',
<%=odiRef.getColList("", odiRef.getTargetTable("TABLE_ALIAS")+".[COL_NAME]", ",\n\t", "", "MAP")%>
from    <%=odiRef.getTable("L", "CT_NAME", "A")%> <%=odiRef.getTargetTable("TABLE_ALIAS")%>
where     exists  (
select     <%=odiRef.getColList("", "SUB.[COL_NAME]", ",\n\t\t\t", "", "PK")%>
from     <%=odiRef.getTable("L","CT_NAME","A")%> SUB
where     <%=odiRef.getColList("", "SUB.[COL_NAME]="+odiRef.getTargetTable("TABLE_ALIAS")+".[COL_NAME]", "\n\t\t\tand ", "", "PK")%>
group by     <%=odiRef.getColList("", "SUB.[COL_NAME]", ",\n\t\t\t", "", "PK")%>        having     count(1) > 1
)
<%=odiRef.getFilter()%>

5.2.1.5 制御表からのエラーの削除

このタスクは、制御表(静的制御)または統合表(フロー制御)からエラーがあるとして検出された行を削除します。

このタスクは常に実行され、「エラーの削除」オプションが選択されます。

ターゲットに対するコマンド(Oracle)

delete from    <%=odiRef.getTable("L", "CT_NAME", "A")%>  T
where    exists     (
select    1
from     <%=odiRef.getTable("L","ERR_NAME", "W")%> E
where ODI_SESS_NO = <%=odiRef.getSession("SESS_NO")%>
and T.rowid = E.ODI_ROW_ID
)

5.2.2 存在しない参照を動的に作成

次のユースケースは、既存のCKMに加えて実行できるカスタマイズの例について説明します。

5.2.2.1 ユースケース

データ・ウェアハウスをロードする場合に、受け取ったレコードが他の表のデータを参照しているにもかかわらず、参照されるレコードがまだ存在していないことがあります。

たとえば、1日の販売取引レコードを受け取り、これらのレコードが商品SKUを参照するとします。商品表に商品が存在しない場合は、標準CKMのデフォルトの動作では、販売取引レコードが拒否され、データ・ウェアハウスにロードされずにエラー表に格納されます。ただし、プロジェクトの要件を満たすためには、この販売レコードをデータ・ウェアハウスにロードし、その場で空の商品を作成してデータの一貫性を確保する必要があります。その後、データ分析者は、単純にエラー表を分析して商品表に自動的に追加された商品の欠落情報を作成します。

この例を図示すると次のようになります。

1. ソース・フロー・データは、IKMによってI$_SALES表にステージングされ、販売表にロードされます。IKMによってCKMがコールされ、データ品質がチェックされます。

2. CKMによって、ターゲットの販売表および商品表の間で定義されたFK_SALES_PRODUCT外部キーを含む各制約がチェックされます。PRODUCT_ID="P25"で参照された商品が商品表に存在しないため、SALES_ID='4'のレコードが拒否されてエラー表に格納されます。

3. CKMによって欠落しているP25商品の参照が商品表に自動的に挿入され、PRODUCT_NAMEに<unknown>という値が割り当てられます。これ以外のすべての属性は、nullまたはデフォルト値に設定されます。

4. ソース・フローI$表の一貫性が確保されたため、拒否されたレコードはCKMによってソース・フローI$表から削除されません。

5. IKMによってフロー・データがターゲットに書き込まれます。

上記のシーケンスでは、ステップ3および4は標準CKMとは異なるため、カスタマイズする必要があります。

5.2.2.2 ディスカッション

このようなCKMを実装する場合、Oracle Data Integratorのデフォルト・メタデータで一部の情報が欠落していることに気付きます。次の情報が必要になります。

- 参照オブジェクト上のREF_TAB_DEF_COLという名前の新しいフレックスフィールドで、これに参照される表の'<unknown>'値(この場合はPRODUCT_NAME)を保持する必要のある属性を含めます。

- FKエラーが欠落している参照を自動作成する必要があるかどうかを示すエラー表の新しい列(ODI_AUTO_CREATE_REFS)。このフラグはFKエラーの検出時に移入されます。

- 参照オブジェクト上のAUTO_CREATE_REFSという名前の新しいフレックスフィールドで、制約により、欠落している参照の作成が自動的に行われます。フレックス・フィールドの詳細は、『Oracle Data Integrator開発者ガイド』を参照してください。

これで、必要なすべてのメタデータが用意できました。要件に合わせてデフォルトのCKMを拡張できます。CKMの手順は次のようになります(変更箇所は太字で強調表示されています)。

- サマリー表を削除して作成します。

- 前の実行のサマリー・レコードをサマリー表から削除します。

- エラー表を削除して作成します。追加のODI_AUTO_CREATE_REFS列をエラー表に追加します。

- 前の実行で拒否されたレコードをエラー表から削除します。

- 主キー制約に違反するレコードを拒否します。

- 各代替キー制約に違反するレコードを拒否します。

- 各外部キー制約に違反するレコードを拒否し、AUTO_CREATE_REFSフレックスフィールドの値をODI_AUTO_CREATE_REFS列に格納します。

- 各外部キー・エラーの検出について、ODI_AUTO_CREATE_REFSが「Yes」に設定されている場合は、参照される表に欠落している参照を挿入します。

- 各チェック条件制約に違反するレコードを拒否します。

- 各必須属性制約に違反するレコードを拒否します。

- 必要に応じて、チェックした表から拒否されたレコードを削除します。制約の動作が「Yes」に設定されているレコードは削除しないでください。

- サマリー表に、検出されたエラーのサマリーを挿入します。

5.2.2.3 実装の詳細

次のコマンド変更を実行して、CKMに必要な変更を実装します。変更箇所のコードは太字で強調表示されています。

5.2.2.3.1 エラー表の作成

タスクはエラー表に新しいODI_AUTO_CREATE_REFS列を作成するように変更されます。

ターゲットに対するコマンド(Oracle)

...
create table <%=odiRef.getTable("L","ERR_NAME", "W")%>
(
ODI_AUTO_CREATE_REFS <%=odiRef.getDataType("DEST_VARCHAR", "3", "")%>
ODI_ROW_ID         UROWID,
ODI_ERR_TYPE        <%=odiRef.getDataType("DEST_VARCHAR", "1", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_ERR_MESS        <%=odiRef.getDataType("DEST_VARCHAR", "250", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CHECK_DATE     <%=odiRef.getDataType("DEST_DATE", "", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
<%=odiRef.getColList("", "[COL_NAME]\t[DEST_WRI_DT] " + odiRef.getInfo("DEST_DDL_NULL"), ",\n\t", "", "")%>,
ODI_ORIGIN         <%=odiRef.getDataType("DEST_VARCHAR", "100", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CONS_NAME    <%=odiRef.getDataType("DEST_VARCHAR", "35", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_CONS_TYPE         <%=odiRef.getDataType("DEST_VARCHAR", "2", "")%>
<%=odiRef.getInfo("DEST_DDL_NULL")%>,
ODI_PK             <%=odiRef.getDataType("DEST_VARCHAR", "32", "")%> PRIMARY KEY,
ODI_SESS_NO        <%=odiRef.getDataType("DEST_VARCHAR", "19", "")%>
)
...

5.2.2.3.2 FKエラーの挿入

タスクは新しいODI_AUTO_CREATE_REFS列を考慮するように変更されます。それをFKに定義されているフレックスフィールドの内容とともにロードして、この制約により、欠落している参照を自動作成するかどうかを示します。AUTO_CREATE_REFSフレックスフィールドの値を取得するために、getFKメソッドを使用することに注意してください。

ターゲットに対するコマンド(Oracle)

...
insert into <%=odiRef.getTable("L","ERR_NAME", "W")%>
(
ODI_AUTO_CREATE_REFS,
ODI_PK,
ODI_SESS_NO,
ODI_ROW_ID,
ODI_ERR_TYPE,
ODI_ERR_MESS,
ODI_CHECK_DATE,
ODI_ORIGIN,
ODI_CONS_NAME,
ODI_CONS_TYPE,
<%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "", "MAP")%>
)
select
'<%=odiRef.getFK("AUTO_CREATE_REFS")%>',
SYS_GUID(),
<%=odiRef.getSession("SESS_NO")%>,
rowid,
...

5.2.2.3.3 欠落している参照の挿入

FKエラーの挿入タスクの後で新しいタスクが追加されます。「結合」オプションがチェックされます。

次のことに注意してください。

- getFK("AUTO_CREATE_FS") メソッドを使用して、SQL文の生成を条件付けするAUTO_CREATE_FSフレックスフィールド値を取得します。

- getFK("REF_TAB_DEF_COL")メソッドを使用して、フレックスフィールドから'<undefined>'に設定されている属性の名前を取得します。

- getFKColListメソッドを使用して、外部キーに加える属性のリストを取得し、欠落している参照の主キー属性の内容を作成します。

- AUTO_CREATE_REFSフラグを「Yes」に設定して、現在チェックされている外部キー制約に対応するレコードのみを取得するようにフィルタされます。

ターゲットに対するコマンド(Oracle)

<% if (odiRef.getFK("AUTO_CREATE_REFS").equals("Yes")) { %>

insert into <%=odiRef.getTable("L", "FK_PK_TABLE_NAME", "A")%>
(
<%=odiRef.getFKColList("", "[PK_COL_NAME]", ",", "")%>,
<%=odiRef.getFK("REF_TAB_DEF_COL")%>
)

select distinct
<%=odiRef.getFKColList("", "[COL_NAME]", ",", "")%>,
'<UNKNOWN>'
from <%=odiRef.getTable("L","ERR_NAME", "A")%>
where
CONS_NAME = '<%=odiRef.getFK("FK_NAME")%>'
And CONS_TYPE = 'FK'
And ORIGIN = '<%=odiRef.getInfo("CT_ORIGIN")%>'
And AUTO_CREATE_REFS = 'Yes'
<%}%>

5.2.2.3.4 制御表からのエラーの削除

このタスクは、参照が作成された外部キー・レコードを削除しないように修正されます。これらのレコードを制御表に残すことができます。

ターゲットに対するコマンド(Oracle)

delete from    <%=odiRef.getTable("L", "CT_NAME", "A")%>  T
where     exists     (
select     1
from    <%=odiRef.getTable("L","ERR_NAME", "W")%> E
where ODI_SESS_NO = <%=odiRef.getSession("SESS_NO")%>
and T.rowid = E.ODI_ROW_ID
and E.AUTO_CREATE_REFS <> 'Yes'
)

6 ロード戦略

この章では、データを戦略領域にロードするために使用するロード戦略について説明します。これらの戦略はロード・ナレッジ・モジュールに実装されます。

この章の内容は次のとおりです。

- ロード・プロセス

- ケース・スタディ

6.1 ロード・プロセス

ロード・プロセスは、ソース・データを戦略領域にロードする必要がある場合に必要になります。このロードは、ステージング領域で変換が行われ、ソース・スキーマがステージング領域と同じサーバーに配置されない場合に必要になります。ステージング領域は、ロード・フェーズのターゲットです。

6.1.1 ロード・プロセスの概要

一般的なロード・プロセスは、次のように機能します。

1. 一時的なロード表が削除され(存在する場合)、ステージング領域に作成されます。

2. データは、ロード・メソッドloading methodを使用して、ソースからこのロード表にロードされます。

アクション1と2が、ステージング領域に移動する必要があるすべてのソース・データに対して繰り返されます。

データは統合フェーズで使用され、統合表にロードされます。

3. 統合フェーズの後で、マッピングが完了する前に、一時的なロード表が削除されます。

6.1.2 ロード表の構造

ロード・プロセスはステージング領域にロード表を作成します。このロード表は一般的には接頭辞C$が付けられます。

ロード表はソース・データストアではなく実行ユニットを表しています。ソース・データストアとロード表との間には直接のマッピングはありません。実行ユニットはマッピング・エディタの物理ダイアグラムに表示されます。

次のケースは、実行ユニットの概念を示しています。

- ソースのCUSTOMER表に、マッピングに使用されるCUST_NAMEとCUST_IDの2つの属性のみがあり、ステージング領域に結合がある場合、ロード表にはこれらの2つの属性のイメージのみが含まれます。統合フローに必要ない残りの属性は、ロード表には表示されません。

- CUSTOMER表がソース上でCUST_AGEでフィルタされると、CUST_AGEはその後使用されず、ロード表にはCUST_AGEは含まれません。ロード・プロセスはフィルタ処理をソース・データ・サーバーで行い、ロード表にはフィルタされたレコードを含めません。

- CUSTOMERとSALES_REPSの2つの表を、ソース上で結合を使用して結合すると、結果として作成される実行ユニットがステージング領域で行われる変換に使用されます。ロード表にはCUSTOMERとSALES_REPSから結合された属性が含まれます。

- ソース・データストアのすべての属性がマップされ、このデータストアがソース上で結合されない場合、実行ユニットがソース・データストア全体になります。この場合、ロード表はソース・データストアの正確なイメージです。これはファイルなどの転送機能のないソース・テクノロジの場合です。

6.1.3 ロード・メソッド

ロード・メソッドは、データをソースからステージング領域にロードする際に最適なパフォーマンスを得るために重要です。複数のロード・メソッドがあり、次のカテゴリに分類できます。

- エージェントを使用したロード

- ローダーを使用したファイルのロード

- アンロード/ロードを使用したロード

- RDBMS固有の戦略を使用したロード

6.1.3.1 エージェントを使用したロード

実行エージェントは、ソース・サーバー上でJDBCを使用して結果セットを読み取り、JDBCを使用してこの結果セットをステージング領域のロード表に書き込むことができます。このメソッドを使用するには、ナレッジ・モジュールに、ソース上にSELECTとターゲット上に対応するINSERTのコマンドが含まれている必要があります。

このメソッドでは、配列フェッチ機能を使用してデータが配列の行ごとに読み取られ、バッチ更新機能を使用して行ごとに書き込まれるため、大量のデータには適していません。

6.1.3.2 ローダーを使用したファイルのロード

マッピングにフラット・ファイルがソースとして含まれている場合、ファイルに組込みのODIドライバを使用する標準のLKM File to SQLではなく、ステージング領域のテクノロジに最も効率的なロード・ユーティリティを利用する戦略を使用できます。ほとんどのRDBMSには、OracleのSQL*Loader、 Microsoft SQL Serverのbcp、TeradataのFastLoad、MultiLoadなど、フラット・ファイルを表にロードするための高速なロード・ユーティリティが装備されています。

LKMでは、ソース・ファイルはステージング領域にロードされ、その後すべての変換がステージング領域で実行されます。

ロード・ユーティリティを使用する一般的なLKMでは、次の手順が行われます。

1. ステージング領域でロード表を削除し、作成します。

2. ロード表にファイルをロードするために、ローディング・ユーティリティによって要求されるスクリプトを生成します。

3. 適切なオペレーティング・システム・コマンドを実行してロードを開始し、リターン・コードをチェックします。

4. ユーティリティによってログ・ファイルが作成された場合は、このファイルをエラー処理のために分析します。

5. 統合フェーズが終了したら、ロード表を削除します。

6.1.3.3 アンロード/ロードを使用したロード

ソースの結果セットがリモート・データベース・サーバー上にある場合、エージェントを使用してデータを転送するかわりに、データをファイルにアンロードしてからそのファイルをステージング領域にロードする方法があります。

通常、様々なテクノロジに渡る大量のデータを処理する場合には、この方法が最も効率的です。たとえば、Microsoft SQL Serverソースからbcpを使用してデータをアンロードし、そのデータをSQL*Loaderを使用してOracleのステージング領域にロードできます。

この戦略に従うLKMの手順は、次のようになります。

1. ステージング領域でロード表を削除し、作成します。

2. ソース・データベース・アンロード・ユーティリティ(Microsoft SQL ServerのbcpやDB2アンロードなど)または組込みのOdiSqlUnloadツールを使用して、ソースから 一時フラット・ファイルへデータをアンロードします。

3. ロード表に一時ファイルをロードするために、ロード・ユーティリティによって要求されるスクリプトを生成します。

4. 適切なオペレーティング・システム・コマンドを実行してロードを開始し、リターン・コードをチェックします。

5. ユーティリティによってログ・ファイルが作成された場合は、このファイルをエラー処理のために分析します。

6. 統合KMが終了したらロード表を削除し、一時ファイルを削除します。

アンロード/ロード戦略を使用する場合、データを2度ステージングする必要があります。1度目は一時ファイル、2度目はロード表でのステージングです。そのため、ディスク領域が余分に使用され、能率上の問題が発生する可能性があります。より効率的な代替方法は、アンロードおよびロードのユーティリティ間でパイプラインを使用することです。あいにく、一部のオペレーティング・システムではファイルベースのパイプライン(FIFO)がサポートされていません。

6.1.3.4 RDBMS固有の戦略を使用したロード

一部のRDBMSには、サーバー間でデータを転送するためのメカニズムが装備されています。次に例を示します。

- Oracle: データベース・リンク

- Microsoft SQL Server: リンク・サーバー

- IBM DB2 400: DRDAファイル転送

その他のデータベースには、Oracleの外部表機能など、ファイルを表にロードするための特別なメカニズムが実装されています。

これらのロード戦略は、適切なオブジェクト(ビュー、データベース・リンクなど)を作成し、その機能を使用するための適切なコマンドを実装する特定のKMに実装されています。

6.2 ケース・スタディ

この項では、ロード戦略の例を示します。

6.2.1 LKM SQL to SQL

LKM SQL to SQLは、エージェントを使用したロード・フェーズの一般的な例です。

後述のコマンドはこのKMからの抜粋で、例として示します。このナレッジ・モジュールのコードは、Oracle Data Integrator Studioで編集して確認できます。

6.2.1.1 作業表の削除

このタスクは、ロード表を削除します。このコマンドは常に実行され、「エラーの無視」フラグは有効化されます。ロード表が見つからない場合でもLKMは停止されません。

ターゲットに対するコマンド

drop table <%=snpRef.getTable("L", "COLL_NAME", "A")%>

6.2.1.2 作業表の作成

このタスクは、ロード表を削除します。このコマンドは常に実行されます。

ロード表の名前を返すgetTableメソッドのCOLL_NAMEプロパティを使用することに注意してください。

ターゲットに対するコマンド

create table <%=snpRef.getTable("L", "COLL_NAME", "A")%>(    <%=snpRef.getColList("", "[CX_COL_NAME]\t[DEST_WRI_DT] " + snpRef.getInfo("DEST_DDL_NULL"), ",\n\t", "","")%>)

6.2.1.3 データのロード

このタスクはソース接続にデータを読み込み、それをロード表にロードします。このコマンドは常に実行されます。

注意:

ODI一時表には回復不可能なデータは含まれていないため、ロード・フェーズでは常に自動コミットが使用されます。

ソースに対するコマンド

getFilter、getJoin、getFromなどのメソッドの使用に注目してください。これらのメソッドは内容に応じた式を返すショートカットです。たとえば、getFilterはソース上で実行されるすべてのフィルタ式を返します。また、getColListのEXPRESSIONプロパティを使用することにも注意してください。これはソース属性とソース上で実行される式を返します。これらの式およびソース属性は、ロード表内の対応する属性名であるCX_COL_NAMEに応じた別名です。

このselect文は、ソース・エンジンにより正しい変換(マッピング、結合、フィルタなど)が行われるようにします。

select    <%=snpRef.getPop("DISTINCT_ROWS")%>    <%=snpRef.getColList("", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", "")%>from    <%=snpRef.getFrom()%>where    (1=1)<%=snpRef.getFilter()%><%=snpRef.getJrnFilter()%><%=snpRef.getJoin()%><%=snpRef.getGrpBy()%><%=snpRef.getHaving()%>

ターゲットに対するコマンド

ここでは:[CX_COL_NAME]を使用するバインディングに注目してください。CX_COL_NAMEでバインドされた値は、ソース属性の別名に一致します。

insert into <%=snpRef.getTable("L", "COLL_NAME", "A")%>(    <%=snpRef.getColList("", "[CX_COL_NAME]", ",\n\t", "","")%>)values(    <%=snpRef.getColList("", ":[CX_COL_NAME]", ",\n\t", "","")%>)

6.2.1.4 作業表の削除

このタスクは、ロード表を削除します。このコマンドは、DELETE_TEMPORARY_OBJECTSナレッジ・モジュール・オプションが選択されている場合に実行されます。このオプションは、ロード表をデバッグ用に保存しておけるようにします。

ターゲットに対するコマンド

drop table <%=snpRef.getTable("L", "COLL_NAME", "A")%>

7 統合戦略

この章では、マッピングで使用される統合戦略について説明します。この戦略は統合ナレッジ・モジュールに実装されます。

この章の内容は次のとおりです。

- 統合プロセス

- ケース・スタディ

7.1 統合プロセス

統合プロセスは、マッピングで常に必要になります。このプロセスは、一時統合表を使用して、ソースからのデータの統合や、ターゲット・データストアへの表のロードを行います。

統合プロセスは、統合プロセスに必要な手順を定義する統合戦略を使用します。次に統合戦略の例を示します。

- 追加: オプションとして、ターゲット・データストア内のすべてのレコードを削除し、すべてのフローをターゲットに挿入します。

- 制御追加: オプションとして、ターゲット・データベース内のすべてのレコードを削除し、すべてのフローをターゲットに挿入します。この戦略にはオプションのフロー制御が含まれます。

- 増分更新: オプションとして、ターゲット・データベース内のすべてのレコードを削除します。フローをターゲットと比較して、新しいレコードと既存のレコードを識別します。次に新しいレコードをターゲットに挿入して既存のレコードを更新します。この戦略にはオプションのフロー制御が含まれます。

- 緩やかに変化するディメンション: タイプ2の緩やかに変化するディメンションを実装し、変更時にターゲット・レコードでの単純な更新が必要なフィールド、前のレコードの状態の履歴が必要なフィールドを識別します。

このフェーズでは、ステージング領域とターゲットが同じデータ・サーバーに存在する場合には単一サーバーが、ステージング領域とターゲットが別のサーバー上にある場合には2つのサーバーが関与します。

7.1.1 統合プロセスの概要

統合プロセスは、使用される戦略によって大きく異なります。

統合プロセスでは次の要素が使用されます。

- 統合表(フロー表とも呼ばれる)は、ステージング領域の変換がすべて行われた後でデータをステージングするために必要になることがあります。このロード表は、ターゲット表名の前に接頭辞I$を付けた名前になります。この統合表は、戦略を実装するために必要な追加フィールドを含むターゲット表のイメージです。この表内のデータにはフラグが付き、ターゲット表に統合される前に変換またはチェックされます。

- LKMによって作成されたソース表またはロード表(あるいはその両方) 。統合プロセスでは、これらの表から統合表または直接ターゲット表にデータがロードされます。

- チェック・ナレッジ・モジュール。IKMによりフロー・チェック・フェーズが開始され、統合表のデータがターゲット表の一部の制約に適合しているかチェックされます。不正なデータは統合表から削除されます(フローから削除)。

- 挿入、更新、UD1などのマッピング・メタデータ、または緩やかに変化するディメンションの動作などのモデル・メタデータは、統合フェーズで統合戦略の属性レベルの動作をパラメータ設定するために使用されます。

一般的な統合プロセスは、次のようになります。

1. 必要に応じて一時統合表を作成します。たとえば、 値がIまたはUの更新フラグにより、挿入する行と更新する行を区別します。

2. ソースとロード表からこの統合表にデータをロードし、ステージング領域で指定された変換(結合、フィルタ、マッピング)を実行します。

3. 統合表で変換を実行し、統合戦略を実施します。たとえば、統合表の内容をターゲット表と比較して、更新フラグを設定します。

4. 統合表からターゲット表にデータをロードして内容を変更します。

7.1.2 統合戦略

次の項では、Oracle Data Integratorで使用される一部の統合戦略について説明します。これらは次の2つの種類に分類されます。

- ターゲット上のステージング領域を使用した戦略

- ターゲットと異なるステージング領域を使用した戦略.

7.1.2.1 ターゲット上のステージング領域を使用した戦略

この戦略は、ステージング領域スキーマがターゲット表スキーマと同じデータ・サーバーにある場合に使用されます。この構成では、複雑な統合を実行できます。

7.1.2.1.1 追加

この戦略は、受け取ったデータ・フローをターゲット・データストアに単純に挿入します。 できれば事前にターゲットの内容を削除します。

この統合戦略には次の手順が含まれます。

1. ターゲット表からすべてのレコードを削除します(または切り詰めます)。この手順は、通常、KMオプションに依存します。

2. 同じサーバー上にあるソースおよびステージング領域のロード表のデータを変換して挿入します。リモート・ソース・データを処理する場合、LKMにはすでにロード表が用意されています。同じサーバーにあるソースは、直接読み込むことができます。統合操作には、直接的なINSERT/SELECT文が利用され、SELECT句にはステージング領域で実行されるすべての変換、INSERT句にはターゲットでのすべての変換が含まれます。

3. トランザクションをコミットします。ターゲット上で実行される操作はトランザクション内で行い、操作がすべて完了してからコミットする必要があります。コミットは一般的にはCOMMITと呼ばれるKMオプションによってトリガーされます。

同じ統合戦略は、制御追加戦略を使用して、有効なフロー制御を選択せずに取得できます。

7.1.2.1.2 制御追加

追加戦略では、データはフロー制御を使用せずに単純にターゲット表に挿入されます。この方法は、フロー・データを統合表(I$)に格納してから、CKMをコールしてエラーのあるレコードをエラー表(E%)に隔離する別の手順を追加することによって改善できます。

この統合戦略には次の手順が含まれます。

1. ステージング領域で統合表を削除(存在する場合)して作成します。これは、フロー制御のためにCKMに渡せるように、ターゲット表と同じ属性を使用して作成されます。

2. ソースのロード表に、追加戦略でターゲットをロードするのと同じ単一のINSERT/SELECT文を使用してデータを挿入します。

3. フロー制御のためにCKMをコールします。CKMは統合表データに対してターゲット表に定義された各制約を評価します。エラー表を作成し、エラーのあるレコードをこの表に挿入します。また、エラーのあるレコードを統合表から削除します。
CKMが完了すると、統合表に含まれるのは有効なレコードのみになります。これでターゲット表への挿入を安全に行えるようになりました。

4. ターゲット表からすべてのレコードを削除します。この手順は、マッピングの設計者によって設定されるオプション値に依存させることができます。

5. 単一のINSERT/SELECT文で、統合表からターゲット表へレコードを追加します。

6. トランザクションをコミットします。

7. 一時統合表を削除します。

エラーのリサイクル

場合によっては、フローに追加して再びターゲットに適用されるように、前の実行によるエラーをリサイクルすると便利です。この方法は、存在しない可能性のある商品IDを参照する、1日の販売取引を受け取る場合などに役立ちます。たとえば、参照される商品IDが商品表に存在しないため、販売レコードが拒否されてエラー表に隔離されたとします。これは、マッピングの最初の実行時に発生します。まもなく、データ管理者によって欠落している商品IDが作成されます。これにより、拒否されたレコードが有効になるため、マッピングの次の実行時にターゲットに適用しなおす必要が出てきます。

このメカニズムは、エラー表から統合表へのこのマッピングの前の実行で拒否されたレコードをすべて挿入する追加のタスクによって、IKMに実装されます。この操作は、データ品質チェックのためにCKMをコールする前に行われ、通常はRECYCLE_ERRORSと呼ばれるKMオプションによって条件設定されます。

7.1.2.1.3 増分更新

増分更新戦略は、更新キーと呼ばれる一連の属性に従って、フローのレコードをターゲットの既存のレコードと比較して、ターゲット表にデータを統合するために使用されます。同じ更新キーを持つレコードは、関連付けられているデータが同じでない場合に更新されます。ターゲットに存在しないレコードは挿入されます。多くの場合、この戦略は、変更されたレコードを追跡する必要がない場合に、ディメンション表に使用されます。

このようなIKMの課題は、パフォーマンスの問題につながることが多い行単位の処理方法を使用するかわりに、セット指向のSQLに基づくプログラミングを使用してすべての操作を実行することです。このような戦略を構築するための最も一般的な方法は、通常、変換済実行ユニットを格納する統合表(I$)に依存します。この方法の詳細は次のとおりです。

1. ステージング領域で統合表を削除(存在する場合)して作成します。これは、フロー制御のためにCKMに渡せるように、ターゲット表と同じ属性を使用して作成されます。この表には、挿入対象のレコード(I)および更新対象のレコード(U)のフラグ付けに使用されるIND_UPDATE属性も含まれます。

2. ソースのロード表のデータが変換され、単一のINSERT/SELECT文を使用してロード表に挿入されます。IND_UPDATE属性はデフォルトで"I"に設定されます。

3. RECYCLE_ERROR KMオプションが選択されている場合は、前の実行で拒否されたレコードをリサイクルして統合表に追加します。

4. フロー制御のためにCKMをコールします。CKMは統合表データに対してターゲット表に定義された各制約を評価します。エラー表を作成し、エラーのあるレコードをこの表に挿入します。また、エラーのあるレコードを統合表から削除します。

5. 統合表を更新して、ターゲットと同じ更新キーの値を持つすべてのレコードに対してIND_UPDATEフラグを「U」に設定します。したがって、すでにターゲットに存在するレコードには「U」フラグが付きます。この手順には通常、UPDATE/SELECT文を使用します。

6. 統合表を再び更新し、すでに「U」フラグが付いており、属性の値がターゲットと完全に同じであるすべてのレコードに対してIND_UPDATE属性を「N」に設定します。これらのフロー・レコードは、ターゲット・レコードと完全に一致するため、ターゲット・データの更新に使用する必要はありません。
この手順が終了すると、統合表にフラグ付きのレコードが含まれるため、ターゲットに変更を適用するための統合表の準備が完了します。

- I: ターゲットに挿入するレコードです。

- U: ターゲットの更新に使用するレコードです。

- N: すでにターゲットに存在するため無視するレコードです。

7. 統合表の「U」フラグ付きレコードを使用してターゲットを更新します。操作するデータの量を最小限にするために、一般的には更新文をINSERT文の前に実行することに注意してください。

8. 統合表の「I」フラグ付きレコードをターゲットに挿入します。

9. トランザクションをコミットします。

10. 一時統合表を削除します。

最適化

この方法は、基礎となるデータベースに応じて最適化できます。このような最適化の例を次に示します。

- Teradataでは、フローデータとターゲット表の間に左側外部結合を使用して、IND_UPDATE属性がすでに適切に設定されている統合表を移入する方が効率的な場合があります。

- Oracleでは、場合によっては、UPDATE文、INSERT文の順に使用するよりも、ターゲット表でMERGE INTO文を使用する方が効率的なことがあります。

更新キー

更新キーは、常に一意であることが必要です。ほとんどの場合、主キーが更新キーとして使用されます。ただし、ID属性、ランク関数、または順序のように、増分を使用して自動的に算出される場合は、主キーを使用できません。この場合は、ソースにある、属性に基づく更新キーを使用する必要があります。

Nullの比較

更新の対象外を決定するためにデータの値を比較する場合、統合表とターゲット表の間の結合は、属性ごとに次のように表されます。

<target_table>.AttributeN = <loading_table>.AttributeN or (<target_table> is null and <loading_table>.AttributeN is null)

これを行うことで、NULL値を別のNULL値と一致させるためのNULL値の比較が許可されます。より簡潔に記述するには、結合関数を使用します。したがって、WHERE条件は次のように記述できます。

<%=odiRef.getColList("","coalesce(" + odiRef.getTable("L", "INT_NAME", "A") + ".[COL_NAME], 0) = coalesce(T.[COL_NAME], 0)", " \nand\t", "", "((UPD and !TRG) and !UK) ")%>

属性レベルの挿入/更新動作

UPDATE文によって更新された属性は、INSERT文で使用されるものと同じではありません。UPDATE文では、セレクタ「UPD and not UK」を使用して、マッピング内の「Update」のマークが付いたマッピングのうち、更新キーに属さない属性マッピングのみがフィルタ処理されます。INSERT文では、セレクタ「INS」を使用して、マッピング内の「insert」のマークが付いた属性マッピングのみが取得されます。

トランザクション

ターゲットのUPDATE文とINSERT文が、同じトランザクションに属することが重要です。1つでも条件を満たさない場合は、ターゲットへのデータの挿入または更新は一切行われません。

7.1.2.1.4 緩やかに変化するディメンション

タイプ2の緩やかに変化するディメンション(SCD)は、データ・ウェアハウスのロードに使用される戦略です。多くの場合、特定の属性で発生した変更を追跡するために、ディメンション表のロードに使用されます。緩やかに変化するディメンションの一般的な表には、次の属性が含まれます。

- サロゲート・キー。これは通常は数値属性で、ID属性、ランク関数、または順序を使用して自動生成された番号が含まれます。

- ナチュラル・キー。業務システムの実際の主キーを表す属性のリストです。

- 変更時に上書きする必要のある属性。

- 変更時に行を追加する必要のある属性。

- データ・ウェアハウスでレコードが作成された日付を示す開始日属性。

- レコードが不要になった日付(終了日)を示す終了日属性。

- レコードが現在のレコード(1)か古いレコード(0)かを示す、現在のレコード・フラグ。

次の例は、緩やかに変化するディメンションの動作を示しています。

業務システムでは、商品は主キーの役割をするIDによって定義されます。各商品には、名前、サイズ、仕入先、およびファミリがあります。業務システムで仕入先またはファミリが更新されるたびに、この商品の新しいバージョンがデータ・ウェアハウスに格納されます。

図7-1 タイプ2 緩やかに変化するディメンションの例

この例では、2006年3月12日にデータ・ウェアハウスで商品のディメンションが最初に初期化されています。すべてのレコードが挿入され、算出されたサロゲート・キーおよび2400年1月1日に設定された偽の終了日が割り当てられています。これらのレコードは業務システムの現在の状態を表すため、現在のレコード・フラグは1に設定されています。最初のロードの後、業務システムで次の変更が発生します。

1. 商品P1の仕入先が更新されます。

2. 商品P2のファミリが更新されます。

3. 商品P3の名前が更新されます。

4. 商品P5が追加されます。

これらの更新によるデータ・ウェアハウス・ディメンションへの影響は、次のとおりです。

- P1の仕入先の更新の結果、新しい現在のレコード(サロゲート・キー5)が作成され、前のレコード(サロゲート・キー1)が終了します。

- P2のファミリの更新の結果、新しい現在のレコード(サロゲート・キー6)が作成され、前のレコード(サロゲート・キー2)が終了します。

- P3の名前の更新では、単純にターゲット・レコードがサロゲート・キー3を使用して更新されます。

- 新しい商品P5により、新しい現在のレコード(サロゲート・キー7)が作成されます。

この動作を実装するナレッジ・モジュールを作成するには、サロゲート・キー、ナチュラル・キー、開始日などの役割をする属性を把握しておく必要があります。Oracle Data Integratorでは、モデルの各属性に対する「説明」タブの「緩やかに変化するディメンションの動作」フィールドに、この情報が格納されます。

マッピングでこのようなデータストアを移入する場合、IKMは、getColList()置換メソッドでSCD_xxセレクタを使用して、このメタデータにアクセスします。

Oracle Data Integratorでは、タイプ2の緩やかに変化するディメンションの実装は、次のように行われます。

1. ステージング領域で統合表を削除(存在する場合)して作成します。

2. ナチュラル・キーの属性、変更時に上書きする属性および変更時に行を追加する属性に適用するマッピングのみを使用して、統合表にフロー・データを挿入します。開始日を現在の日付に設定し、終了日を定数に設定します。

3. 拒否された前のレコードをリサイクルします。

4. フローに対するデータ品質チェックを実行するために、CKMをコールします。

5. ターゲットの現在のレコードと比較して、ナチュラル・キーの列と変更時に行を追加する列が変更されていない場合は、統合表のレコードに「U」フラグを付けます。

6. 「U」フラグでフィルタ処理された統合表の内容を使用して、変更時に上書きされる列でターゲットを更新します。

7. (統合表にナチュラル・キーが存在する)古いレコードを終了し、そのレコードの現在のレコード・フラグを0に、終了日を現在の日付にそれぞれ設定します。

8. 現在のレコード・フラグが1に設定されている、新しい変更レコードを挿入します。

9. 統合表を削除します。

もう一度、この方法を適用できます。場合によっては、作成されたSQLを、さらに調整および最適化する必要があります。

7.1.2.2 ターゲットと異なるステージング領域による戦略

この戦略は、ステージング領域をターゲット・データストアと同じデータ・サーバー上に配置できない場合に使用されます。この設定は、主には変換機能のないデータ・サーバー(たとえばファイル・サーバーなど)に使用されます。この構成では、単純な統合戦略のみが可能です。

7.1.2.2.1 ファイルからサーバーへの追加

ソースが単一のファイルで構成されており、そのファイルを最も効率的な方法でターゲット表に直接ロードする場合があります。Oracle Data Integratorのデフォルト設定では、ステージング領域をターゲット・サーバー上に置き、LKMを使用してソース・ファイルをロード表にステージングし、それからIKMを使用してロードされたデータをターゲット表に統合することが推奨されます。

ソース・データが変換されていない場合は、ロード・フェーズは不要です。

この状況では、ファイル・データをターゲットに直接ロードするIKMを使用します。そのためには、ステージング領域をソース・ファイルの論理スキーマに設定する必要があります。この設定を行うと、Oracle Data Integratorによってリモート・ステージング領域とターゲット間でデータを移動する複数接続IKMの使用が自動的に推奨されます。

このようなIKMではローダーが使用され、次のような手順が含まれます。

1. 適切なロード・ユーティリティ・スクリプトを生成します。

2. ローダー・ユーティリティを実行します。

このようなKMの例として、IKMファイルからTeradata (TTU)があります。

7.1.2.2.2 サーバーからサーバーへの追加

ターゲットと異なるステージング領域を使用し、このステージング領域をRDBMSに設定する場合は、ステージング領域からリモート・ターゲットに変換済データを移動するIKMを使用できます。このタイプのIKMはLKMに非常に似ており、同じ規則に従います。

エージェントを使用する場合の手順は、通常は次のようになります。

1. ターゲット表からすべてのレコードを削除します(または切り詰めます)。この手順は、通常、KMオプションに依存します。

2. ステージング領域からターゲットへデータを挿入します。この手順には、ステージング領域で実行される「ソースに対するコマンド」タブのSELECT文が含まれます。INSERT文は「ソースに対するコマンド」タブのバインド変数を使用して記述され、ターゲット表でバッチごとに実行されます。
IKM SQLからSQLへの追加は、このようなKMの典型的な例です。

この戦略の一種として、ステージング領域からターゲットへのデータのロードに、エージェントのかわりにローダーまたはデータベース固有のメソッドを使用する方法もあります。

7.1.2.2.3 サーバーからファイルまたはJMSへの追加

ターゲット・データストアがファイルまたはJMSキューまたはトピックの場合、ステージング領域はターゲット以外の場所に設定されます。したがって、ファイルをターゲットにする場合やデータストアをキューする場合は、ステージング領域からこのターゲットへ変換済データを統合する複数接続IKMを使用する必要があります。このデータ移動を実行する方法は、ターゲット・テクノロジによって異なります。たとえば、エージェントやターゲットの特定の機能(Java APIなど)を使用できます。

このようなIKMの一般的な手順は、次のようになります。

- オプションに依存するターゲット・ファイルまたはキューをリセットします。

- ステージング領域からファイルまたはキューへデータをアンロードします。

7.2 ケース・スタディ

この項では、統合戦略とカスタマイズの例を示します。

7.2.1 単純な置換または追加

すべてのソース・データがすでにステージング領域に存在する場合、既存のターゲット表にデータを統合するための最も単純な戦略は、ターゲットでレコードを置換して挿入することです。したがって、最も単純なIKMは、次の2つの手順で構成されます。

- ターゲット表からすべてのレコードを削除します。この手順は、マッピングの設計者によって設定されるオプションに依存させることができます。

- すべてのデータセットのソース・レコードを変換して挿入します。リモート・ソース・データを処理する場合、LKMには、事前変換済の結果セットを使用したロード表がすでに用意されています。ターゲット(およびステージング領域)と同じサーバーにあるソース・データ・セットをマッピングが使用する場合、データ・セットは他のロード表に結合されます。そのため、統合操作は、ターゲットTeradataボックスの変換能力をすべて利用する単純なINSERT/SELECT文になります。

これらの手順の詳細を次の例で示します。

7.2.1.1 ターゲット表の削除

このタスクはターゲット表からデータを削除します。この命令はトランザクションで実行され、コミットされません。DELETE_ALLナレッジ・モジュール・オプションが選択されている場合に実行されます。

ターゲットに対するコマンド

delete from <%=odiRef.getTable("L","INT_NAME","A")%>

7.2.1.2 新しい行の挿入

このタスクは、ステージング表からターゲット表に行を挿入します。このコマンドはターゲットで行われるすべての操作と同じトランザクションで実行され、コミットされません。最後のコミット・トランザクション・コマンドにより、ターゲット上でコミットがトリガーされます。

このコマンドにより、マッピングに定義された別のデータセットのデータが選択されます。forループを使用してすべてのデータセットを検討し、各データセットに対してSELECT問合せを生成します。生成された問合せは設定ベースの操作(UNION、INTERSECTなど)を使用してマージされ、結果のデータ・フローがターゲット表に挿入されます。

ターゲットに対するコマンド

insert into    <%=odiRef.getTable("L","TARG_NAME","A")%> (     <%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%>     <%=odiRef.getColList(",", "[COL_NAME]", ",\n\t", "", "((INS and TRG) and REW)")%> ) select    <%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%>     <%=odiRef.getColList(",", "[EXPRESSION]", ",\n\t", "", "((INS and TRG) and REW)")%> FROM (    <%for (int i=0; i < odiRef.getDataSetCount(); i++){%><%=odiRef.getDataSet(i, "Operator")%>select     <%=odiRef.getPop("DISTINCT_ROWS")%>    <%=odiRef.getColList(i,"", "[EXPRESSION] [COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%> from    <%=odiRef.getFrom(i)%>where    <% if (odiRef.getDataSet(i, "HAS_JRN").equals("1")) { %>    JRN_FLAG <> 'D    '<%} else {%>    (1=1)    <% } %><%=odiRef.getJoin(i)%><%=odiRef.getFilter(i)%><%=odiRef.getJrnFilter(i)%><%=odiRef.getGrpBy(i)%><%=odiRef.getHaving(i)%><%}%>)

7.2.2 ロード前のターゲット表のバックアップ

プロジェクトの要件の1つが、現在のデータをロードする前に各データ・ウェアハウス表をバックアップすることです。この要件は、たとえば大きな問題が発生したときに、データ・ウェアハウスを前の状態にリストアする場合に役立ちます。バックアップ表の名前は、データ表の名前に接尾辞「_BCK」を追加したものになります。

この要件を解決する最初の方法として、各ターゲット・データストアのデータを対応するバックアップ・データストアに複製するためのマッピングの開発があげられます。これらのマッピングは、データ・ウェアハウスを移入するマッピングより先にトリガーされます。あいにく、この解決方法では、ターゲット・データストアごとに追加のマッピングを作成する必要があるため、大規模な開発およびメンテナンスが発生します。開発およびメンテナンスするマッピングの数は、少なくとも2倍になります。

より簡潔な解決方法として、ターゲット・データストアの移入に使用するIKMで、この動作を実装することがあげられます。これは、ターゲットを変更する直前に作成してバックアップ表に移入する単一のCREATE AS SELECT文を使用して行います。したがって、バックアップ操作が自動化され、インタフェース開発者の介入が不要になります。

この例では、IKM Oracle増分更新でこの動作を実装する方法を示します。

ターゲットを変更する既存行の更新および新しい行の挿入タスクの前に、次のタスクを追加します。

7.2.2.1 バックアップ表の削除

このタスクは、バックアップ表を削除します。

ターゲットに対するコマンド

Drop table <%=odiRef.getTable("L","TARG_NAME","A")%>_BCK

7.2.2.2 バックアップ表の作成

このタスクは、バックアップ表を作成して移入します。

ターゲットに対するコマンド

Create table <%=odiRef.getTable("L","TARG_NAME","A")%>_BCK asselect <%=odiRef.getTargetColList("", "[COL_NAME]", ",", "")%>from <%=odiRef.getTable("L","TARG_NAME","A")%>

7.2.3 法的コンプライアンスのためにレコードの追跡

一部のデータ・ウェアハウス・プロジェクトでは、法的コンプライアンスのために、ターゲット表に対する挿入または更新の各操作を追跡する必要があります。このような追跡により、業務分析者は、特定の期間にデータに何が発生したかを把握することができます。

この動作は、緩やかに変化するディメンション・ナレッジ・モジュールを使用して実現できる場合でも、フロー・データをターゲット表に適用する前に、単純にそのコピーを作成して実現することが可能です。

各ターゲット表に、接尾辞「_RGG」の対応する追跡表があり、すべてのデータ列と次のような追加の法的コンプライアンスの列が含まれるとします。

- ジョブID

- ジョブ名

- 操作の日時

- 操作の種類(挿入または更新)

ターゲットに挿入および更新を適用した後、IKMの終了直前に統合表から直接この表を移入するとします。

たとえば、Oracle増分更新IKMの場合、ターゲットを変更する既存行の更新および新しい行の挿入タスクの直後に次のタスクを追加します。

7.2.3.1 追跡レコードのロード

このタスクは、追跡表にデータをロードします。

ターゲットに対するコマンド

insert into <%=odiRef.getTable("L","TARG_NAME","A")%>_RGC(JOBID,JOBNAME,OPERATIONDATE,OPERATIONTYPE,<%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "")%>)select <%=odiRef.getSession("SESS_NO")%> /* JOBID */,<%=odiRef.getSession("SESS_NAME")%> /* JOBNAME */,Current_timestamp /* OPERATIONDATE */,Case when IND_UPDATE = 'I' then 'Insert' else 'Update' end /* OPERATIONTYPE */,<%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "")%>from <%=odiRef.getTable("L","INT_NAME","A")%>where IND_UPDATE <> 'N'

もちろん、追跡表が存在しない場合は、IKMを使用して追跡表を自動作成することによってカスタマイズを拡張できます。

A SQL構造化置換APIリファレンス

この付録には、よく使用されるいくつかの構造化置換APIコールとその詳細をリストします。すべての構造化置換APIのリファレンスは、Oracle Data Integrator Java置換APIリファレンスを参照してください。

図A-1 SQL構造化置換APIオブジェクトUMLダイアグラム

この図を簡略化すると次のようになります。

図A-2 SQL構造化置換APIオブジェクト(簡易バージョン)

組込み変数名

コード例では次の組込み変数が使用されています。

- INSERT (SqlInsertStatement) - ターゲットIKMによって作成されるトップレベルの挿入文オブジェクト。

- QUERY (SqlQuery) - ターゲットまたはステージング表にロードするデータの抽出に使用されるトップレベル・ソース問合せ。

- ATTR (MapAttribute) - テンプレート(存在する場合)の処理時にスコープ内にある現在のソース属性。

- physicalNode (MapPhysicalNode) - KMが割り当てられている物理マッピング・ノード。

- component (IMapComponent) - KMが割り当てられている物理ノードに対応する論理マッピング・コンポーネント。

よく使用されるメソッドのリスト

よく使用されるメソッドのリストは次のとおりです。

- SqlInsertStatement.getColumnList()

- SqlInsertStatement.getQuery()

- SqlQuery.getSubqueries()

- SqlInsertStatement.getTargetTable()

- SqlQuery.getFromList()

- SqlQuery.getSelectList()

- FromClause.getJoinTable()

- FromClause.getSourceTables()

- FromClause.getTableQuery()

- ArrayExpression.getTemplate()

- ArrayExpression.getChildMap ()

A.1 SqlInsertStatement.getColumnList()

使用方法

public List<Column>getColumnList()

説明

このメソッドは、挿入文のターゲット列オブジェクトのリストを取得するために使用します。各列には、ターゲット列の名前、データ型、およびサイズに関する情報が含まれています。また、この列のロードに使用した問合せ選択アイテムがわかります。

例1

IKM Oracle挿入をベースKMとして持つIKMにテスト・タスクが設定されています。

KMタスク・ローカルgroovy変数定義スクリプト:

def colList = INSERT.getColumnList()
colListStr = ''

for (Column col : colList) {
if (colListStr.length() != 0) colListStr += ",\n"
colListStr += col.getTable().getQualifier() + '.' + col.getTable().getName()
colListStr += " /* Will be loaded from " + (col.getSourceSelectItem()  == null ? "unknown" : col.getSourceSelectItem()) + " */"
}

KMターゲット・コマンド・テキスト:

Generated column list string = $[colListStr]

生成されたコード:

Generated column list string =
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Stock_Name" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Stock_Symbol" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Stock_Type" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Industry_Type" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."SP_Rating" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Company_Name" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Registered_Address" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Registered_City" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Registered_State" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Postal_Code" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."Registered_County" */,
COMPKM_TEST_TGT_SCHEMA.Stock_Dim /* Will be loaded from STOCK_SRC."FaceValue" */

例2:

例のように設定するには、「オブジェクト」アコーディオンの下にある「セキュリティ」ナビゲータで「属性」オブジェクト用の新しいフレックスフィールドを設定します。新しいフレックスフィールドの名前は「ATTR_SUFFIX」です。また、ソース・データストア・モデルの3つの属性に、デフォルト以外の値が設定されています。値は、「_KEY1」、「_KEY2」および「_KEY3」です。

また、「ADD_SUFFIXES」という新しいブールKMオプションがテストKMに追加され、テスト・マッピングでターゲット・ノードに割り当てられているKMインスタンス用の新しいオプションの値はtrueに設定されます。IKM Oracle挿入をベースKMとして持つIKMにテスト・タスクが設定されています。

KMタスク・ローカルgroovy変数定義スクリプト:

def colList = INSERT.getColumnList()
colListStr = ''
addSuffixes = physicalNode.getKMOptionValueBoolean("ADD_SUFFIXES")
for (Column col : colList) {
if (colListStr.length() != 0) colListStr += ",\n"
attrs = col.getSourceSelectItem().getSourceAttributes()
String suffix = "";
if (addSuffixes && attrs != null && attrs.size() > 0) {
suffix = attrs.get(0).getFlexFieldValue("ATTR_SUFFIX")
}
colListStr += col.getTable().getQualifier() + '.' + col.getTable().getName() + "." + '\"' + col.getUnquotedName() + suffix + '\"'
}

KMターゲット・コマンド・テキスト:

Column List string with suffixes from source flex fields: $[colListStr]

生成されたコード:

Column List string with suffixes from source flex fields:
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Stock_Name",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Stock_Symbol_CUSTOM_KEY2",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Stock_Type",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Industry_Type_CUSTOM_KEY3",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."SP_Rating",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Company_Name_CUSTOM_KEY1",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Registered_Address",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Registered_City",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Registered_State",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Postal_Code",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."Registered_County",
COMPKM_TEST_TGT_SCHEMA.Stock_Dim."FaceValue"

A.2 SqlInsertStatement.getQuery()

使用方法

public SqlQuery getQuery()

説明

このメソッドは、ターゲットIKMまたはLKM APIオブジェクトからメイン・ソース問合せオブジェクトを取得するために使用します。SqlQueryオブジェクトには、SQL問合せを作成するために必要なすべてのメタデータが含まれています。問合せは再帰的に定義されるため、問合せオブジェクトが所有するFromClauseオブジェクトに、最上位問合せの副問合せを表すSqlQueryオブジェクトが含まれる可能性があります。

例

SQL挿入KMの最上位INSERTオブジェクトのgetQuery() methodの戻り値は、組込みQUERY変数の値と同じである必要があります。簡易テストのために、次のようなタスクを作成します。

KMタスク・ローカルgroovy変数定義スクリプト:

sourceQuery = INSERT.getQuery() queryEqualsString = (sourceQuery.equals(QUERY) ? "equal to" : "not equal to")

KMターゲット・コマンド:

INSERT.getQuery()から組込みQUERY変数への戻り値は$[queryEqualsString]です。

生成されたコード:

-- The first subquery is:
SELECT
EMP.EMP_NO AS EMP_NO ,
EMP.LAST_NAME AS LAST_NAME ,
EMP.FIRST_NAME AS FIRST_NAME ,
EMP.DEPT_ID AS DEPT_ID
FROM /* Top-level from clause */
ODI_SRC.EMP@NEXTGEN_TEST_ORACLE_SRC EMP
GROUP BY
EMP.EMP_NO,EMP.LAST_NAME,EMP.FIRST_NAME,EMP.DEPT_ID
-- The source mapping physical node for the subquery is JOIN1

A.3 SqlQuery.getSubqueries ()

使用方法

public List<SqlQuery>getSubqueries ()

説明

このメソッドは、問合せによって定義される副問合せのセットを取得するために使用します。このメソッドは第1レベルの副問合せのみを返します。返される各副問合せには、同じメソッドを使用して取得できる他の副問合せが含まれる可能性もあります。

例

例では、副問合せが見つかった場合はそれを取得し、第1副問合せの副問合せテキストが表示されます。

KMタスク・ローカルgroovy変数定義スクリプト:

subqueries = QUERY.getSubqueries()
subquery = null;
if (subqueries != null && subqueries.size() > 0) {
subquery = QUERY.getSubqueries().get(0)
} else {
odiRef.warn("No subquery found")
}
println("In task groovy, subquery is " + subquery)
subquerySourceNodeName = (subquery == null ? "unknown" : subquery.getMapPhysicalNode().getName())
println("In task groovy, subquerySourceNodeName is" + subquerySourceNodeName)

KMターゲット・コマンド:

第1副問合せは、{#IF ($[subquery] != null) #} $[subquery.getText()] {#ELSE#} not found {# ENDIF #}です。副問合せのソース・マッピング物理ノードは、 $[subquerySourceNodeName]です。

生成されたコード:

-- The first subquery is:
SELECT
EMP.EMP_NO AS EMP_NO ,
EMP.LAST_NAME AS LAST_NAME ,
EMP.FIRST_NAME AS FIRST_NAME ,
EMP.DEPT_ID AS DEPT_ID
FROM /* Top-level from clause */
ODI_SRC.EMP@NEXTGEN_TEST_ORACLE_SRC EMP
GROUP BY
EMP.EMP_NO,EMP.LAST_NAME,EMP.FIRST_NAME,EMP.DEPT_ID
-- The source mapping physical node for the subquery is JOIN1

A.4 SqlInsertStatement.getTargetTable ()

使用方法

public Table getTargetTable() ()

説明

このメソッドは、ターゲット表を表す置換APIオブジェクトを取得するために使用します。戻りタイプは「表」であり、ターゲット表の名前と特性を取得するためのメソッドが提供されます。

例

例では、表を作成するためのSQL DDL CREATE文が生成されます。

KMタスク・ローカルgroovy変数定義スクリプト:

table = INSERT.getTargetTable()
tableName = table.getCreationName()
tableQualifier = physicalNode.getLocation() == null ? null : physicalNode.getLocation().getName();
odiRuntimeAccessName = OdiRef.getOdiGeneratedAccessName("TARG_NAME", physicalNode, "A");
tableAlias = component.getAlias();
tgtColList = {
def cols = component.getAttributes();
String result = ""
def first = true
for (col in cols) {
if (!first) result += ",\n"
result += col.getSQLAccessName(false, "") + " " + MappingUtils.getDdlDataType(col.getBoundObject());
first = false
}
return result
}

KMターゲット・コマンド:

create table $[odiRuntimeAccessName]
(
$[tgtColList.call()]
)

生成されたコード:

create table COMPKM_TEST_TGT_SCHEMA."Stock_Dim"
(
"Stock_Key_PK" NUMBER(30),
"Split_Key" NUMBER(30),
"Stock_Name" VARCHAR2(50),
"Stock_Symbol" VARCHAR2(50),
"Stock_Type" VARCHAR2(50),
"Industry_Type" VARCHAR2(50),
"SP_Rating" VARCHAR2(50),
"Company_Name" VARCHAR2(50),
"Registered_Address" VARCHAR2(50),
"Registered_City" VARCHAR2(50),
"Registered_State" VARCHAR2(50),
"Postal_Code" VARCHAR2(50),
"Registered_County" VARCHAR2(50),
"FaceValue" NUMBER(30)
)

A.5 SqlQuery.getFromList ()

使用方法

public List<FromClause> getFromList()

説明

このメソッドは、SQL問合せオブジェクトのFROM句を表すFROM句構造のリストを取得するために使用します。個別の各FROM句は、なんらかのソース表またはインライン・ビューを表します。基本的には、3つのタイプのFROM句があります。

- 単純な表の参照

- 副問合せの参照

- ANSI JoinTableの参照

ANSI結合表なしに単純な表または副問合せを使用する場合、WHERE句で表間の結合関係を指定する必要があります。JoinTableを使用する場合は、ON句が含まれます。ON句には、メソッドJoinTable.getPredicate()またはJoinTable.getPredicateText()を使用してアクセスします。副問合せを使用する場合とJoinTableを使用する場合はいずれも、副問合せの標準のFROMリストまたはANSI結合副問合せソースを表す、ネストされた問合せを使用できます。

例

例では、FromClause.getSourceTables()コールを使用して、メインFROM句オブジェクトを取得してすべてのソース表のリストを導出します。

KMタスク・ローカルgroovy変数定義スクリプト:

sourceTables = QUERY.getFromList().get(0).getSourceTables()
sourceTableNames = ''
for (sourceTable in sourceTables) {
if (sourceTableNames.length() > 0) sourceTableNames += ", ";
sourceTableNames += sourceTable.getName();
}

KMターゲット・コマンド:

The source tables are: $[sourceTableNames]

生成されたコード

The source tables are: EMP, DEPT

A.6 SqlQuery.getSelectList ()

使用方法

public List<ISelectItem> getSelectList()

説明

このメソッドは、SQL問合せオブジェクトに存在する選択アイテムのリストを取得するために使用します。各アイテムは、IselectItemのインタフェース・インスタンスによって表されます。ISelectItemの実装はArrayExpression、StringExpressionおよびCorrelatedSubqueryです。タイプはjavaまたはgroovyの「instanceof」コールを使用して決定されます。ArrayExpressionはマッピング属性が所有する式を表し、参照先の副問合せを使用した複雑な式である可能性があります。StringExpressionは単純な文字列式を表します。CorrelatedQueryオブジェクトは、問合せの選択アイテムとして使用できる列と行を返す副問合せである、相関問合せ(スカラー副問合せとも呼ばれます)を表します。

例

例では、各選択アイテムのタイプとテキストを印刷します。

KMタスク・ローカルgroovy変数定義スクリプト:

selectList = QUERY.getSelectList()
selectListString = ''
index = 0;
for (item in selectList) {
if (selectListString.length() > 0) selectListString += ",\n"
selectListString += sprintf('item %1$d: type=%2$s text=%3$s', index++, item.getClass().getName(), item.toString())
}

KMターゲット・コマンド:

Select list string is:{#NL#} $[selectListString]

生成されたコード:

Select list string is:
item 0: type=oracle.odi.mapping.generation.ArrayExpression text=EMP_1.EMP_NO,
item 1: type=oracle.odi.mapping.generation.ArrayExpression text=EMP_1.LAST_NAME,
item 2: type=oracle.odi.mapping.generation.ArrayExpression text=EMP_1.FIRST_NAME,
item 3: type=oracle.odi.mapping.generation.ArrayExpression text=DEPT.DEPT_NAME

A.7 FromClause.getJoinTable ()

使用方法

public JoinTable getJoinTable ()

説明

このメソッドは、FROM句オブジェクトがANSI結合を表している場合に、FROM句オブジェクトからANSI結合表を取得するために使用します。JoinTableオブジェクトは、左および右の結合ソース(単純な表またはその他の結合表が可能)のホルダーです。これはまた、結合タイプ(内部、左外部、右外部など)と結合条件式も保持します。

例

例では、結合表の結合タイプ、右および左のソース、およびON句(存在する場合)が印刷されます。

KMタスク・ローカルgroovy変数定義スクリプト:

joinTable = QUERY.getFromList().get(0).getJoinTable()
joinTableStr = ''
if (joinTable != null) {
joinTableStr = sprintf('type=%1$s\nleft text=%2$s\nright text=%3$s\njoin condition=%4$s',
joinTable.getJoinType(), joinTable.getLeftText(), joinTable.getRightText(), joinTable.getPredicateText())
} else {
joinTableStr = 'No join table found'
}

KMターゲット・コマンド:

Join table information: $[joinTableStr]

生成されたコード:

Join table information:
type=INNER
left text=(
SELECT
EMP.EMP_NO AS EMP_NO ,
EMP.LAST_NAME AS LAST_NAME ,
EMP.FIRST_NAME AS FIRST_NAME ,
EMP.DEPT_ID AS DEPT_ID
FROM
ODI_SRC.EMP@NEXTGEN_TEST_ORACLE_SRC EMP
GROUP BY
EMP.EMP_NO,EMP.LAST_NAME,EMP.FIRST_NAME,EMP.DEPT_ID
) EMP_1
right text=ODI_SRC.DEPT@NEXTGEN_TEST_ORACLE_SRC DEPT
join condition=EMP_1.DEPT_ID = DEPT.DEPT_ID

A.8 FromClause.getSourceTables ()

使用方法

public List<Table> getSourceTables ()

説明

このメソッドは、FROM句オブジェクトに含まれるすべての単純ソース表のリストを取得するために使用します。結合表または副問合せ参照は含まれません。

例

次の例では、マッピング内の各単純ソース表の表名および論理スキーマの場所を示します。

KMタスク・ローカルgroovy変数定義スクリプト:

fromClause = QUERY.getFromList().get(0)
sourceTables = fromClause.getSourceTables()
sourceTableList = '';
context = physicalNode.getContext();
for (sourceTable in sourceTables) {
sourceTableLocation = sourceTable.getBoundDatastore().getModel().getObjectLocation(context);
sourceTableList += sprintf('Table name=%1$s, logical schema=%2$s\n', sourceTable.getName(), sourceTableLocation.getLogicalSchema().getName())
}

KMターゲット・コマンド:

Source table list: $[sourceTableList]

生成されたコード:

Source table list:

Table name=EMP, logical schema=NEXTGEN_TEST_ORACLE_SRC
Table name=DEPT, logical schema=NEXTGEN_TEST_ORACLE_SRC

A.9 FromClause.getTableQuery ()

このメソッドFromClause.getTableQuery ()には、次のメソッドが含まれています。

- JoinTable.getLeftTableQueryRef ()

- FromClause.getRightTableQueryRef ()

使用方法

public TableQueryReference getTableQuery ()
public TableQueryReference getLeftTableQueryRef ()
public TableQueryReference getRightTableQueryRef ()

説明

これらのメソッドは、FROM句の表問合せオブジェクトを取得するため、または表問合せを含むJoinTableオブジェクトから表問合せオブジェクトを取得するために使用します。表問合せは、副問合せオブジェクトまたは単純表のホルダーです。使用するKMによっては、FROM句自身によってTableQueryが含まれる場合や、結合表オブジェクトの右または左側にTableQueryが含まれる場合があります。

例

例では、最初のFROM句にJoinTableが存在するかどうかを確認し、存在する場合、左側に副問合せがあれば、結合表の左側から副問合せを取得します。

KMタスク・ローカルgroovy変数定義スクリプト:

fromClause = QUERY.getFromList().get(0)
fromClauseHasJoinTable = (fromClause.getJoinTable() == null ? "does not have" : "has") + " a join table"
tableQueryRef = QUERY.getFromList().get(0).getJoinTable().getLeftTableQueryRef()
query = null
subqueryText = null
if (tableQueryRef != null) {  // Not every FROM clause has a table query object, so protect against null.
query = tableQueryRef.getQuery()
if (query != null) {
subqueryText = query.getText()
}
}

KMターゲット・コマンド:

From clause $[fromClauseHasJoinTable]
{#IF $[subqueryText] != null #}
subquery text:
$[subqueryText]
{# ELSE #}
No subquery text found.
{# ENDIF #}

生成されたコード:

From clause has a join table subquery text:

SELECT
EMP.EMP_NO AS EMP_NO ,
EMP.LAST_NAME AS LAST_NAME ,
EMP.FIRST_NAME AS FIRST_NAME ,
EMP.DEPT_ID AS DEPT_ID
FROM
ODI_SRC.EMP@NEXTGEN_TEST_ORACLE_SRC EMP
GROUP BY
EMP.EMP_NO,EMP.LAST_NAME,EMP.FIRST_NAME,EMP.DEPT_ID

A.10 ArrayExpression.getTemplate()

使用方法

public String getTemplate ()

説明

このメソッドは、ArrayExpressionオブジェクトのコード生成テンプレートを取得します。ArrayExpressionは、ネストされた式を処理できる特殊なコード生成式オブジェクトです。たとえば、ODIマッピングに連続する複数の式コンポーネントが存在し、それぞれの式が前の式コンポーネントの式属性を参照している場合、最終的な問合せにネストされた式が存在することになります。たとえば、最初の式EXPRに属性EMPSALがあり、その式が"EMP.SAL + 100"であるとします。さらに、次の式コンポーネントに"EXPR.EMPSAL – 50"のような式があるとします。この場合、抽出問合せで使用される最終的な式は、"(EMP.SAL + 100) – 50"になります。ArrayExpressionオブジェクトは、テンプレート・テキスト内に子オブジェクトへのテンプレート参照が存在する最上位テンプレートを使用することによって、これを処理します。テキストのテンプレート参照の例は、"@{R0}"などです。これは、子ハッシュ表のキーが"R0"である子式を参照します。各子オブジェクトには、単純な文字列式、または別のArrayExpression (複数レベルのネスト用)、またはソース属性を指定できます。getTemplate()メソッドは、ArrayExpressionテキストの作成に使用するテキストのテンプレートを返します。

例

例では、ソース問合せ内のすべての選択リスト・アイテムをループし、ArrayExpressionオブジェクトとして実装されたものを見つけ、テキスト全体とテンプレート・テキストを表示します。

KMタスク・ローカルgroovy変数定義スクリプト:

selectList = QUERY.getSelectList()
arrayExprListString = ''
for (selectItem in selectList) {
ArrayExpression arrayExpr = selectItem.getArrayExpression()
if (arrayExpr != null) {
if (arrayExprListString.length() != 0) arrayExprListString += '\n';
arrayExprListString += sprintf('text=%1$s, template=%2$s', arrayExpr.getText(), arrayExpr.getTemplate())
}
}

KMターゲット・コマンド:

Here is the list of ArrayExpression templates:$[arrayExprListString]

生成されたコード:

Here is the list of ArrayExpression templates:

text=(EMP.EMP_NO + 100)*2, template=(@{R0} + 100)*2
text=EMP.LAST_NAME, template=@{R0}
text=EMP.FIRST_NAME, template=@{R0}
text=(EMP.FIRST_NAME || EMP.LAST_NAME), template=@{R0}
text=DEPT.DEPT_NAME, template=@{R0}

A.11 ArrayExpression.getChildMap()

使用方法

public Map<String,Object> getChildMap ()

説明

このメソッドは、このArrayExpressionオブジェクトが所有している子オブジェクトを含むハッシュ・マップを取得します。ハッシュ・キーは、前のメソッドで説明したように、ArrayExpressionテンプレートで使用される一致キーです。

例

例では、ソース問合せ内のすべての選択リスト・アイテムをループし、ArrayExpressionオブジェクトとして実装されたものを見つけ、テキスト全体とテンプレート・テキストを表示します。

KMタスク・ローカルgroovy変数定義スクリプト:

selectList = QUERY.getSelectList()
arrayExprListString = ''
for (selectItem in selectList) {
ArrayExpression arrayExpr = selectItem.getArrayExpression()
if (arrayExpr != null) {
if (arrayExprListString.length() != 0) arrayExprListString += '\n';
arrayExprListString += sprintf('ArrayExpression text=%1$s, template=%2$s', arrayExpr.getText(), arrayExpr.getTemplate())
childMap = arrayExpr.getChildMap()
for (childKey in childMap.keySet()) {
arrayExprListString += sprintf('\n\tChild item: key=%1$s, object=%2$s', childKey, childMap.get(childKey).toString())
}
}
}

KMターゲット・コマンド:

Here is the ArrayExpression list with child objects:$[arrayExprListString]

生成されたコード:

Here is the ArrayExpression list with child objects:

ArrayExpression text=(EMP.EMP_NO + 100)*2, template=(@{R0} + 100)*2
Child item: key=R0, object=EMP.EMP_NO
ArrayExpression text=EMP.LAST_NAME, template=@{R0}
Child item: key=R0, object=EMP.LAST_NAME
ArrayExpression text=EMP.FIRST_NAME, template=@{R0}
Child item: key=R0, object=EMP.FIRST_NAME
ArrayExpression text=(EMP.FIRST_NAME || EMP.LAST_NAME), template=@{R0}
Child item: key=R0, object=EMP.FIRST_NAME || EMP.LAST_NAME
ArrayExpression text=DEPT.DEPT_NAME, template=@{R0}
Child item: key=R0, object=DEPT.DEPT_NAME

B 置換APIリファレンス

この付録では、Oracle Data Integrator odiRef APIのリストを示します。

このAPIの使用についての概要は、OdiRef置換APIの概要を参照してください。

この付録の内容は次のとおりです。

- 置換メソッドのリスト

- 置換メソッドのリファレンス

B.1 置換メソッドのリスト

次に、置換メソッドのリストを、使用できるナレッジ・モジュールの種類別に分類して示します。「グローバル・メソッド」には、どの状況でも使用できるメソッドが分類されています。

指定されたナレッジ・モジュールまたはアクションでの動作に関する詳細は、指定されたメソッドの説明を参照してください。

この項では、次の項目について説明します。

- グローバル・メソッド

- ジャーナル化ナレッジ・モジュール

- ロード・ナレッジ・モジュール

- チェック・ナレッジ・モジュール

- 統合ナレッジ・モジュール

- リバースエンジニアリング・ナレッジ・モジュール

- サービス・ナレッジ・モジュール

- アクション

B.1.1 グローバル・メソッド

次のメソッドは、すべてのナレッジ・モジュールおよびアクションで使用できます。

- getCatalogName()メソッド

- getCatalogNameDefaultPSchema()メソッド

- getColDefaultValue()メソッド

- getContext()メソッド

- getDataType()メソッド

- getFlexFieldValue()メソッド

- getInfo()メソッド

- getJDBCConnection()メソッド

- getJDBCConnectionFromLSchema()メソッド

- getNbInsert()、getNbUpdate()、getNbDelete()、getNbErrors()およびgetNbRows()メソッド

- getObjectName()メソッド

- getObjectNameDefaultPSchema()メソッド

- getOdiGeneratedAccessName()メソッド

- getOdiInstance()メソッド

- getOption()メソッド

- getPackage()メソッド

- getPrevStepLog()メソッド

- getQuotedString()メソッド

- getSchemaName()メソッド

- getSchemaNameDefaultPSchema()メソッド

- getSession()メソッド

- getSessionVarList()メソッド

- getStep()メソッド

- getSysDate()メソッド

- setNbInsert()、setNbUpdate()、setNbDelete()、setNbErrors()およびsetNbRows()メソッド

- setTaskName()メソッド

B.1.2 ジャーナル化ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、ジャーナル化ナレッジ・モジュール(JKM)では特に次のメソッドを使用できます。

- getColList()メソッド

- getJrnFilter()メソッド

- getJrnInfo()メソッド

- getOggModelInfo()メソッド

- getOggProcessInfo()メソッド

- getSubscriberList()メソッド

- getTable()メソッド

B.1.3 ロード・ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、ロード・ナレッジ・モジュール(LKM)では特に次のメソッドを使用できます。

- getColList()メソッド

- getDataSet()メソッド

- getDataSetCount()メソッド

- getFilter()メソッド

- getFilterList()メソッド

- getFrom()メソッド

- getGrpBy()メソッド

- getGrpByList()メソッド

- getHaving()メソッド

- getHavingList()メソッド

- getJoin()メソッド

- getJoinList()メソッド

- getJrnFilter()メソッド

- getJrnInfo()メソッド

- getPop()メソッド

- getSrcColList()メソッド

- getSrcTablesList()メソッド

- getTable()メソッド

- getTargetColList()メソッド

- getTableName()メソッド

- getTargetTable()メソッド

- getTemporaryIndex()メソッド

- getTemporaryIndexColList()メソッド

- setTableName()メソッド

B.1.4 チェック・ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、チェック・ナレッジ・モジュール(CKM)では特に次のメソッドを使用できます。

- getAK()メソッド

- getAKColList()メソッド

- getCK()メソッド

- getColList()メソッド

- getFK()メソッド

- getFKColList()メソッド

- getNotNullCol()メソッド

- getPK()メソッド

- getPKColList()メソッド

- getPop()メソッド

- getTable()メソッド

- getTargetColList()メソッド

- getTargetTable()メソッド

B.1.5 統合ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、統合ナレッジ・モジュール(IKM)では特に次のメソッドを使用できます。

- getColList()メソッド

- getDataSet()メソッド

- getDataSetCount()メソッド

- getFilter()メソッド

- getFilterList()メソッド

- getFrom()メソッド

- getGrpBy()メソッド

- getGrpByList()メソッド

- getHaving()メソッド

- getHavingList()メソッド

- getJoin()メソッド

- getJoinList()メソッド

- getJrnFilter()メソッド

- getJrnInfo()メソッド

- getPop()メソッド

- getSrcColList()メソッド

- getSrcTablesList()メソッド

- getTable()メソッド

- getTableName()メソッド

- getTargetColList()メソッド

- getTargetTable()メソッド

- getTemporaryIndex()メソッド

- getTemporaryIndexColList()メソッド

- setTableName()メソッド

B.1.6 リバースエンジニアリング・ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、リバースエンジニアリング・ナレッジ・モジュール(RKM)では特に次のメソッドを使用できます。

- getModel()メソッド

B.1.7 サービス・ナレッジ・モジュール

「グローバル・メソッド」のリストに含まれるメソッドに加えて、サービス・ナレッジ・モジュール(SKM)では特に次のメソッドを使用できます。

- hasPK()メソッド

- nextAK()メソッド

- nextCond()メソッド

- nextFK()メソッド

B.1.8 アクション

「グローバル・メソッド」のリストに含まれるメソッドに加えて、アクションでは特に次のメソッドを使用できます。

- getAK()メソッド

- getAKColList()メソッド

- getCK()メソッド

- getColList()メソッド

- getColumn()メソッド

- getFK()メソッド

- getFKColList()メソッド

- getIndex()メソッド

- getIndexColList()メソッド

- getNewColComment()メソッド

- getNewTableComment()メソッド

- getPK()メソッド

- getPKColList()メソッド

- getTable()メソッド

- getTargetTable()メソッド

- isColAttrChanged()メソッド

B.2 置換メソッドのリファレンス

この項では、代替メソッドをアルファベット順にリストしています。各メソッドの使用方法、説明、パラメータおよびコード例について詳述します。

B.2.1 getAK()メソッド

代替キーに関する情報を返すために使用します。

使用方法

public java.lang.String getAK(java.lang.String pPropertyName)

説明

このメソッドはチェック・プロシージャの間、データストアの代替キーに関する情報を返します。現在のタスクにalternate keyというタグが付けられている場合、チェック・ナレッジ・モジュールからのみアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって現在処理されている代替キーに関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

AK制約の内部番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

GUID

代替キーのGUID

KEY_NAME

代替キーの名前

MESS

代替キーの制約に関するエラー・メッセージ

FULL_NAME

ローカル・オブジェクト・マスクで生成されたAKのフルネーム

<flexfield code>

このAKのフレックスフィールドの値

例

The alternate key of my table is named: <%=odiRef.getAK("KEY_NAME")%>

B.2.2 getAKColList()メソッド

代替キーの属性に関する情報を返すために使用します。

使用方法

public java.lang.String getAKColList( java.lang.String pStart,
java.lang.String pPattern,java.lang.String pEnd)
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getAKColList(
java.lang.String pPattern,
java.lang.String pSeparator)

説明

現在チェックされている代替キーの属性と式のリストを返します。

リストの各要素について、pPatternパラメータが解釈され、繰り返されます。前の要素からはpSeparatorパラメータによって区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、現在の代替キーの各属性の要素が含まれます。現在のタスクにalternate keyというタグが付けられている場合、チェック・ナレッジ・モジュールからアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって処理された代替キーの属性のリストを、キー内の位置の順に並べて返します。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン・シーケンス内に出現するたびにその値に置き換えられます。属性は大カッコ([ ])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

キー属性の名前

COL_HEADING

キー属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始位置(固定ファイル)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字:

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ:

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ:

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ:

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

未使用

CX_COL_NAME

未使用

ALIAS_SEP

別名に対して(テクノロジにより)使用されるグループ化記号

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

<flexfield code>

現在の属性のフレックスフィールド値

例

CUSTOMER表に代替キーAK_CUSTOMER (CUST_ID、CUST_NAME)が含まれ、次のコードを生成する場合:

create table T_AK_CUSTOMER
(CUST_ID numeric(10) not null, CUST_NAME varchar(50) not null)

次のコードを使用できます。

create table T_<%=odiRef.getAK("KEY_NAME")%>
<%=odiRef.getAKColList("(", "[COL_NAME] [DEST_CRE_DT] not null", ", ", ")")%>

説明: getAKColList関数が使用され、(CUST_ID numeric(10) not null, CUST_NAME varchar(50) not null)部分が生成されます。先頭と末尾はカッコで、代替キーの各属性をカンマで区切ってパターン(属性、データ型、not null)が繰り返されます。このため、

- 関数の最初のパラメータ"("は、文字列を、文字列「(」で始めることを示します。

- 2番目のパラメータ"[COL_NAME] [DEST_CRE_DT] not null"は、このパターンを代替キーの各属性に対して繰り返すことを示します。キーワード[COL_NAME]および[DEST_CRE_DT]は、表「パターン属性リスト」の有効なキーワードを参照します。

- 3番目のパラメータ", "は、パターンの解釈された発生を、文字列「,」で区切ることを示します。

- 関数の4番目のパラメータ")"は、文字列を、文字列「)」で終わることを示します。

B.2.3 getAllTargetColList()メソッド

マッピングのターゲット表のすべての属性(アクティブな属性および非アクティブな属性を含む)に関する情報を返すために使用します。アクティブな属性とは、アクティブ・マッピングを持つ属性のことです。

このメソッドの使用方法とパラメータは、getTargetTable()メソッドと同じです。詳細は、getTargetColList()メソッドを参照してください。

B.2.4 getCatalogName()メソッド

トポロジからカタログ名を返すために使用します。

使用方法

public java.lang.String getCatalogName(
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getCatalogName(
java.lang.String pLogicalSchemaName,
java.lang.String pContextCode,
pContextCode, java.lang.String pLocation)

public java.lang.String getCatalogName(
java.lang.String pLocation)

public java.lang.String getCatalogName()

説明

物理データ・カタログまたは作業カタログの名前を論理スキーマから取得できます。

最初の構文が使用される場合、返されるカタログ名は現在のコンテキストに一致します。

2番目の構文が使用される場合、返されるカタログ名は、pContextCodeパラメータで指定されたコンテキストのカタログ名です。

3番目の構文は、現在のコンテキスト、現在の論理スキーマでのデータ・カタログ(D)または作業カタログ(W)の名前を返します。

4番目の構文は、現在のコンテキスト、現在の論理スキーマでのデータ・カタログ(D)の名前を返します。

パラメータ

パラメータ

型

説明

pLogicalSchemaName

文字列

論理スキーマの名前

pContextCode

文字列

強制適用されたスキーマのコンテキストのコード

pLocation

文字列

有効な値は次のとおりです。

- W: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマの作業カタログを返します。

- D: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマのデータ・カタログを返します。

例

定義されている物理スキーマ: Pluton.db_odi.dbo

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_owner

この物理スキーマに関連づけられているもの: コンテキストCTX_DEVのMSSQL_ODI

コール対象

戻り値

<%=odiRef.getCatalogName("MSSQL_ODI", "CTX_DEV", "W")%>

tempdb

<%=odiRef.getCatalogName("MSSQL_ODI", "CTX_DEV", "D")%>

db_odi

B.2.5 getCatalogNameDefaultPSchema()メソッド

トポロジからデフォルトの物理スキーマのカタログ名を返すために使用します。

使用方法

public java.lang.String getCatalogNameDefaultPSchema(
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getCatalogNameDefaultPSchema(
java.lang.String pLogicalSchemaName,
java.lang.String pContextCode,
java.lang.String pLocation)

public java.lang.String getCatalogNameDefaultPSchema(
java.lang.String pLocation)

public java.lang.String getCatalogNameDefaultPSchema()

説明

タプルに対応している物理スキーマ(論理スキーマ、コンテキスト)が関連付けられているデータ・サーバーのデフォルトの物理データ・カタログまたは作業カタログの名前を取得できます。コンテキストを指定しない場合、現在のコンテキストが使用されます。論理スキーマ名が指定されない場合、現在の論理スキーマが使用されます。pLocationが指定されない場合、データ・カタログが返されます。

パラメータ

パラメータ

型

説明

pLogicalSchemaName

文字列

論理スキーマの名前

pContextCode

文字列

強制適用されたスキーマのコンテキストのコード

pLocation

文字列

有効な値は次のとおりです。

- W: タプル(コンテキスト、論理スキーマ)に対応している物理スキーマもアタッチされているデータ・サーバーに関連付けられている、デフォルトの物理スキーマの作業カタログを返します。

- D: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマのデータ・カタログを返します。

例

定義されている物理スキーマ: Pluton.db_odi.dbo

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_odi

デフォルト・スキーマか

はい

この物理スキーマに関連付けられているもの: コンテキスト: コンテキストCTX_DEVのMSSQL_ODIおよびPluton.db_doc.doc

プロパティ

値

データ・カタログ:

db_doc

データ・スキーマ:

doc

作業カタログ:

tempdb

作業スキーマ:

temp_doc

デフォルト・スキーマか

いいえ

この物理スキーマに関連付けられているもの: コンテキストCTX_DEVのMSSQL_DOC

コール対象

戻り値

<%=odiRef.getCatalogNameDefaultPSchema("MSSQL_DOC", "CTX_DEV", "W")%>

tempdb

<%=odiRef.getCatalogNameDefaultPSchema("MSSQL_DOC", "CTX_DEV", "D")%>

db_odi

B.2.6 getCK()メソッド

条件に関する情報を返すために使用します。

使用方法

public java.lang.String getCK(java.lang.String pPropertyName)

説明

このメソッドはチェック・プロシージャの間、データストアの条件に関する情報を返します。現在のタスクにconditionというタグが付けられている場合のみ、チェック・ナレッジ・モジュールからアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって現在処理されているチェック制約に関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている現在の文字列

次の表は、pPropertyNameで許容される様々な値のリストです。

パラメータ値

説明

ID

チェック制約の内部番号。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

GUID

チェックのGUID。

COND_ALIAS

SQL文に使用する表の別名

COND_NAME

条件の名前

COND_TYPE

条件のタイプ

COND_SQL

条件のSQL文

MESS

チェック制約に関するエラー・メッセージ

FULL_NAME

ローカル・オブジェクト・マスクで生成されたチェック制約のフルネーム

COND_SQL_DDL

表の別名がない条件のSQL文

<flexfield code>

このチェック制約のフレックスフィールド値

例

The current condition is called: <%=snpRep.getCK("COND_NAME")%>

insert into MY_ERROR_TABLE
select *
from MY_CHECKED_TABLE
where (not (<%=odiRef.getCK("COND_SQL")%>))

B.2.7 getColDefaultValue()メソッド

マッピング属性のデフォルト値を返すために使用します。

使用方法

public java.lang.String getColDefaultValue()

説明

マッピングのターゲット属性のデフォルト値を返します。

このメソッドは、マッピング式で<%%>タグなしで使用できます。このメソッド・コールは、生成されたコードに、属性定義で設定したデフォルト値を挿入します。属性タイプによっては、この値を引用符で囲みます。

パラメータ

なし

例

The default value of my target attribute is '+ 'odiRef.getColDefaultValue()'

B.2.8 getColList()メソッド

属性のフィルタ済リストから各属性のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getColList(
java.lang.int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd,
java.lang.String pSelector)

代替可能な構文:

public java.lang.String getColList(
java.lang.int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

public java.lang.String getColList(
java.lang.int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pSelector)

public java.lang.String getColList(
java.lang.int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

指定されたデータセットの属性と式のリストを返します。属性リストはこのメソッドがコールされたフェーズにより異なります。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素(pSelectorパラメータに応じて選択)ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

注意:

- このメソッドでは、特別なコードを必要とせずにルックアップが自動的に生成されます。

- ソースの属性名がターゲット・テクノロジで許容されている属性名の最大長を超えた場合、自動的に切り捨てられます。

ロード(LKM)

このリストには、現在の実行ユニットで実行されたすべての有効なマッピング式と、ステージング領域で実行されたマッピング、フィルタおよび結合式で使用された現在の実行ユニットのすべての属性が表示されます。リストは、POS、FILE_POSでソートされます。

マッピングのソースにジャーナル化されたデータストアがある場合、3つのジャーナル化疑似属性JRN_FLAG、JRN_DATEおよびJRN_SUBSCRIBERは、ジャーナル化されたソース・データストアの属性として追加されます。

統合(IKM)

現在のマッピングで現在有効なすべてのマッピング式がリストに表示されます。

このリストには、現在のマッピングのターゲット表にロードされた各属性につき1つの要素が含まれます。ターゲット表が一時表でない場合、リストはPOS、FILE_POSでソートされます。一時表である場合は、リストはソートされません。

マッピングのソースにジャーナル化されたデータストアがあり、それがステージング領域にある場合、3つのジャーナル化擬似属性JRN_FLG、JRN_DATEおよびJRN_SUBSCRIBERは、ジャーナル化されたソース・データストアの属性として追加されます。

チェック(CKM)

このリストにはターゲット表のすべての属性(静的制御またはフロー制御)が表示されます。

現在のマッピングでマップされる属性を識別するには、MAPセレクタを使用する必要があります。

アクション

このリストには、DDLコマンドで処理された表のすべての属性が表示されます。

変更、追加または削除された属性の場合、NEWおよびOLDセレクタを使用して、DDLコマンドによって処理される、変更された属性の新バージョンまたは旧バージョンを取得することができます。表が一時表でない場合、リストはPOS、FILE_POSでソートされます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストを、後述の「パターン属性リスト」に示します。

属性は、パターン文字列内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

pSelector

文字列

次の形式を使用して、最初のリストの要素をフィルタできるブール式を指定する文字列。

<SELECTOR> <演算子> <SELECTOR>など。カッコを使用できます。

使用できる演算子:

1. 否定: NOTまたは!

2. 論理和: ORまたは||

3. 論理積: ANDまたは&&

例: (INS AND UPD) OR TRG

有効なセレクタについては後述します。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

属性の名前。

COL_HEADING

属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始(索引)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

ソース上で実行される式のテキスト(属性マッピングに入力された式、またはステージング領域上で実行された式を作成する属性名)。

CX_COL_NAME

ステージング領域上の現在の式のコンテナとして使用されている属性の計算された名前

ALIAS_SEP

別名に対して(テクノロジにより)使用されるセパレータ

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

MANDATORY_CLAUSE

属性が必須の場合、NOT NULLを返します。そうでない場合、そのテクノロジのNULLキーワードを返します。

DEFAULT_CLAUSE

デフォルト値が存在する場合、DEFAULT <デフォルト値>を返します。そうでない場合は、空の文字列を返します。

JDBC_TYPE

データ・サービス - ドライバによって返される属性のJDBCタイプ。

<flexfield code>

現在の属性のフレックスフィールド値

セレクタの説明

パラメータ値

説明

INS

- LKM: 適用対象外(*)

- IKM: 挿入でマークされたマッピング式のみ

- CKM: 適用対象外

UPD

- LKM: 適用対象外(*)

- IKM: 更新でマークされたマッピング式のみ

- CKM: 適用対象外

TRG

- LKM: 適用対象外(*)

- IKM: ターゲット上で実行されたマッピング式のみ

- CKM: 適用対象外

NULL

- LKM: 適用対象外(*)

- IKM: NULL値可能でない属性をロードするすべてのマッピング式

- CKM: NULL値を許容しないすべてのターゲット属性

PK

- LKM: 適用対象外(*)

- IKM: 主キー属性をロードするすべてのマッピング式

- CKM: 主キーの一部であるすべてのターゲット属性

UK

- LKM: 適用対象外(*)

- IKM: 現在のマッピングに対して選択された更新キー属性をロードするすべてのマッピング式

- CKM: 適用対象外

REW

- LKM: 適用対象外(*)

- IKM: 読取り専用フラグが選択されていない属性をロードするすべてのマッピング式

- CKM: 読取り専用フラグが選択されていないすべてのターゲット属性

UD1

- LKM: 適用対象外(*)

- IKM: UD1としてマークされた属性をロードするすべてのマッピング式

- CKM: 適用対象外

UD2

- LKM: 適用対象外(*)

- IKM: UD2としてマークされた属性をロードするすべてのマッピング式

- CKM: 適用対象外

UD3

- LKM: 適用対象外(*)

- IKM: UD3としてマークされた属性をロードするすべてのマッピング式

- CKM: 適用対象外

UD4

- LKM: 適用対象外(*)

- IKM: UD4としてマークされた属性をロードするすべてのマッピング式

- CKM: 適用対象外

UD5

- LKM: 適用対象外(*)

- IKM: UD5としてマークされた属性をロードするすべてのマッピング式

- CKM: 適用対象外

MAP

- LKM: 適用対象外

- IKM: 適用対象外

- CKM:

フロー制御: 現在のマッピングの式でロードされたターゲット表のすべての属性

静的制御: ターゲット表のすべての属性

SCD_SK

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Surrogate Key」とマーキングされたすべての属性

SCD_NK

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Natural Key」とマーキングされたすべての属性

SCD_UPD

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Overwrite on Change」とマーキングされたすべての属性

SCD_INS

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Add Row on Change」とマーキングされたすべての属性

SCD_FLAG

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Current Record Flag」とマーキングされたすべての属性

SCD_START

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Starting Timestamp」とマーキングされたすべての属性

SCD_END

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Ending Timestamp」とマーキングされたすべての属性

NEW

アクション: 表に追加された属性。表の変更された属性の新しいバージョン

OLD

アクション: 表から削除された属性。表の変更された属性の旧バージョン

WS_INS

SKM: 属性は、データ・サービスを使用したINSERTを許可するフラグを設定されています。

WS_UPD

SKM: 属性は、データ・サービスを使用したUDATEを許可するフラグを設定されています。

WS_SEL

SKM: 属性は、データ・サービスを使用したSELECTを許可するフラグを設定されています。

注意:

LKMで、前の表に*で示した一部のセレクタを使用することは、可能ですが非推奨です。マッピングでソース上でマップされる属性のみが返されます。結果として、マッピングによっては、結果が正しくないことがあります。たとえば、UKセレクタでは、マップされないかソース上で実行されないキーの属性は、このセレクタで返されません。

例

CUSTOMER表に属性(CUST_ID、CUST_NAME、AGE)が含まれ、次のコードを生成する場合:

create table CUSTOMER (CUST_ID numeric(10) null,
CUST_NAME varchar(50) null, AGE numeric(3) null)

次のように記述します。

create table CUSTOMER
<%=odiRef.getColList("(", "[COL_NAME] [SOURCE_CRE_DT] null", ", ", ")", "")%>

説明: getColList関数が使用され、(CUST_ID numeric(10) null, CUST_NAME varchar(50) null, AGE numeric(3) null)が生成されます。先頭と末尾はカッコで、各属性をカンマで区切ってパターン(属性、データ型、null)が繰り返されます。このため、

- 関数の最初の文字"("は、文字列を、文字列「(」で始めることを示します。

- 2番目のパラメータ"[COL_NAME] [SOURCE_CRE_DT] null"は、このパターンを各属性に対して繰り返すことを示します。キーワード[COL_NAME]および[SOURCE_CRE_DT]は、表「パターン属性リスト」の有効なキーワードに対する参照です。

- 3番目のパラメータ", "は、パターンの解釈された発生を、文字列「,」で区切ることを示します。

- 関数の4番目のパラメータ")"は、文字列を、文字列「)」で終わることを示します。

- 最後のパラメータ""は、パターンを各属性に対して(選択内容なしで)繰り返すことを示します。

B.2.9 getColumn()メソッド

アクションによって処理されている特定の属性に関する情報を返すために使用します。

使用方法

public java.lang.String getColumn(
java.lang.String pPattern,
java.lang.String pSelector)

public java.lang.String getColumn(
java.lang.String pPattern)

説明

アクションでは、アクションにより処理されている属性に関する情報を返します。

パラメータ

パラメータ

型

説明

pPattern

文字列

属性に対してレンダーされた値のパターン

パターンで使用できる属性のリストを、後述の「パターン属性リスト」に示します。

属性は、パターン文字列内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSelector

文字列

セレクタは次のいずれかの値をとることができます。

- NEW: 変更された属性の新しいバージョンまたは新しい属性を返します。

- OLD: 変更された属性の古いバージョンまたは削除された属性を返します。

セレクタを省略すると、すべての削除アクションに対してOLDに設定されます。それ以外の場合はNEWに設定されます。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

属性の名前。

COL_HEADING

属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始(索引)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

ソース上で実行される式のテキスト(マッピングに入力された式、またはステージング領域上で実行された式を作成する属性名)。

CX_COL_NAME

ステージング領域上の現在の式のコンテナとして使用されている属性の計算された名前

ALIAS_SEP

別名に対して(テクノロジにより)使用されるセパレータ

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

MANDATORY_CLAUSE

属性が必須の場合、NOT NULLを返します。そうでない場合、そのテクノロジのNULLキーワードを返します。

DEFAULT_CLAUSE

デフォルト値が存在する場合、DEFAULT <デフォルト値>を返します。そうでない場合は、空の文字列を返します。

<flexfield code>

現在の属性のフレックスフィールド値

B.2.10 getContext()メソッド

現在のコンテキストに関する情報を返すために使用します。

使用方法

public java.lang.String getContext(java.lang.String pPropertyName)

説明

このメソッドは現在の実行コンテキストに関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

コンテキストの内部IDこのパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

GLOBAL_ID

コンテキストのGUID。

CTX_NAME

コンテキストの名前。

CTX_CODE

コンテキストのコード

CTX_DEFAULT

デフォルト・コンテキストには1、他のコンテキストには0を返します。

<flexfield code>

この参照のフレックスフィールド値

例

Current Context = <%=getContext("CTX_NAME")%>

B.2.11 getDataSet()メソッド

マッピングの指定されたデータセットに関する情報を返すために使用します。

使用方法

public java.lang.String getDataSet(
java.lang.Int pDSIndex,
java.lang.String pPropertyName)

説明

マッピングの指定されたデータセットに関する情報を取得します。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

OPERATOR

選択されたデータセットに適用される演算子。最初のデータセットには、空の値が返されます。

NAME

データセット名。

HAS_JRN

データセットがジャーナル化されたデータストアの場合は「1」を、そうでない場合は「0」を返します。

例

<%for (int i=0; i < odiRef.getDataSetCount(); i++){%><%=odiRef.getDataSet(i, "Operator")%>select     <%=odiRef.getPop("DISTINCT_ROWS")%>    <%=odiRef.getColList(i,"", "[EXPRESSION] [COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%> from    <%=odiRef.getFrom(i)%>where    <% if (odiRef.getDataSet(i, "HAS_JRN").equals("1")) { %>    JRN_FLAG <> 'D    '<%} else {%>    (1=1)    <% } %><%=odiRef.getJoin(i)%><%=odiRef.getFilter(i)%><%=odiRef.getJrnFilter(i)%><%=odiRef.getGrpBy(i)%><%=odiRef.getHaving(i)%>
<%}%>

B.2.12 getDataSetCount()メソッド

マッピングのデータセットの数を返すために使用します。

使用方法

public java.lang.Int getDataSetCount()

説明

マッピングのデータセットの数を返します。

パラメータ

なし

例

<%for (int i=0; i < odiRef.getDataSetCount(); i++){%><%=odiRef.getDataSet(i, "Operator")%>select     <%=odiRef.getPop("DISTINCT_ROWS")%>    <%=odiRef.getColList(i,"", "[EXPRESSION] [COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%> from    <%=odiRef.getFrom(i)%>where    <% if (odiRef.getDataSet(i, "HAS_JRN").equals("1")) { %>    JRN_FLAG <> 'D    '<%} else {%>    (1=1)    <% } %><%=odiRef.getJoin(i)%><%=odiRef.getFilter(i)%><%=odiRef.getJrnFilter(i)%><%=odiRef.getGrpBy(i)%><%=odiRef.getHaving(i)%>
<%}%>

B.2.13 getDataType()メソッド

指定されたデータ型の属性を作成する構文を返すために使用します。

使用方法

public java.lang.String getDataType(
java.lang.String pDataTypeName,
java.lang.String pDataTypeLength,
java.lang.String pDataTypePrecision)

説明

ソース・テクノロジおよびターゲット・テクノロジに関連づけられたパラメータに応じて、データ型として数値または日付を使用する作成構文を返します。

パラメータ

パラメータ

型

説明

パラメータ

型

説明

pDataTypeName

文字列

次の表にリストされているデータ型の名前

pDataTypeLength

文字列

データ型の長さ

pDataTypePrecision

文字列

データ型の精度

次の表は、pDataTypeNameで可能なすべての値のリストです。

パラメータ値

説明

SRC_VARCHAR

ソースのvarcharデータ型に対応する構文を返します。

SRC_NUMERIC

ソースの数値データ型に対応する構文を返します。

SRC_DATE

ソースの日付データ型に対応する構文を返します。

DEST_VARCHAR

ターゲットのvarcharデータ型に対応する構文を返します。

DEST_NUMERIC

ターゲットの数値データ型に対応する構文を返します。

DEST_DATE

ターゲットの日付データ型に対応する構文を返します。

例

次のテクノロジの構文が次のようであるとします。

テクノロジ

Varchar

数値

日付

Oracle

varchar2(%L)

number(%L,%P)

date

Microsoft SQL Server

varchar(%L)

numeric(%L,%P)

datetime

Microsoft Access

Text(%L)

double

datetime

getDataTypeのコール例を次に示します。

コール

Oracle

SQL Server

Access

<%=odiRef.getDataType("DEST_VARCHAR", "10", "")%>

varchar2(10)

varchar(10)

Text(10)

<%=odiRef.getDataType("DEST_VARCHAR", "10", "5")%>

varchar2(10)

varchar(10)

Text(10)

<%=odiRef.getDataType("DEST_NUMERIC", "10", "")%>

number(10)

numeric(10)

double

<%=odiRef.getDataType("DEST_NUMERIC", "10", "2")%>

number(10,2)

numeric(10,2)

double

<%=odiRef.getDataType("DEST_NUMERIC", "", "")%>

number

numeric

double

<%=odiRef.getDataType("DEST_DATE", "", "")%>

date

datetime

datetime

<%=odiRef.getDataType("DEST_DATE", "10", "2")%>

date

datetime

datetime

B.2.14 getFilter()メソッド

マッピングのフィルタ用に生成されたWHERE句セクション全体を返すために使用します。

使用方法

public java.lang.String getFilter(java.lang.Int pDSIndex)

説明

指定されたデータセットのSQLフィルタ列を返します(ロード時はソースで、統合時はステージング領域で)。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

なし

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

B.2.15 getFilterList()メソッド

マッピングの各フィルタのプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getFilterList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getFilterList(
java.lang.Int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

マッピングの指定されたデータセットに対するSQLフィルタの発生のリストを返します。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、ソースまたはターゲット上(使用中のナレッジ・モジュールにより異なります)で実行される各フィルタ式の要素が含まれます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

リスト内で使用できるもののリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切るために使用されます。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

ID

フィルタ内部識別子

EXPRESSION

フィルタ式のテキスト

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilterList("and ","([EXPRESSION])"," and ","")%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

説明: getFilterList関数は、SELECT句のフィルタを生成するために使用されます。フィルタはandで始まり、各フィルタごとにandで区切ってパターン(各フィルタの式)を繰り返します。このため、

- 関数の最初のパラメータ"and"は、文字列を、文字列and で始めることを示します。

- 2番目のパーメータ"([EXPRESSION])"は、このパターンを各フィルタに対して繰り返すことを示します。キーワード[EXPRESSION]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ" and "は、パターンの解釈された発生を、文字列andで区切ることを示します。

- 関数の4番目のパラメータ""は、文字列が特定の文字を伴わずに終わることを示します。

B.2.16 getFK()メソッド

外部キーに関する情報を返すために使用します。

使用方法

public java.lang.String getFK(java.lang.String pPropertyName)

説明

このメソッドはチェック・プロシージャの間、データストアの外部キー(または結合、参照)に関する情報を返します。現在のタスクにreferenceというタグが付けられている場合のみ、ナレッジ・モジュールからアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって現在処理されている外部キーに関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

参照制約の内部番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

GUID

代替キーのGUID。

FK_NAME

参照制約の名前

FK_TYPE

参照制約のタイプ

FK_ALIAS

参照表の別名(複合式の場合のみ使用)

PK_ALIAS

参照された表の別名(複合式の場合のみ使用)

ID_TABLE_PK

参照された表の内部番号

PK_I_MOD

参照されたモデルの番号

PK_CATALOG

現在のコンテキストで参照された表のカタログ

PK_SCHEMA

現在のコンテキストで参照された表の物理スキーマ

PK_TABLE_NAME

参照された表の名前

COMPLEX_SQL

結合句の複合SQL文(該当する場合)

MESS

参照制約のエラー・メッセージ

FULL_NAME

ローカル・オブジェクト・マスクで生成された外部キーのフルネーム

<flexfield code>

この参照のフレックスフィールド値

例

The current reference key of my table is called: <%=odiRef.getFK("FK_NAME")%>. It references the table <%=odiRef.getFK("PK_TABLE_NAME")%> that is in the schema <%=odiRef.getFK("PK_SCHEMA")%>

B.2.17 getFKColList()メソッド

外部キーの属性に関する情報を返すために使用します。

使用方法

public java.lang.String getFKColList(java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getFKColList(
java.lang.String pPattern,
java.lang.String pSeparator)

説明

参照制約(外部キー)の属性部分のリストを返します。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、現在の外部キーの各属性につき1つの要素が含まれます。現在のタスクにreferenceというタグが付けられている場合のみ、チェック・ナレッジ・モジュールからアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって処理された外部キーの属性のリストを、キー内の位置の順に並べて返します。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

パラメータ

型

説明

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

キーの属性の名前

COL_HEADING

キーの属性のヘッダー

COL_DESC

キーの属性の説明

POS

キーの属性の位置

LONGC

キーの属性の長さ(精度)

SCALE

キーの属性のスケール

FILE_POS

属性の開始(索引)

BYTES

属性の物理オクテット数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: 許可されない

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性のレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

未使用

CX_COL_NAME

未使用

ALIAS_SEP

別名に対して(テクノロジにより)使用されるセパレータ

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

PK_I_COL

参照属性の内部識別子

PK_COL_NAME

参照キー属性の名前

PK_COL_HEADING

参照キー属性のヘッダー

PK_COL_DESC

参照キー属性の説明

PK_POS

参照属性の位置

PK_LONGC

参照属性の長さ

PK_SCALE

参照属性の精度

PK_FILE_POS

参照属性の開始(索引)

PK_BYTES

参照属性の物理オクテット数

PK_FILE_END_POS

参照属性の終わり(FILE_POS + BYTES)

PK_IND_WRITE

参照属性の書込み権限フラグ

PK_COL_MANDATORY

参照属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

PK_CHECK_FLOW

参照属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

PK_CHECK_STAT

参照属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

PK_COL_FORMAT

参照属性の論理形式

PK_COL_DEC_SEP

参照属性の小数点セパレータ

PK_REC_CODE_LIST

参照属性に維持されたレコード・コードのリスト

PK_COL_NULL_IF_ERR

参照属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

PK_DEF_VALUE

参照属性のデフォルト値

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

<flexfield code>

参照している表の現在の属性のフレックスフィールド値

例

CUSTOMER.COUNTRY_ID = CITY.ID_COUNT and CUSTOMER.CITY_ID = CITY.ID_CITでCUSTOMER表がCITY表を参照している場合

句:

(CUS.COUNTRY_ID = CITY.ID_COUNT and CUS.CITY_ID = CITY.ID_CIT)

は、次のようにも記述できます。

<%=odiRef.getFKColList("(", "CUS.[COL_NAME] = CITY.[PK_COL_NAME]", " and
", ")" )%>

説明: getFKColList関数は、外部キーの各属性上でループして、カッコで始まってカッコで終わり、andで区切られたパターンを外部キーの各属性に対して繰り返す句を生成するために使用されます。このため、

- 関数の最初のパラメータ"("は、文字列を「(」で始めることを示します。

- 2番目のパラメータ"CUS.[COL_NAME] = CITY.[PK_COL_NAME]"は、このパターンを外部キーの各属性に対して繰り返すことを示します。キーワード[COL_NAME]および[PK_COL_NAME]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ" and "は、パターンの発生を、文字列「 and 」で区切ることを示します。

- 関数の4番目のパラメータ")"は、文字列が「)」で終わることを示します。

B.2.18 getFlexFieldValue()メソッド

フレックスフィールドの値を返すために使用します。

使用方法

public java.lang.String getFlexFieldValue(java.lang.String pI_Instance,
java.lang.String pI_Object, java.lang.String pFlexFieldCode)

説明

このメソッドは、オブジェクト・インスタンスのフレックスフィールドの値を返します。

パラメータ

パラメータ

型

説明

pI_Instance

文字列

オブジェクト・インスタンス・ウィンドウの「バージョン」タブに表示される、オブジェクト・インスタンスの内部ID

pI_Object

文字列

そのオブジェクト・タイプの「オブジェクト」ウィンドウの「バージョン」タブに表示される、オブジェクト・タイプの内部ID

pPropertyName

文字列

値が返されるフレックスフィールド・コード

例

<%=odiRef.getFlexFieldValue("32001","2400","MY_DATASTORE_FIELD")%>

タイプがdatastore (datastoreの内部IDは2400)で、内部IDが32001のオブジェクト・インスタンスの、フレックスフィールドMY_DATASTORE_FIELDの値を返します。

B.2.19 getFormattedName()メソッド

テキストおよびODI接頭辞を付けて名前を構成する場合に使用します。

使用方法

public java.lang.String getFormattedName(java.lang.String pName)

public java.lang.String getFormattedName(java.lang.String pName,java.lang.String pTechnology)

説明

テキストおよびODI接頭辞に基づく名前を構成する場合に使用し、オプションのテクノロジに有効です。テキストには、getObjectName()メソッドに使用可能な接頭辞(%INT_PRF、%COL_PRF、%ERR_PRF、%IDX_PRFなど)、および%UNIQUE_STEP_TAGまたは%UNIQUE_SESSION_TAGを含めることができます。後のほうのタグは、一意の名前が有効になると展開されます。同じパラメータが渡される前提であれば、同じ実行コンテキスト内でこのAPIをコールすると、常に同じ一意の名前が返されます。

パラメータ

パラメータ

型

説明

pName

文字列

初期キーとして使用される名前であり、他のODI接頭辞を含めることができます。

pTechnology

文字列

戻された名前が検証されるオプションのテクノロジ。たとえば、名前の長さなどです。

例

<%=odiRef.getFormattedName("%COL_PRFMY_TABLE%UNIQUE_STEP_TAG_AE", "ORACLE")%>
might result in
C$_MY_TAB7wDiBe80vBog1auacS1xB _AE

<?=getFormattedName( "<%=getTableName("COLL_SHORT_NAME")%>.ctl", "FILE" )%>"
might result in:-
C$_0DEFAULT.ctl
or, if unique names are enabled
C_0DEFAULTAhbxZoeJ2zznXYpnDzhkm.ctl

C$_0

B.2.20 getFrom()メソッド

指定されたコンテキスト内のSQL FROM句を返すために使用します。

使用方法

public java.lang.String getFrom(java.lang.Int pDSIndex)

説明

FROMのSQL文字列を指定されたデータセットのソースのSELECT句から取得します。FROM文は、データセットで使用される表および結合(テクノロジのSQL機能に応じて)から構築されます。

ISOの外部結合とカッコをサポートするテクノロジでは、getFrom()が次のような文字列を返すことがあります。

((CUSTOMER as CUS inner join CITY as CIT on (CUS.CITY_ID = CIT.CITY_ID))
left outer join SALES_PERSON as SP on (CUS.SALES_ID = SP.SALE_ID))

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

マッピングのソースにジャーナル化されたデータストアがある場合、句内のソース表はジャーナル化されたソース・データストアにリンクされたデータ・ビューによって置き換えられます。

ソース・データストアのいずれかが「一時マッピングを導出表として使用(下位選択)」ボックスを選択した一時データストアである場合は、getFromメソッドにより、この一時ソースに対して下位選択文が生成されます。

ソース・データストアでパーティショニングが使用される場合は、このメソッドによりオブジェクト名が返されるときにパーティショニング句が自動的に追加されます。

このメソッドでは、特別なコードを必要とせずに検索が自動的に生成されることに注意してください。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

B.2.21 getGrpBy()メソッド

指定されたコンテキスト内のSQL GROUP BY句全体を返すために使用します。

使用方法

public java.lang.String getGrpBy(java.lang.Int pDSIndex)

説明

SQL GROUP BY文字列を取得します(ロード・フェーズではソース上、統合フェーズではステージング領域上)。この文は、マッピング式に検出された集計変換から自動的に計算されます。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

B.2.22 getGrpByList()メソッド

マッピングの指定されたデータセットに対する各GROUP BY句のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getGrpByList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getGrpByList(
java.lang.Int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

マッピングの指定されたデータセットに対するSQL GROUP BYの発生のリストを返します。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、ソースまたはターゲット上(使用するナレッジ・モジュールにより異なります)のGROUP BY文の要素が含まれます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切るために使用されます。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

ID

句の内部識別子

EXPRESSION

グループ化文のテキスト

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpByList("group by ", "[EXPRESSION]", " , ", "")%>
<%=odiRef.getHaving()%>

説明: getGrpByList関数は、group byで始まり、各式ごとにカンマによって区切られたパターン(各グループ化式)が繰り返されるselect命令のgroup by句を生成するために使用されます。

- 関数の最初のパラメータ"group by"は、文字列を「group by」から始めることを示します。

- 2番目のパラメータ"[EXPRESSION]"は、式によって各グループについてこのパターンを繰り返すことを示します。キーワード[EXPRESSION]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ", "は、パターンの解釈された発生を、カンマで区切ることを示します。

- 関数の4番目のパラメータ""は、文字列が特定の文字を伴わずに終わることを示します。

B.2.23 getHaving()メソッド

指定されたコンテキスト内のSQL HAVING句全体を返すために使用します。

使用方法

public java.lang.String getHaving(java.lang.Int pDSIndex)

説明

指定されたデータセットに対してSQL文HAVINGを取得します(ロード時はソースで、統合時はステージング領域で)。この文は、検出された集計関数が含まれているフィルタ式から自動的に計算されます。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

例

insert into <%=odiRef.getTable(
"L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

B.2.24 getHavingList()メソッド

マッピングの各HAVING句のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getHavingList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getHavingList(
java.lang.Int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

マッピングで指定されたデータセットのSQL HAVINGの発生のリストを返します。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、ソースまたはターゲット上(使用するナレッジ・モジュールより異なります)で実行される各HAVING式の要素が1つ含まれます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

パラメータ値

説明

ID

句の内部識別子

EXPRESSION

Having式のテキスト

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpByList("group by ", "[EXPRESSION]", " , ", "")%>
<%=odiRef.getHavingList("having ", "([EXPRESSION])", " and ", "")%>

説明: getHavingList関数は、select命令のHaving句を生成するために使用されます。この句はhavingで始まり、各式ごとにandで区切ってパターン(各集計フィルタ式)を繰り返します。

- 関数の最初のパラメータ"having "は、文字列を「having」で始めることを示します。

- 2番目のパラメータ"([EXPRESSION])"は、このパターンを各集計フィルタに対して繰り返すことを示します。キーワード[EXPRESSION]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ" and "は、パターンの解釈された発生を、文字列「 and 」で区切ることを示します。

- 関数の4番目のパラメータ""は、文字列が特定の文字を伴わずに終わることを示します。

B.2.25 getIndex()メソッド

アクションによって処理される特定の索引に関する情報を返すために使用します。

使用方法

public java.lang.String getIndex(java.lang.String pPropertyName)

説明

アクションでは、このメソッドは、DDLコマンドによって現在処理されている索引に関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

索引の内部番号

KEY_NAME

索引の名前

FULL_NAME

ローカル・オブジェクト・マスクで生成された索引のフルネーム

<flexfield code>

この索引のフレックスフィールドの値

B.2.26 getIndexColList()メソッド

アクションによって処理される索引の属性に関する情報を返すために使用します。

使用方法

public java.lang.String getIndexColList(java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

説明

アクションでは、このメソッドはDDLコマンドによって処理される索引の属性のリストを、索引内の位置の順に並べて返します。

リストの各要素について、pPatternパラメータが解釈され、繰り返されます。前の要素からはpSeparatorパラメータによって区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、現在の索引の各属性の要素が含まれます。

パラメータ

パラメータ

型

説明

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン・シーケンス内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

索引属性の名前

COL_HEADING

索引属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始位置(固定ファイル)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

未使用

CX_COL_NAME

未使用

ALIAS_SEP

別名に対して(テクノロジにより)使用されるグループ化記号

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

<flexfield code>

現在の属性のフレックスフィールド値

B.2.27 getInfo()メソッド

現在のタスクに関する情報を返すために使用します。

使用方法

public java.lang.String getInfo(java.lang.String pPropertyName)

説明

このメソッドは現在のタスクに関する情報を返します。使用可能な情報のリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ERR_NAME

エラー表の名前

I_SRC_SET

現在のタスクがLKMのコンテキストにある場合、現在の実行単位の数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。GUID_SRC_SETが代替です

GUID_SRC_SET

タスクがロード・ナレッジ・モジュールに所属する場合の、現在の実行ユニットのグローバルに一意のID

SRC_SET_NAME

タスクがロード・ナレッジ・モジュールに所属する場合の、現在の実行ユニットの名前

COLL_NAME

ロード中にデータのステージングに使用されるコレクション表の名前

INT_NAME

統合表の名前

TARG_NAME

ターゲット表の名前

SRC_CATALOG

論理スキーマおよびコンテキストから導出されたソース・カタログの名前

SRC_SCHEMA

論理スキーマおよびコンテキストから導出された物理ソース・スキーマの名前

SRC_WORK_CATALOG

論理スキーマおよびコンテキストから導出された物理ソース作業カタログの名前

SRC_WORK_SCHEMA

論理スキーマおよびコンテキストから導出された物理ソース作業スキーマの名前

DEST_CATALOG

論理スキーマおよびコンテキストから導出された物理ターゲット・カタログの名前

DEST_SCHEMA

論理スキーマおよびコンテキストから導出された物理ターゲット・スキーマの名前

DEST_WORK_CATALOG

論理スキーマおよびコンテキストから導出された物理ターゲット作業カタログの名前

DEST_WORK_SCHEMA

論理スキーマおよびコンテキストから導出された物理ターゲット作業スキーマの名前

SRC_TECHNO_NAME

ソース・テクノロジの名前

SRC_CON_NAME

ソース接続の名前

SRC_DSERV_NAME

ソース・マシンのデータ・サーバーの名前

SRC_CONNECT_TYPE

ソース・マシンの接続タイプ

SRC_IND_JNDI

JNDI URLフラグ

SRC_JAVA_DRIVER

ソース接続のJDBCドライバの名前

SRC_JAVA_URL

ソース接続のJDBC URL

SRC_JNDI_AUTHENT

JNDI認証タイプ

SRC_JNDI_PROTO

JNDIソース・プロトコル

SRC_JNDI_FACTORY

JNDIソース・ファクトリ

SRC_JNDI_URL

ソースJNDI URL

SRC_JNDI_RESSOURCE

アクセスされたソースJNDIリソース

SRC_JNDI_USER

ソースに対するJNDI認証のユーザー名

SRC_JNDI_ENCODED_PASS

ソースに対するJNDI認証の暗号化されたパスワード

SRC_USER_NAME

ソース接続のユーザー名

SRC_ENCODED_PASS

ソース接続の暗号化されたパスワード

SRC_FETCH_ARRAY

ソース配列フェッチのサイズ

SRC_BATCH_UPDATE

ソース・バッチ更新のサイズ

SRC_EXE_CHANNEL

ソース接続の実行チャネル

SRC_COL_ALIAS_WORD

ソース・テクノロジで属性を別名と区別するために使用される語

SRC_TAB_ALIAS_WORD

ソース・テクノロジで表を別名と区別するために使用される語

SRC_DATE_FCT

ソース・テクノロジで現在の日付を返す関数

SRC_DDL_NULL

ソースでの表の作成時にキーワードNULLに対して使用する定義を返します。

SRC_MAX_COL_NAME_LEN

ソース・テクノロジでの属性名の最大文字数

SRC_MAX_TAB_NAME_LEN

ソース・テクノロジでの表名の最大文字数

SRC_REM_OBJ_PATTERN

ソース・テクノロジでのリモート・オブジェクトの置換モデル

SRC_LOC_OBJ_PATTERN

ソース・テクノロジでのローカル・オブジェクト名の置換モデル

DEST_TECHNO_NAME

ターゲット・テクノロジの名前

DEST_CON_NAME

ターゲット接続の名前

DEST_DSERV_NAME

ターゲット・マシンのデータ・サーバーの名前

DEST_CONNECT_TYPE

ターゲット・マシンの接続タイプ

DEST_IND_JNDI

ターゲットJNDI URLフラグ

DEST_JAVA_DRIVER

ターゲット接続のJDBCドライバの名前

DEST_JAVA_URL

ターゲット接続のJDBC URL

DEST_JNDI_AUTHENT

ターゲットのJNDI認証タイプ

DEST_JNDI_PROTO

JNDIターゲット・プロトコル

DEST_JNDI_FACTORY

JNDIターゲット・ファクトリ

DEST_JNDI_URL

ターゲットのJNDI URL

DEST_JNDI_RESSOURCE

アクセスされるターゲットJNDIリソース

DEST_JNDI_USER

ターゲットに対するJNDI認証のユーザー名

DEST_JNDI_ENCODED_PASS

ターゲットに対するJNDI認証の暗号化されたパスワード

DEST_USER_NAME

ターゲット接続用のユーザーの名前

DEST_ENCODED_PASS

ターゲット接続用の暗号化されたパスワード

DEST_FETCH_ARRAY

ターゲット配列フェッチのサイズ

DEST_BATCH_UPDATE

ターゲット配列フェッチのサイズ

DEST_EXE_CHANNEL

ターゲット接続の実行チャネル

DEST_COL_ALIAS_WORD

ターゲット・テクノロジで属性を別名と区別するために使用される語

DEST_TAB_ALIAS_WORD

ターゲット・テクノロジで表を別名と区別するために使用される語

DEST_DATE_FCT

ターゲット・テクノロジで現在の日付を返す関数

DEST_DDL_NULL

ターゲットでの表の作成時にキーワードNULLに対して使用する定義を返す関数

DEST_MAX_COL_NAME_LEN

ターゲット・テクノロジでの属性の最大文字数

DEST_MAX_TAB_NAME_LEN

ターゲット・テクノロジでの表名の最大文字数

DEST_REM_OBJ_PATTERN

ターゲット・テクノロジでのリモート・オブジェクトの置換モデル

DEST_LOC_OBJ_PATTERN

ターゲット・テクノロジでのローカル・オブジェクト名の置換モデル

CT_ERR_TYPE

エラー・タイプ(F: フロー、S: 静的)。チェック・ナレッジ・モジュールの場合にのみ適用されます。

CT_ERR_ID

内部のエラー表ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときに有効です。バージョン12cではCT_ERR_GUIDを使用する必要があります。

CT_ERR_GUID

エラー表のグローバルに一意なID

CT_ORIGIN

静的コントロールの名前またはプロジェクト・コードを接頭辞として前につけたマッピングの名前

JRN_NAME

ジャーナル化されたデータストア名

JRN_VIEW

ジャーナル化されたデータストアに関連付けられたビューの名前

JRN_DATA_VIEW

ジャーナル化されたデータストアに関連付けられたデータ・ビューの名前

JRN_TRIGGER

ジャーナル化されたデータストアに関連付けられたトリガーの名前

JRN_ITRIGGER

ジャーナル化されたデータストアに関連付けられた挿入トリガーの名前

JRN_UTRIGGER

ジャーナル化されたデータストアに関連付けられた更新トリガーの名前

JRN_DTRIGGER

ジャーナル化されたデータストアに関連付けられた削除トリガーの名前

SUBSCRIBER_TABLE

サブスクライバ表の名前

CDC_SET_TABLE

CDCセット表の名前

CDC_TABLE_TABLE

セットに関連付けられている表のリストを含むデータストアの名前

CDC_SUBS_TABLE

セットにサブスクライブされたサブスクライバのリストを含むデータストアの名前

CDC_OBJECTS_TABLE

セットに追加されたオブジェクトのリストを含むデータストアの名前

SRC_DEF_CATALOG

ソース物理スキーマの、現在のコンテキストに基づいたカタログの名前

SRC_DEF_SCHEMA

ソース・データ・サーバー用のデフォルト・スキーマ

SRC_DEFW_CATALOG

ソース・データ・サーバー用のデフォルト作業カタログ

SRC_DEFW_SCHEMA

ソース・データ・サーバー用のデフォルト作業スキーマ

DEST_DEF_CATALOG

ターゲット・データ・サーバー用のデフォルト・カタログ

DEST_DEF_SCHEMA

ターゲット・データ・サーバー用のデフォルト・スキーマ

DEST_DEFW_CATALOG

ターゲット・データ・サーバー用のデフォルト作業カタログ

DEST_DEFW_SCHEMA

ターゲット・データ・サーバー用のデフォルト作業スキーマ

SRC_LSCHEMA_NAME

ソース論理スキーマ名

DEST_LSCHEMA_NAME

ターゲット論理スキーマ名

SRC_I_CONNECT

ソース接続の、現在のコンテキストに基づいた数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。SRC_CONNECT_GUIDが12cでの代替です

SRC_CONNECT_GUID

ソース接続のグローバルに一意なID

SRC_I_PSCHEMA

ソース物理スキーマの、現在のコンテキストに基づいた数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。SRC_PSCHEMA_GUIDが12cでの代替です

SRC_PSCHEMA_GUID

ソース物理スキーマの、現在のコンテキストに基づいたグローバルに一意なID

SRC_I_LSCHEMA

ソース論理スキーマの数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。SRC_LSCHEMA_GUIDが12cでの代替です

SRC_LSCHEMA_GUID

ソース論理スキーマのグローバルに一意のID

SRC_I_TECHNO

ソース・テクノロジの数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。SRC_TECHNO_GUIDが12cでの代替です

SRC_TECHNO_GUID

ソース・テクノロジのグローバルに一意なID

DEST_I_CONNECT

ターゲット接続の、現在のコンテキストに基づいた数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。DEST_CONNECT_GUIDが12cでの代替です

DEST_CONNECT_GUID

ターゲット接続のグローバルに一意なID

DEST_I_PSCHEMA

ターゲット物理スキーマの、現在のコンテキストに基づいた数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。DEST_PSCHEMA_GUIDが12cでの代替です

DEST_PSCHEMA_GUID

ターゲット物理スキーマの、現在のコンテキストに基づいたグローバルに一意なID

DEST_I_LSCHEMA

ターゲット論理スキーマの数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。DEST_LSCHEMA_GUIDが12cでの代替です

DEST_LSCHEMA_GUID

ターゲット論理スキーマのグローバルに一意のID

DEST_I_TECHNO

ターゲット・テクノロジの数値ID。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効ですが、リポジトリが12cモードのときにはエラー・メッセージが返されます。DEST_TECHNO_GUIDが12cでの代替です

DEST_TECHNO_GUID

ターゲット・テクノロジのグローバルに一意なID

UNIQUE_STEP_TAG

現在のステップのスコープ内で名前を一意にするために使用されるタグ

UNIQUE_SESSION_TAG

現在のセッションのスコープ内で名前を一意にするために使用されるタグ

IS_CONCURRENT

現在のタスクで一時オブジェクトに一意の名前が使用されている場合、1を返します

SRC_SET_GUID

タスクがロード・ナレッジ・モジュールに属している場合の、現在の実行ユニットのGUID

ODI_MAJOR_VERSION

現在のODIインストールのメジャー・インストール・バージョン。たとえば、現在のリリースが12.1.3.0.0の場合、12を返します

例

The current source condition is: <%=odiRef.getInfo("SRC_CON_NAME")%>  on server: <%=odiRef.getInfo("SRC_DSERV_NAME")%>

B.2.28 getJDBCConnection()メソッド

ソースまたはターゲットのJDBC接続を返すために使用します。

使用方法

java.sql.Connection getJDBCConnection(
java.lang.String pPropertyName)

説明

このメソッドは、現在のタスクのソースまたはターゲットのJDBC接続を返します。

注意:

- このメソッドは文字列ではなく、JDBC接続オブジェクトを返します。このオブジェクトはタスク内のJavaコードに使用されることがあります。

- このメソッドを使用して取得したJDBC接続は、接続の確立後にクローズすることをお薦めします。KMをODIマッピングで使用している場合、同時性が向上します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

返される接続の名前

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

SRC

現在のタスクのソース接続

DEST

現在タスクのターゲット接続

WORKREP

作業リポジトリ接続

例

この接続のソース接続を取得して、文を作成します。

java.sql.Connection sourceConnection = odiRef.getJDBCConnection("SRC");
java.sql.Statement s = sourceConnection.createStatement();

B.2.28.1 getJDBCConnection("WORKREP")

getJDBCConnection("WORKREP")は制限付きAPIです。

マスター・リポジトリ接続にはセキュリティ・データが保持されます。マスター・リポジトリへの直接のJDBCアクセスを取得するユーザーを制御するために、次の条件の下でこのAPIが有効な接続を返します。

- マスター・リポジトリおよび作業リポジトリは異なるスキーマにあります。

- マスター・リポジトリおよび作業リポジトリは同じスキーマ内にあり、あなたは「マスター・リポジトリ」オブジェクトに対して新しく導入された権限である「JDBC接続の作成」と呼ばれる特定の権限を持っています。

これらの条件が満たされていない場合、odiRef.getJDBCConnection("WORKREP")が次のエラーをスローします。

ODI-14179: セキュリティ上の理由で、ご使用中の作業リポジトリおよびマスター・リポジトリが同じデータベース・スキーマを使用しているためodiRef.getJDBCConnection ("WORKREP")を使用できません。

シナリオ実行中に作業リポジトリ接続への直接のJDBCアクセスが必要な場合、Oracle Data Integrator管理者に依頼してOracle Data Integrator StudioのSecurity Explorerから「マスター・リポジトリ」オブジェクトに対する<JDBC接続の作成>権限を付与してから再試行してください。<JDBC接続の作成>権限は、「Security Explorer」の「オブジェクト」セクションの「マスター・リポジトリ」オブジェクトの下にあることに注意してください。

B.2.29 getJDBCConnectionFromLSchema()メソッド

指定された論理スキーマのJDBC接続を返すために使用します。

使用方法

public java.lang.String getJDBCConnectionFromLSchema(
java.lang.String pLogicalSchemaName,
java.lang.String pContextName)

public java.lang.String getJDBCConnectionFromLSchema(
java.lang.String pLogicalSchemaName)

説明

指定された論理スキーマのJDBC接続を返します。pLogicalSchemaNameにより論理スキーマが特定されます。

最初の構文では、pContextNameパラメータで提供されるコンテキストの論理スキーマが解決されます。

2番目の構文では、現在のコンテキストの論理スキーマが解決されます。

パラメータ

パラメータ

型

説明

pLogicalSchemaName

文字列

オブジェクトの強制論理スキーマの名前

pContextName

文字列

オブジェクトの強制コンテキスト

注意:

- このメソッドは文字列ではなく、JDBC接続オブジェクトを返します。このオブジェクトはタスク内のJavaコードに使用されることがあります。

- このメソッドを使用して取得したJDBC接続は、接続の確立後にクローズすることをお薦めします。KMをODIマッピングで使用している場合、同時性が向上します。

B.2.30 getJoin()メソッド

マッピングの結合のために生成されたWHERE句セクション全体を返すために使用します。

使用方法

public java.lang.String getJoin(java.lang.Int pDSIndex)

説明

マッピングの指定されたデータセットに対してSQL結合文字列を取得します(ロード時はソースで、統合時はステージング領域で)。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoin()%>
<%=odiRef.getFilter()%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

B.2.31 getJoinList()メソッド

マッピングの各結合のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getJoinList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getJoinList(
java.lang.Int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

WHERE句に対してマッピングの指定されたデータセット内のSQL結合の発生のリストを返します。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

ID

結合の内部識別子

EXPRESSION

結合式のテキスト

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getFrom()%>
where (1=1)
<%=odiRef.getJoinList("and ","([EXPRESSION])"," and ","")%>
<%=odiRef.getFilterList("and ","([EXPRESSION])"," and ","")%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

説明: getJoinList関数は、SELECT文のWHERE部分に置く結合式を生成するために使用されます。式は「and」で始まり、各結合ごとに「 and 」で区切ってパターン(各結合の式)を繰り返します。このため、

- 関数の最初のパラメータ"and"は、文字列を「and」で始めることを示します。

- 2番目のパラメータ"([EXPRESSION])"は、このパターンを各結合に対して繰り返すことを示します。キーワード[EXPRESSION]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ" and "は、パターンの解釈された発生を、「 and 」で区切ることを示します(andの前後のスペースに注意してください)。

- 関数の4番目のパラメータ""は、文字列が特定の文字を伴わずに終わることを示します。

B.2.32 getJrnFilter()メソッド

マッピングのジャーナル化フィルタを返すために使用します。

使用方法

public java.lang.String getJrnFilter(java.lang.Int pDSIndex)

説明

現在のマッピングで指定されたデータセットのSQLジャーナル化フィルタを返します。ジャーナル化された表がソースにある場合、ロード・フェーズでこのメソッドを使用できます。ジャーナル化された表がステージング領域にある場合、統合時にこのメソッドを使用できます。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

例

<%=odiRef.getJrnFilter()%>

B.2.33 getJrnInfo()メソッド

データストアのジャーナル化に関する情報を返すために使用します。

使用方法

public java.lang.String getJrnInfo(java.lang.String pPropertyName)

説明

モデルやデータストアのジャーナル化の場合はJKM、マッピングの場合はLKMまたはIKMに対するデータストアのジャーナル化に関する情報を返します。

注意:

ジャーナル化の情報を使用できるのは、ODI Studioでコードが生成される場合のみです。同じodiRef.getInfo()コールでも、エージェントで評価される場合(コールが<? ... ?>または<@ ... @>でラップされている場合)は、ランタイム・リポジトリ内でジャーナル化に関するメタデータが使用できなくなるため、空の文字列が返されます。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

FULL_TABLE_NAME

ジャーナル化されたデータストアのフルネーム

JRN_FULL_NAME

ジャーナル・データストアのフルネーム

JRN_FULL_VIEW

ジャーナル化されたデータストアにリンクされたビューのフルネーム

JRN_FULL_DATA_VIEW

ジャーナル化されたデータストアにリンクされたデータ・ビューのフルネーム

JRN_FULL_TRIGGER

ジャーナル化されたデータストアにリンクされたトリガーのフルネーム

JRN_FULL_ITRIGGER

ジャーナル化されたデータストアにリンクされた挿入トリガーのフルネーム

JRN_FULL_UTRIGGER

ジャーナル化されたデータストアにリンクされた更新トリガーのフルネーム

JRN_FULL_DTRIGGER

ジャーナル化されたデータストアにリンクされた削除トリガーのフルネーム

SNP_JRN_SUBSCRIBER

作業スキーマにおけるサブスクライバ表の名前

JRN_NAME

ジャーナル化されたデータストアの名前

JRN_VIEW

ジャーナル化されたデータストアにリンクされたビューの名前

JRN_DATA_VIEW

ジャーナル化されたデータストアにリンクされたデータ・ビューの名前

JRN_TRIGGER

ジャーナル化されたデータストアにリンクされたトリガーの名前

JRN_ITRIGGER

ジャーナル化されたデータストアにリンクされた挿入トリガーの名前

JRN_UTRIGGER

ジャーナル化されたデータストアにリンクされた更新トリガーの名前

JRN_DTRIGGER

ジャーナル化されたデータストアにリンクされた削除トリガーの名前

SUBSCRIBER

サブスクライバの名前

JRN_COD_MOD

ジャーナル化されたデータ・モデルのコード

JRN_METHOD

ジャーナル化モード(一貫または単純)

CDC_SET_TABLE

CDCセットのリストが含まれている表のフルネーム

CDC_TABLE_TABLE

CDCセットを使用してジャーナル化された表のリストが含まれている表のフルネーム

CDC_SUBS_TABLE

CDCセットのサブスクライバのリストが含まれている表のフルネーム

CDC_OBJECTS_TABLE

ジャーナル化パラメータとオブジェクトが含まれている表のフルネーム

例

The table being journalized is <%=odiRef.getJrnInfo("FULL_TABLE_NAME")%>

B.2.34 getLoadPlanInstance()メソッド

ロード計画インスタンス情報を返します。

使用方法

public java.lang.String getLoadPlanInstance (java.lang.String pPropertyName)

説明

このメソッドは、ロード計画の現在の実行インスタンス情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な値のリストです。

パラメータ値

説明

BATCH_ID

説明

BATCH_GUID

参照制約の内部番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

RESTART_ATTEMPTS

代替キーのGUID。

LOAD_PLAN_NAME

参照制約の名前

START_DATE

参照制約のタイプ

例

現在のロード計画<%=odiRef.getLoadPlanInstance("LOAD_PLAN_NAME")%>は、<%=odiRef.getLoadPlanInstance("START_DATE")%>に実行を開始しました。

B.2.35 getModel()メソッド

モデルに関する情報を返すために使用します。

使用方法

public java.lang.String getModel(java.lang.String pPropertyName)

説明

このメソッドは、パーソナライズされたリバース・エンジニアリングの処理時に、現在のデータ・モデルに関する情報を返します。使用可能なデータのリストをpPropertyName値の表に示します。

注意:

このメソッドはソース接続(リバース・エンジニアリングされるデータ・サーバー)上でも、ターゲット接続(リポジトリ)上でも使用できます。ターゲット接続では、コンテキストから独立したプロパティのみを指定できます(たとえば、スキーマ名やカタログ名は使用できません)。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な値のリストです。

パラメータ値

説明

ID

説明

GLOBAL_ID

参照制約の内部番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

MOD_NAME

代替キーのGUID。

LSCHEMA_NAME

参照制約の名前

MOD_TEXT

参照制約のタイプ

REV_TYPE

参照表の別名(複合式の場合のみ使用)

REV_UPDATE

参照された表の別名(複合式の場合のみ使用)

REV_INSERT

参照された表の内部番号

REV_OBJ_PATT

参照されたモデルの番号

REV_OBJ_TYPE

現在のコンテキストで参照された表のカタログ

TECH_INT_NAME

現在のコンテキストで参照された表の物理スキーマ

LAGENT_NAME

参照された表の名前

REV_CONTEXT

結合句の複合SQL文(該当する場合)

REV_ALIAS_LTRIM

参照制約のエラー・メッセージ

CKM

ローカル・オブジェクト・マスクで生成された外部キーのフルネーム

RKM

この参照のフレックスフィールド値

SCHEMA_NAME

現在のリバース・コンテキストでのデータ・スキーマの物理名

WSCHEMA_NAME

現在のリバース・コンテキストでの作業スキーマの物理名

CATALOG_NAME

現在のリバース・コンテキストでのデータ・カタログの物理名

WCATALOG_NAME

現在のリバース・コンテキストでの作業カタログの物理名

<flexfield code>

現在のモデルのフレックスフィールドの値

例

リバースするオブジェクトのマスクの一部である表のリストを取得します。

select TABLE_NAME,
RES_NAME,
replace(TABLE_NAME, '<%=odiRef.getModel("REV_ALIAS_LTRIM")%>' , '')
ALIAS,
TABLE_DESC
from MY_TABLES
where
TABLE_NAME like '<%=odiRef.getModel("REV_OBJ_PATT")%>'

B.2.36 getNbInsert()、getNbUpdate()、getNbDelete()、getNbErrors()およびgetNbRows()メソッド

現在のタスクに対して挿入、更新、削除された行数またはエラーになった行数を取得するために使用します。

使用方法

public java.lang.Long getNbInsert()

public java.lang.Long getNbUpdate()

public java.lang.Long getNbDelete()

public java.lang.Long getNbErrors()

public java.lang.Long getNbRows()

説明

これらのメソッドは、現在のタスクに対して次の値を取得します。

- 挿入された行数(getNbInsert)

- 更新された行数(getNbUpdate)

- 削除された行数(getNbDelete)

- エラーになった行数(getNbErrors)

- このタスク時に処理された行の総数(getNbRows)

これらの数は、setNbInsert()、setNbUpdate()、setNbDelete()、setNbErrors()およびsetNbRows()メソッドを使用して処理された行の実際の数とは別に設定できます。

例

次のJythonの例では、挿入行数を定数値50に設定し、この値をエラーの数にコピーしています。

InsertNumber=50

odiRef.setNbInsert(InsertNumber)

odiRef.setNbErrors(odiRef.getNbInsert())

B.2.37 getNewColComment()メソッド

アクションによって処理される特定の属性の新しいコメントを返すために使用します。

使用方法

public java.lang.String getNewColComment()

説明

アクションでは、このメソッドは、列のコメントの変更アクションで、DDLコマンドによって処理されている属性の新しいコメントを返します。

B.2.38 getNewTableComment()メソッド

アクションによって処理される特定の表の新しいコメントを返すために使用します。

使用方法

public java.lang.String getNewTableComment()

説明

アクションでは、このメソッドは、表のコメントの変更アクションで、DDLコマンドによって処理されている表の新しいコメントを返します。

B.2.39 getNotNullCol()メソッド

NOT NULLをチェックする属性に関する情報を返すために使用します。

使用方法

public java.lang.String getNotNullCol(java.lang.String pPropertyName)

説明

このメソッドはチェック・プロシージャの間、データストアのNOT NULL属性に関する情報を返します。現在のタスクにmandatoryというタグが付けられている場合、チェック・ナレッジ・モジュールからアクセスできます。

パラメータ

パラメータ

型

説明

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

現在の属性の内部識別子このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

GLOBAL_ID

現在の属性のGUID。

COL_NAME

Not null属性の名前

MESS

標準エラー・メッセージ

<flexfield code>

現在のnot null属性のフレックスフィールド値

例

insert into...
select *
from ...
<%=odiRef.getNotNullCol("COL_NAME")%> is null

B.2.40 getObjectName()メソッド

オブジェクトの完全修飾名を返すために使用します。

使用方法

public java.lang.String getObjectName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLocation)

public java.lang.String getObjectName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getObjectName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pContextName,
java.lang.String pLocation)

public java.lang.String getObjectName(
java.lang.String pObjectName,
java.lang.String pLocation)

public java.lang.String getObjectName(
java.lang.String pObjectName)

public java.lang.String getObjectName(java.lang.String pMode,java.lang.String pObjectName,java.lang.String pLogicalSchemaName,java.lang.String pContextName,java.lang.String pLocation,
java.lang.String pPartitionType,
java.lang.String pPartitionName)

説明

カタログとスキーマを含む、物理オブジェクトのフルネームを返します。pModeパラメータは、使用する置換マスクを示します。

注意:

getObjectNameメソッドは、オブジェクト名を、テクノロジで許容されるオブジェクトの最大長に自動で切り捨てます。ODI 11gより前のバージョンでは、オブジェクト名は切り捨てられません。オブジェクト名を切り捨てず、10gの動作を再現するには、データ・サーバーのプロパティ・タブでOBJECT_NAME_LENGTH_CHECK_OLDというプロパティを追加し、その値をtrueに設定します。

最初の構文は、現在のコンテキストでの現在の論理スキーマに応じて、オブジェクト名を作成します。

2番目の構文は、現在のコンテキストで、pLogicalSchemaNameパラメータに示された論理スキーマに応じて、オブジェクトの名前を作成します。

3番目の構文は、pLogicalSchemaNameおよびpContextNameパラメータに示された論理スキー マとコンテキストから名前を作成します。

4番目の構文は、現在のコンテキストでの現在の論理スキーマに応じて、ローカル・オブジェクト・マスクを使用してオブジェクト名を作成します(pMode = "L")。

5番目の構文は4番目と同じですが、pLocation = "D"です。

最後の構文は3番目の構文と同じですが、pPartitionTypeおよびpPartitionNameパラメータを使用して、特に指定されたパーティションでオブジェクト名を修飾します。

パラメータ

パラメータ

型

説明

pMode

文字列

"L"はローカル・オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。"R"はリモート・オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。

注意: リモート・オブジェクト・マスクを使用する場合、getObjectNameは常にリモート・サーバーのデフォルト物理スキーマを使用してオブジェクト名前を解決します。

pObjectName

文字列

有効なリソース名(表またはファイル)を表すすべての文字列。このオブジェクト名には接頭辞を付けておくことができます。この接頭辞は、実行時に、物理スキーマで定義された適切な一時オブジェクト接頭辞に置き換えられます。

pLogicalSchemaName

文字列

オブジェクトの強制論理スキーマの名前

pContextName

文字列

オブジェクトの強制コンテキスト

pLocation

文字列

有効な値は次のとおりです。

- W: 物理カタログのオブジェクトと、指定されたタプル(コンテキスト、論理スキーマ)に対応する作業物理スキーマの完全名を返します。

- D: 物理カタログのオブジェクトと、指定されたタプル(コンテキスト、論理スキーマ)に対応するデータ物理スキーマの完全名を返します。

pPartitionType

文字列

特定のパーティションまたはサブパーティションのオブジェクト名を修飾するかどうかを指定します。有効な値は次のとおりです。

- P: pPartitionNameで指定されるパーティションのオブジェクトを修飾します。

- S: pPartitionNameで指定されるサブパーティションのオブジェクトを修飾します。

pPartitionName

文字列

オブジェクト名を修飾するためのサブパーティションのパーティションの名前

接頭辞

pObjectNameパラメータで指定されたリソース名に接頭辞コードを付加することで、Oracle Data Integrator一時オブジェクト名(エラー表または統合表、ジャーナル化トリガーなど)を生成することができます。

接頭辞のリストを次に示します。

接頭辞

説明

接頭辞

説明

%INT_PRF

統合表の接頭辞(デフォルト値は「I$_」)

%COL_PRF

ロード表の接頭辞(デフォルト値は「C$_」)

%ERR_PRF

エラー表の接頭辞(デフォルト値は「E$_」)

%JRN_PRF_TAB

ジャーナル化表の接頭辞(デフォルト値は「J$_」)

%INT_PRF_VIE

ジャーナル化ビューの接頭辞(デフォルト値は「JV$_」)

%JRN_PRF_TRG

ジャーナル化トリガーの接頭辞(デフォルト値は「T$_」)

%IDX_PRF

一時索引の接頭辞(デフォルト値は「IX$_」)

%UNIQUE_STEP_TAG

一時オブジェクトに一意の名前が有効になっていることをコード生成の最終フェーズに通知するために使用される接頭辞。

%UNIQUE_SESSION_TAG

一時オブジェクトに一意の名前が有効になっていることをコード生成の最終フェーズに通知するために使用される接頭辞。

注意:

一時オブジェクトは通常、作業物理スキーマに作成されます。そのため、接頭辞を使用して一時オブジェクトを作成するか、一時オブジェクトにアクセスする場合は、pLocationを「W」に設定します。

例

定義されている物理スキーマ

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_owner

この物理スキーマを関連付けている論理スキーマ: MSSQL_ODI(コンテキストはCTX_DEV)

コール対象

戻り値

<%=odiRef.getObjectName("L", "EMP", "MSSQL_ODI", "CTX_DEV", "W")%>

tempdb.temp_owner.EMP

<%=odiRef.getObjectName("L", "EMP", "MSSQL_ODI", "CTX_DEV", "D")%>

db_odi.dbo.EMP

<%=odiRef.getObjectName("R", "%ERR_PRFEMP", "MSSQL_ODI", "CTX_DEV", "W")%>

MyServer.tempdb.temp_owner.E$_EMP

<%=odiRef.getObjectName("R", "EMP", "MSSQL_ODI", "CTX_DEV", "D")%>

MyServer.db_odi.dbo.EMP

B.2.41 getObjectNameDefaultPSchema()メソッド

データ・サーバーのデフォルト物理スキーマでのオブジェクトの完全修飾名を返すために使用します。

使用方法

public java.lang.String getObjectNameDefaultPSchema(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLocation)

public java.lang.String getObjectNameDefaultPSchema(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getObjectNameDefaultPSchema(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pContextName,
java.lang.String pLocation)

public java.lang.String getObjectNameDefaultPSchema(
java.lang.String pObjectName,
java.lang.String pLocation)

public java.lang.String getObjectNameDefaultPSchema(
java.lang.String pObjectName)

public java.lang.String getObjectNameDefaultPSchema(java.lang.String pMode,java.lang.String pObjectName,java.lang.String pLogicalSchemaName,java.lang.String pContextName,java.lang.String pLocation,
java.lang.String pPartitionType,
java.lang.String pPartitionName)

説明

このメソッドはgetObjectNameメソッドに類似しています。ただし、オブジェクト名は、物理スキーマがアタッチされるデータ・サーバーのデフォルト物理スキーマに対して導出されます。getObjectNameでは、オブジェクト名は物理スキーマ自身に対して導出されます。

詳細は、「getObjectName()メソッド」を参照してください。

B.2.42 getObjectShortName()メソッド

オブジェクトの短縮名を返すために使用します。

使用方法

public java.lang.String getObjectShortName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLocation)

public java.lang.String getObjectShortName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getObjectShortName(
java.lang.String pMode,
java.lang.String pObjectName,
java.lang.String pLogicalSchemaName,
java.lang.String pContextName,
java.lang.String pLocation)

説明

スキーマおよびカタログ接頭辞を付けずにオブジェクト名を返しますが、必要に応じてデリミタを追加します。

pModeパラメータは、使用する置換マスクを示します。

パラメータ

パラメータ

型

説明

pMode

文字列

"L"はローカル・オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。"R"はリモート・オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。

注意: リモート・オブジェクト・マスクを使用する場合、getObjectShortNameは常にリモート・サーバーのデフォルト物理スキーマを使用してオブジェクト名前を解決します。

pObjectName

文字列

有効なリソース名(表またはファイル)を表すすべての文字列。このオブジェクト名には接頭辞を付けておくことができます。この接頭辞は、実行時に、物理スキーマで定義された適切な一時オブジェクト接頭辞に置き換えられます。

pLogicalSchemaName

文字列

オブジェクトの強制論理スキーマの名前

pContextName

文字列

オブジェクトの強制コンテキスト

pLocation

文字列

有効な値は次のとおりです。

- W: 物理カタログのオブジェクトと、指定されたタプル(コンテキスト、論理スキーマ)に対応する作業物理スキーマの完全名を返します。

- D: 物理カタログのオブジェクトと、指定されたタプル(コンテキスト、論理スキーマ)に対応するデータ物理スキーマの完全名を返します。

接頭辞

テキストには、getObjectName()メソッドに使用可能な接頭辞(%INT_PRF、%COL_PRF、%ERR_PRF、%IDX_PRFなど)を含めることができます。

論理スキーマがOracle SCOTTスキーマを指している場合の例を次に示します。

<%= odiRef.getObjectShortName("L", "%COL_PRFEMP", "D") %>

戻り値

C$EMP

例

ローカル作業スキーマがOracleテクノロジである場合の例を次に示します。

<%= odiRef.getObjectShortName("L", "ABC", "W") %>

この場合、生成済コードでABCが生成されます。

<%= odiRef.getObjectShortName("L", "abc", "W") %>

この場合は、生成済コードで"abc" (二重引用符付き)が生成されます。

B.2.43 getOdiGeneratedAccessName()メソッド

オブジェクトのODIランタイム実行フェーズ・アクセス名を返すために使用します。

使用方法

public static java.lang.String getOdiGeneratedAccessName(
java.lang.String pProperty,
MapPhysicalNode pPhysNode,
java.lang.String pSchemaLoc)

説明

オブジェクトのODIランタイム実行フェーズ・アクセス名の取得を許可します。デザインタイム名は11g互換beanshell/javaパーサーによって解釈され、OdiRefコールはアップグレードされたOdiRefオブジェクトによって実行されます。デザインタイム名の例を次に示します。

<%=odiRef.getTable("L","COLL_NAME","W")%>

注意:

getOdiGeneratedAccessName()メソッドは「OdiRef」からコールされます。つまり、これは任意のコンテキストからコールできる静的メソッドであることを意味します。また、odiRefが現在のコンテキストのスコープ内である場合は、「odiRef」からコールすることもできます。

パラメータ

パラメータ

型

説明

pProperty

文字列

ODI getTable置換APIプロパティ。

pPhysNode

MapPhysicalNode (ODIクラス。フル・パスは「oracle.odi.domain.mapping.physical.MapPhysicalNode」です。)

オブジェクトに関連付けられる物理ノード。

pSchemaLoc

文字列

オブジェクトのスキーマの場所。有効な値は次のとおりです。

- D: 「D」はスキーマを意味します。このスキーマにはソースとターゲットの表が含まれます。Oracle Data Integratorはデータをソース表から取得し、データをターゲット表に挿入/更新できます。

- W: 「W」は作業スキーマを意味します。Oracle Data Integratorは作業スキーマ内の一時表を作成および操作できます。これらの一時表はスキーマ内のソースおよびターゲット表に関連付けられます。

例

<%=OdiRef.getOdiGeneratedAccessName("COLL_NAME", physicalNode, "W")%>

作業スキーマ内のロード表の名前を返します。

<%=OdiRef.getOdiGeneratedAccessName("COLL_NAME", physicalNode, "D")%>

スキーマ内のロード表の名前を返します。

B.2.44 getOdiInstance()メソッド

ODIのマスター/作業リポジトリ・カップルへの接続の現在のセッション・インスタンスを返すために使用します。

使用方法

public oracle.odi.core.OdiInstance getOdiInstance(java.lang.String pPropertyName)

説明

ODIのマスター/作業リポジトリ・カップルへの接続の現在のセッション・インスタンスを返します。

OdiInstanceはODIコア・インフラストラクチャの中心クラスで、ODIのマスター/作業リポジトリ・カップルへの読取り/書込みアクセスを必要とするODIコンシューマに必要なロー・レベルのインフラストラクチャ・サービスを提供します。このメソッドは、ODIプロシージャのJythonまたはGroovyあるいはナレッジ・モジュールで使用できます。ユーザーがインスタンスのクローズを担当します。

B.2.45 getOggModelInfo()メソッド

GoldenGateジャーナル化モデルに関連付けられたプロパティ値を取得するために使用します。

使用方法

public String getOggModelInfo(String Property) throws SnpsSimpleMessageException

説明

このメソッドは、ODI-OGG統合JKM/ツール用に追加されたGoldenGateジャーナル化モデルに関連付けられたプロパティ値を取得します。

パラメータ

パラメータ

型

説明

プロパティ

文字列

GoldenGateジャーナル化モデルのプロパティ・タイプを含む文字列。

次の表は、Propertyで可能な様々な値のリストです。

パラメータ値

説明

EXTRACT_LSCHEMA

モデルに関連付けられた抽出プロセス論理スキーマ。

INIT_EXTRACT_LSCHEMA

モデルに関連付けられた初期抽出プロセス論理スキーマ。

REPLICAT_LSCHEMA

モデルに関連付けられたReplicatプロセス論理スキーマ。

INIT_REPLICAT_LSCHEMA

モデルに関連付けられた初期Replicatプロセス論理スキーマ。

SRC_LSCHEMA

モデルのスキーマの論理スキーマ名。

SRC_DB_USER

ソース・モデルのDBのユーザー名。

SRC_DB_PASS

ソース・モデルのDBのパスワード。

例

GoldenGateジャーナル化モデルに関連付けられた抽出プロセス論理スキーマは次のとおりです

<%=odiRef.getOggModelInfo("EXTRACT_LSCHEMA")%>

JRNモデルに関連付けられた初期抽出プロセス論理スキーマは次のとおりです

<%=odiRef.getOggModelInfo("INIT_EXTRACT_LSCHEMA")%>

OGG JRNモデルに関連付けられたReplicatプロセス論理スキーマは次のとおりです

<%=odiRef.getOggModelInfo("REPLICAT_LSCHEMA")%>

JRNモデルに関連付けられた初期Replicatプロセス論理スキーマは次のとおりです

<%=odiRef.getOggModelInfo("INIT_REPLICAT_LSCHEMA")%>

JRNモデルの論理スキーマ名は次のとおりです

<%=odiRef.getOggModelInfo("SRC_LSCHEMA")%>

B.2.46 getOggProcessInfo()メソッド

プロセスに関連付けられたプロパティの値を取得するために使用します。

使用方法

public String getOggProcessInfo(String LogicalSchemaName, String Property) throws SnpsSimpleMessageException

説明

このメソッドは、ODI-OGG統合JKM/ツール用に追加されたプロセスに関連付けられたプロパティの値を取得します。

パラメータ

パラメータ

型

説明

LogicalSchema

文字列

ODI-OGG統合JKM/ツール用に追加されたプロセスに関連付けられた論理スキーマ名を含む文字列。

プロパティ

文字列

OGGプロセスから値を取得するプロパティ・タイプを含む文字列。

次の表では、パラメータの様々な値について説明します。

プロパティ

説明

NAME

プロセスの名前。

LTRAIL_FILE_PATH

証跡ファイル・パス

DISCARD_FILE_PATH

破棄ファイル・パス

DEF_FILE_PATH

定義ファイル・パス

RTRAIL_FILE_PATH

リモート証跡ファイル・パス

TRAIL_FILE_SIZE

証跡ファイル・サイズ

例

OGGプロセスの名前は次のとおりです

<%=odiRef.getProcessInfo("NAME")%>

前述のOGGプロセスの追跡ファイル・パスは次のとおりです

<%=odiRef.getProcessInfo("LTRAIL_FILE_PATH")%>

前述のOGGプロセスの破棄ファイル・パスは次のとおりです

<%=odiRef.getProcessInfo("DISCARD_FILE_PATH")%>

前述のOGGプロセスの定義ファイル・パスは次のとおりです

<%=odiRef.getProcessInfo("DEF_FILE_PATH")%>

前述のOGGプロセスのリモート追跡ファイル・パスは次のとおりです

<%=odiRef.getProcessInfo("RTRAIL_FILE_PATH")%>

前述のOGGプロセスの追跡ファイル・サイズは次のとおりです

<%=odiRef.getProcessInfo("TRAIL_FILE_SIZE")%>

B.2.47 getOption()メソッド

KMまたはプロシージャのオプションの値を返すために使用します。

使用方法

public java.lang.String getOption(java.lang.String pOptionName)
public java.lang.String getUserExit(java.lang.String pOptionName)

説明

KMまたはプロシージャのオプションの値を返します。

getUserExit構文は非推奨で、互換性上の理由で残されているだけです。

パラメータ

パラメータ

型

説明

pOptionName

文字列

リクエストされたオプションの名前が含まれている文字列

例

The value of my MY_OPTION_1 option is <%=odiRef.getOption("MY_OPTION_1")%>

B.2.48 getPackage()メソッド

現在のパッケージに関する情報を返すために使用します。

使用方法

public java.lang.String getPackage(java.lang.String pPropertyName)

説明

このメソッドは、現在のパッケージに関する情報を返します。使用可能なプロパティのリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

I_PACKAGE

パッケージの内部ID。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

PACKAGE_GUID

パッケージのGUID。

PACKAGE_NAME

パッケージの名前

<flexfield code>

このパッケージのフレックスフィールドの値

例

Package <%=odiRef.getPackage("PACKAGE_NAME")%> is running.

B.2.49 getParentLoadPlanStepInstance()メソッド

このセッションの親ロード計画ステップ・インスタンスを返します。

使用方法

public java.lang.String getParentLoadPlanStepInstance(java.lang.String pPropertyName)

説明

このメソッドは、ロード計画インスタンスの現在のステップの親のステップ実行インスタンス情報を返します。親ステップがルート・ステップの場合、空の文字列が返されます。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

BATCH_ID

ロード計画インスタンスの識別子(インスタンスID)。ロード計画が開始されるたびに、一意の識別子が付いた新しいロード計画インスタンスが作成されます。

RESTART_ATTEMPTS

このロード計画親ステップ・インスタンスの実行試行の番号。この番号は、ロード計画親ステップ・インスタンスが最初に開始されると1から始まり、ロード計画親ステップ・インスタンスが再開するたびに増分されます。

STEP_NAME

ロード計画親ステップの名前

STEP_TYPE

ロード計画親ステップのタイプ

START_DATE

現在のロード計画インスタンスの現在のステップの親ステップ・インスタンスが実行される開始日付と時刻。

例

ステップ<%=odiRef.getParentLoadPlanStepInstance("STEP_NAME")%>は、<%=odiRef.getParentLoadPlanStepInstance("RESTART_ATTEMPTS")%>回実行されました。

B.2.50 getPK()メソッド

主キーに関する情報を返すために使用します。

使用方法

public java.lang.String getPK(java.lang.String pPropertyName)

説明

このメソッドはチェック・プロシージャの間、データストアの主キーに関する情報を返します。

アクションでは、このメソッドは、DDLコマンドによって現在処理されている主キーに関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

ID

PK制約の内部番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

PACKAGE_GUID

主キーのGUID。

KEY_NAME

主キーの名前

MESS

主キー制約に関するエラー・メッセージ

FULL_NAME

ローカル・オブジェクト・マスクで生成されたPKのフルネーム

<flexfield code>

主キーのフレックスフィールド値

例

The primary key of my table is called: <%=odiRef.getPK("KEY_NAME")%>

B.2.51 getPKColList()メソッド

主キーの属性に関する情報を返すために使用します。

使用方法

public java.lang.String getPKColList( java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

説明

チェックされている主キーの属性と式のリストを返します。

リストの各要素について、pPatternパラメータが解釈され、繰り返されます。前の要素からはpSeparatorパラメータによって区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、現在の主キーの各属性の要素が含まれます。現在のタスクにprimary keyというタグが付けられている場合、チェック・ナレッジ・モジュールからアクセスできます。

アクションでは、このメソッドは、DDLコマンドによって処理された主キーの属性のリストを、キー内の位置の順に並べて返します。

パラメータ

パラメータ

型

説明

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン・シーケンス内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

キー属性の名前

COL_HEADING

キー属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始位置(固定ファイル)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値は次のとおりです。

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

未使用

CX_COL_NAME

未使用

ALIAS_SEP

別名に対して(テクノロジにより)使用されるグループ化記号

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

<flexfield code>

現在の属性のフレックスフィールド値

例

CUSTOMER表に主キーPK_CUSTOMER (CUST_ID, CUST_NAME)があり、作成するコードが次のようである場合:

create table T_PK_CUSTOMER (CUST_ID numeric(10) not null, CUST_NAME
varchar(50) not null)

次のコードを使用できます。

create table T_<%=odiRef.getPK("KEY_NAME")%>
<%=odiRef.getPKColList("(", "[COL_NAME] [DEST_CRE_DT] not null", ", ", ")")%>

説明: getPKColList関数は、(CUST_ID numeric(10) not null, CUST_NAME varchar(50) not null)の部分を生成するために使用されます。これはカッコで始まりカッコで終わり、主キーの各属性について、カンマで区切られたパターン(属性、データ型、NOT NULL)を繰り返します。このため、

- 関数の最初のパラメータ"("は、文字列を、文字列「(」で始めることを示します。

- 2番目のパラメータ"[COL_NAME] [DEST_CRE_DT] not null"は、このパターンを主キーの各属性に対して繰り返すことを示します。キーワード[COL_NAME]および[DEST_CRE_DT]は、表「パターン属性リスト」の有効なキーワードを参照します。

- 3番目のパラメータ", "は、パターンの解釈された発生を、文字列「,」で区切ることを示します。

- 4番目のパラメータ")"は、文字列が、文字列「)」で終わることを示します。

B.2.51.1 getPop()メソッド

マッピングに関する情報を返すために使用します。

使用方法

public java.lang.String getPop(java.lang.String pPropertyName)

説明

このメソッドは現在のマッピングに関する情報を返します。使用可能な情報のリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

I_POP

マッピングの内部番号

FOLDER

マッピングのフォルダ名

POP_NAME

マッピングの名前。

IND_WORK_TARG

ステージング領域の位置フラグ

LSCHEMA_NAME

マッピングのステージング領域である論理スキーマの名前

DESCRIPTION

マッピングの説明

WSTAGE

ターゲット・データストアの性質を示しているフラグ:

- E - ターゲット・データストアは既存の表です(一時表ではありません)。

- N - ターゲット・データストアはデータ・スキーマ内の一時表です。

- W - ターゲット・データストアは作業スキーマ内の一時表です。

TABLE_NAME

ターゲット表の名前。

KEY_NAME

更新キーの名前

DISTINCT_ROWS

重複抑制フラグ

OPT_CTX

マッピングの最適化コンテキストの名前

TARG_CTX

マッピングの実行コンテキストの名前

MAX_ERR

許容される最大エラー数

MAX_ERR_PRCT

割合によるエラー・インジケータ

IKM

このマッピングで使用される統合ナレッジ・モジュールの名前

LKM

ステージング領域に対して単一テクノロジIKMが選択されている場合に、ステージング領域からターゲットにデータをロードするために指定されるロード・ナレッジ・モジュールの名前

CKM

このマッピングで使用されるチェック・ナレッジ・モジュールの名前

HAS_JRN

マッピングのソースにジャーナル化された表がある場合、1を返します。それ以外の場合は0を返します。

PARTITION_NAME

ターゲット・データストアに選択されているパーティションまたはサブパーティションの名前。パーティションが選択されていない場合は、空の文字列を返します。

PARTITION_TYPE

ターゲット・データストアに選択されているパーティションまたはサブパーティションのタイプ。パーティションが選択されていない場合は、空の文字列を返します。

- P: パーティション

- S: サブパーティション

<flexfield code>

マッピングのフレックスフィールド値

IS_CONCURRENT

一時オブジェクトに一意の名前が使用されている場合は1を返し、それ以外の場合は0を返します。

例

The current mapping is: <%=odiRef.getPop("POP_NAME")%> and runs on the logical schema: <%=odiRef.getInfo("L_SCHEMA_NAME")%>

B.2.52 getPrevStepLog()メソッド

パッケージで前に実行された手順に関する情報を返すために使用します。

使用方法

public java.lang.String getPrevStepLog(java.lang.String pPropertyName)

説明

パッケージで最後に実行された手順についての情報を返します。リクエストされた情報は、pPropertyNameパラメータを使用して指定されます。前の手順がない場合(たとえば、getPrevStepLog手順がパッケージ外部から実行される場合)は、「No previous step」例外が発生します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

前の手順についてリクエストされたプロパティの名前が含まれる文字列。次に示す、有効プロパティのリストを参照してください。

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

SESS_NO

セッションの番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

SESS_GUID

セッションのGUID。

NNO

パッケージ内部の手順の番号。実行された最初の手順は0です。

STEP_NAME

ステップの名前。

STEP_TYPE

手順のタイプを示しているコード。次の値が返されます。

- F: マッピング

- VD: 変数宣言

- VS: 変数の設定/増分

- VE: 変数の評価

- V: 変数のリフレッシュ

- T: プロシージャ

- OE: OSコマンド

- SE: ODIツール

- RM: モデルのリバースエンジニアリング

- CM: モデルのチェック

- CS: サブモデルのチェック

- CD: データストアのチェック

- JM: モデルのジャーナル化

- JD: データストアのジャーナル化

CONTEXT_NAME

手順が実行されたコンテキストの名前

MAX_ERR

許容されるエラーの最大数またはその割合

MAX_ERR_PRCT

最大エラー数が割合で表されている場合は1、それ以外の場合は0 を返します。

RUN_COUNT

この手順がこれまでに実行された回数

BEGIN

手順が開始された日付と時刻

END

手順が終了した日付と時刻

DURATION

手順を実行するのにかかった時間(単位は秒)

STATUS

前の手順の終了ステータスを示している1文字のコードを返します。状態R(実行中)が返されることはありません。

- D: 終了(成功)

- E: エラー

- Q: キュー化

- W: 待機中

- M: 警告

RC

リターン・コード。0はエラーがないことを示します。

MESSAGE

前の手順により返されたエラー・メッセージがある場合、そのメッセージ。エラーがない場合は空の文字列

INSERT_COUNT

手順によって挿入された行数

DELETE_COUNT

手順によって削除された行数

UPDATE_COUNT

手順によって更新された行数

ERROR_COUNT

品質管理手順の場合の、手順によって検出されたエラーのある行の数

例

Previous step '<%=odiRef.getPrevStepLog("STEP_NAME")%>' executed
in '<%=odiRef.getPrevStepLog("DURATION")%>' seconds.

B.2.53 getQuotedString()メソッド

引用文字列を返すために使用します。

使用方法

public java.lang.String getQuotedString(java.lang.String pString)

説明

このメソッドは引用符で囲まれた文字列を返します。引用符や、文字列に表示される可能性がある\n、\tなどのエスケープ文字は維持されます。

このメソッドは、Java、Groovy、またはJythonコードで、値として渡された文字列を保護するのに有効です。

パラメータ

パラメータ

型

説明

パラメータ

型

説明

pString

文字列

引用符で保護する文字列

例

次のJavaコードでは、有効な文字列値を生成するためにgetQuotedStringメソッドが使用されています。

String condSqlOK = <%=odiRef.getQuotedString(odiRef.getCK("MESS"))%>;
String condSqlKO = <%=odiRef.getCK("MESS")%>;

条件のメッセージが"Error:\n Zero is not a valid value"である場合、生成されるコードは次のようになります。getQuotedStringを使用しないと、\nが維持されず、改行になってしまうため、コードは正しくありません。

String condSqlOK = "Error:\n Zero is not a valid value";
String condSqlKO = "Error:
Zero is not a valid value";

B.2.54 getSchemaName()メソッド

トポロジから取得したスキーマ名を返すために使用します。

使用方法

public java.lang.String getSchemaName(
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getSchemaName(
java.lang.String pLogicalSchemaName,
java.lang.String pContextCode,
java.lang.String pLocation)

public java.lang.String getSchemaName( java.lang.String pLocation)

public java.lang.String getSchemaName()

説明

データ・スキーマまたは作業スキーマの物理名を論理スキーマから取得します。

最初の構文が使用される場合、返されるスキーマは現在のコンテキストに対応します。

2番目の構文が使用される場合、返されるスキーマはpContextCodeパラメータで指定されたコンテキストに対応します。

3番目の構文は、現在のコンテキスト、現在の論理スキーマでのデータ・スキーマ(D)または作業スキーマ(W)の名前を返します。

4番目の構文は、現在のコンテキスト、現在の論理スキーマでのデータ・スキーマ(D)の名前を 返します。

パラメータ

パラメータ

型

説明

pLogicalSchemaName

文字列

スキーマの論理スキーマの名前

pContextCode

文字列

スキーマの強制コンテキスト

pLocation

文字列

有効な値は次のとおりです。

- D: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマのデータ・スキーマを返します。

- W: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマの作業スキーマを返します。

例

定義されている物理スキーマ: Pluton.db_odi.dbo

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_owner

この物理スキーマを関連付けている論理スキーマ: MSSQL_ODI(コンテキストはCTX_DEV)

コール対象

戻り値

<%=odiRef.getSchemaName("MSSQL_ODI", "CTX_DEV", "W")%>

temp_owner

<%=odiRef.getSchemaName("MSSQL_ODI", "CTX_DEV", "D")%>

dbo

B.2.55 getSchemaNameDefaultPSchema()メソッド

トポロジからデフォルトの物理スキーマのカタログ名を返すために使用します。

使用方法

public java.lang.String getSchemaNameDefaultPSchema(
java.lang.String pLogicalSchemaName,
java.lang.String pLocation)

public java.lang.String getSchemaNameDefaultPSchema(
java.lang.String pLogicalSchemaName,
java.lang.String pContextCode,
java.lang.String pLocation)

public java.lang.String getSchemaNameDefaultPSchema(
java.lang.String pLocation)

public java.lang.String getSchemaNameDefaultPSchema(

説明

タプルに対応している物理スキーマ(論理スキーマ、コンテキスト)が関連付けられているデータ・サーバーのデフォルトの物理データ・スキーマまたは作業スキーマの名前を取得できます。コンテキストを指定しない場合、現在のコンテキストが使用されます。論理スキーマ名が指定されない場合、現在の論理スキーマが使用されます。pLocationが指定されない場合、データ・スキーマが返されます。

パラメータ

パラメータ

型

説明

pLogicalSchemaName

文字列

論理スキーマの名前

pContextCode

文字列

強制適用されたスキーマのコンテキストのコード

pLocation

文字列

有効な値は次のとおりです。

- D: タプル(コンテキスト、論理スキーマ)に対応する物理スキーマのデータ・スキーマを返します。

- W: タプル(コンテキスト、論理スキーマ)に対応している物理スキーマもアタッチされているデータ・サーバーに関連付けられている、デフォルトの物理スキーマの作業スキーマを返します。

例

定義されている物理スキーマ: Pluton.db_odi.dbo

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_odi

デフォルト・スキーマか

はい

この物理スキーマに関連付けられているもの: コンテキストCTX_DEVのMSSQL_ODIおよびPluton.db_doc.doc

プロパティ

値

データ・カタログ:

db_doc

データ・スキーマ:

doc

作業カタログ:

tempdb

作業スキーマ:

temp_doc

デフォルト・スキーマか

いいえ

この物理スキーマに関連付けられているもの: コンテキストCTX_DEVのMSSQL_DOC

コール対象

戻り値

<%=odiRef.getSchemaNameDefaultPSchema("MSSQL_DOC", "CTX_DEV", "W")%>

temp_odi

<%=odiRef.getSchemaNameDefaultPSchema("MSSQL_DOC", "CTX_DEV", "D")%>

dbo

B.2.56 getSession()メソッド

現在のセッションに関する情報を返すために使用します。

使用方法

public java.lang.String getSession(java.lang.String pPropertyName)

説明

このメソッドは現在のセッションに関する情報を返します。使用可能なプロパティのリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

SESS_NO

セッションの内部番号。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

SESS_GUID

セッションのGUID。

SESS_NAME

セッションの名前。

SCEN_NAME

シナリオの名前

SCEN_VERSION

現在のシナリオのバージョン

CONTEXT_NAME

実行コンテキストの名前

CONTEXT_CODE

実行コンテキストのコード

AGENT_NAME

実行を担当する物理エージェントの名前

SESS_BEG

セッション開始の日付と時刻

USER_NAME

セッションを実行しているODIユーザー

例

The current session is: <%=odiRef.getSession("SESS_NAME")%>

B.2.57 getSessionVarList()メソッド

将来の使用のために予約されています。

使用方法

public java.lang.String getSessionVarList( java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd,
java.lang.String pSelector)

説明

将来の使用のために予約されています。

パラメータ

将来の使用のために予約されています。

例

将来の使用のために予約されています。

B.2.58 getSrcColList()メソッド

ロード・フェーズまたは統合フェーズに関連したソース属性のフィルタ済リストから、各属性のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getSrcColList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pUnMappedPattern,
java.lang.String pMappedPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

public java.lang.String getSrcColList(
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

public java.lang.String getSrcColList(
java.lang.String pStart,
java.lang.String pUnMappedPattern,
java.lang.String pMappedPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

public java.lang.String getSrcColList(
int dsIndex,
java.lang.String pStart,
java.lang.String pUnMappedPattern,
java.lang.String pMappedPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

説明

このメソッドはLKMとIKMに用意されていて、指定されたデータセット内の属性のリストのプロパティを返します。このリストはLKM(ソース)またはIKM(ステージング領域)によって処理されたソースのすべての属性を含みます。リストは、ソース表内の属性位置を基準にソートされます。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

表示されるプロパティは、属性がマップされているかどうかにより異なります。属性がマップされている場合、返されるプロパティはpMappedPatternパターンで定義されます。属性がマップされていない場合、返されるプロパティはpUnMappedPatternパターンで定義されます。

パターンで使用できる属性のリストは、「パターン属性リスト」に詳述されます。属性は、パターン文字列内に出現するたびにその値に置き換えられます。属性は大カッコ([ ])で囲む必要があります。例: "My string [COL_NAME] is a attribute".

pMappedPatternまたはpUnMappedPatternパラメータがリストの各要素について解釈され、繰り返されます。パターンはpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。

バリアントgetSrcColList(String pStart, String pPattern, String pSeparator, String pEnd)でpPatternパラメータが使用されている場合、pUnMappedPatternパラメータとpMappedPatternパラメータの両方で引数として同じpPattern値を使用して、バリアントgetSrcColList(String pStart, String pUnMappedPattern, String pMappedPattern,String pSeparator, String pEnd)がコールされます。

マッピングのソースにジャーナル化されたデータストアがある場合、3つのジャーナル化疑似属性JRN_FLG、JRN_DATEおよびJRN_SUBSCRIBERは、ジャーナル化されたソース・データストアの属性として追加されます。

パラメータ

パラメータ

型

説明

dsIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

pPatternの値が、pUnMappedPatternとpMappedPatternの両方で引数として使用されます。

pUnMappedPattern

文字列

属性がマップされていない場合、パターンはリスト内に現れるたびに繰り返されます。

pMappedPattern

文字列

属性がマップされている場合、パターンはリスト内に現れるたびに繰り返されます。

pSeparator

文字列

このパラメータはパターンを区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

属性の名前。

ALIAS_NAME

属性の名前。COL_NAMEと異なり、オプションのテクノロジ・デリミタを含まない属性名を返します。属性名に、たとえばスペースが含まれる場合、これらのデリミタが表示されます。

COL_HEADING

属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始(索引)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値: (0: NULLを許可、1: NOT NULL)

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値: (0: チェックしない、1: チェック)

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値: (0: チェックしない、1: チェック)

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値は次のとおりです。

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

EXPRESSION

ソース(LKM)またはステージング領域(IKM)上で実行された、式のテキスト(マッピング・フィールドに入力したもの)。属性がマップされていない場合、このパラメータは空の文字列を返します。

CX_COL_NAME

サポートされていません。

ALIAS_SEP

別名に対して(テクノロジにより)使用されるセパレータ

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット(IKM)またはステージング領域(LKM)のテクノロジのデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

MANDATORY_CLAUSE

属性が必須の場合、NOT NULLを返します。そうでない場合、そのテクノロジのNULLキーワードを返します。

DEFAULT_CLAUSE

デフォルト値が存在する場合、DEFAULT <デフォルト値>を返します。そうでない場合は、空の文字列を返します。

<flexfield code>

現在の属性のフレックスフィールド値

POP_ALIAS

マッピングで使用するデータストアの別名。

例

ソース・ファイルに類似した表を作成する場合:

create table <%=odiRef.getTable("L","COLL_NAME", "D")%>_F
(
<%=odiRef.getSrcColList("","[COL_NAME] [DEST_CRE_DT]","[COL_NAME]
[DEST_CRE_DT]",",\n","")%>
)

B.2.59 getSrcTablesList()メソッド

マッピングの各ソース表のプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getSrcTablesList(
java.lang.Int pDSIndex,
java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getSrcTablesList(
java.lang.Int pDSIndex,
java.lang.String pPattern,
java.lang.String pSeparator)

説明

マッピングで指定されたデータセットのソース表のリストを返します。このメソッドはSELECT 命令にFROM句を作成するために使用できます。ただし、これでなくgetFrom()メソッドを使用することをお薦めします。

IKMで使用される場合のみ、pDSIndexパラメータにより、このコマンドによって考慮されるデータセットが特定されます。

注意:

このメソッドがLKMで使用される場合、pDSIndexは省略できます。IKMの場合も省略可能です。この場合、最初のデータセットが考慮されます。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pDSIndex

整数

このコマンドによって考慮されるデータセットを特定する索引

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

属性

説明

I_TABLE

現在のソース表の内部識別子(番号がある場合)このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

TABLE_GUID

ソース表のGUID (使用可能な場合)。

MODEL_NAME

現在のソース表のモデルの名前(名前がある場合)

SUB_MODEL_NAME

現在のソース表のサブモデルの名前(名前がある場合)

TECHNO_NAME

ソース・データストアのテクノロジの名前

LSCHEMA_NAME

ソース表の論理スキーマ

TABLE_NAME

ソース・データストアの論理名

RES_NAME

リソースの物理アクセス名(ファイル名またはJMSキュー、表の物理名など)。マッピングのソースにジャーナル化されたデータストアがある場合、句内のソース表は、ジャーナル化されたソース・データストアにリンクされたデータ・ビューによって置き換えられます。

CATALOG

ソース・データストアのカタログ(実行時に解決)

WORK_CATALOG

ソース・データストアの作業カタログ

SCHEMA

ソース・データストアのスキーマ(実行時に解決)

WORK_SCHEMA

ソース・データストアの作業スキーマ

TABLE_ALIAS

表リストに表示されるデータストアの別名(別名がある場合)

POP_TAB_ALIAS

現在のマッピングに表示されるデータストアの別名(別名がある場合)

TABLE_TYPE

データストアのタイプ(使用可能な場合): Q = キュー、S = シノニム、T = 表、V = ビュー。

DESCRIPTION

ソース・データストアの説明(説明がある場合)

R_COUNT

ソース・データストアのレコードの数(判明している場合)

FILE_FORMAT

ファイル形式(使用可能な場合): D = デリミタ付き、F = 固定。

FILE_SEP_FIELD

文字列テキストのファイル・フィールド・セパレータ(タブ文字など)。

XFILE_SEP_FIELD

エスケープ・テキストのファイル・フィールド・セパレータ(タブ文字など)。改行と行頭復帰は\rおよび\nにエスケープされ、Unicode文字は\uXXXXにエスケープされます。

SFILE_SEP_FIELD

16進形式のファイル・フィールド・セパレータ(例: タブ文字に対する09)。返される文字列は2桁の16進数または4桁の16進数であり、フィールド・セパレータの上位バイトが0であれば2桁の16進数となります。

FILE_ENC_FIELD

データストア・エディタに表示されるテキスト・デリミタ(最大2文字)。

FILE_SEP_ROW

文字列テキストのファイル・レコード・セパレータ。

XFILE_SEP_ROW

エスケープ・テキストのファイル・レコード・セパレータ。改行と行頭復帰は\rおよび\nにエスケープされ、Unicode文字は\uXXXXにエスケープされます。

SFILE_SEP_ROW

16進形式のファイル・レコード・セパレータ。改行と行頭復帰は\rおよび\nにエスケープされ、Unicode文字は\uXXXXにエスケープされます。

FILE_FIRST_ROW

無視するヘッダーの行数(ヘッダーがある場合)

FILE_DEC_SEP

データストアのデフォルトの小数点記号(デフォルトがある場合)

METADATA

現在のリソースのメタデータのODI形式の説明(説明がある場合)

OLAP_TYPE

データストアのOLAPタイプ: DH = 緩やかに変化するディメンション、DI = ディメンション、FA = ファクト表、<empty> = 未定義。

IND_JRN

CDCにデータストアが含まれているかを示すフラグ: 1 = はい、0 = いいえ。

JRN_ORDER

一貫したジャーナル化のためのCDCセット内でのデータストアの順序

PARTITION_NAME

ソース・データストアに選択されているパーティションまたはサブパーティションの名前。パーティションが選択されていない場合は、空の文字列を返します。

PARTITION_TYPE

ソース・データストアに選択されているパーティションまたはサブパーティションのタイプ。パーティションが選択されていない場合は、空の文字列を返します。

- P: パーティション

- S: サブパーティション

<flexfield code>

現在の表のフレックスフィールド値

例

insert into <%=odiRef.getTable("L", "COLL_NAME", "W")%>
select <%=odiRef.getColList("", "[EXPRESSION]", ", ", "", "INS=1")%>
from <%=odiRef.getSrcTablesList("", "[CATALOG].[SCHEMA].[TABLE_NAME] AS [POP_TAB_ALIAS]", ", ", "")%>
where (1=1)
<%=odiRef.getJoinList("and ","([EXPRESSION])"," and ","")%>
<%=odiRef.getFilterList("and ","([EXPRESSION])"," and ","")%>
<%=odiRef.getGrpBy()%>
<%=odiRef.getHaving()%>

説明: getSrcTablesList関数は、ソース内の各表についてカンマで区切られたパターン(CATALOG.SCHEMA.TABLE_NAME as POP_TAB_ALIAS)を繰り返すSELECT文のFROM句を生成するために使用されます。

- 関数の最初のパラメータ""は、文字列を特定の文字で開始しないことを示します。

- 2番目のパラメータ"[CATALOG].[SCHEMA].[TABLE_NAME] as [POP_TAB_ALIAS]"は、このパターンを各ソース表について繰り返すことを示します。キーワード[CATALOG]、[SCHEMA]、[TABLE_NAME]および[POP_TAB_ALIAS]は、表「パターン属性リスト」の有効なキーワードを参照しています。

- 3番目のパラメータ", "は、パターンの解釈された発生を、文字列「,」で区切ることを示します。

- 関数の4番目のパラメータ""は、文字列が特定の文字を伴わずに終わることを示します。

B.2.60 getStep()メソッド

現在の手順に関する情報を返すために使用します。

使用方法

public java.lang.String getStep(java.lang.String pPropertyName)

説明

このメソッドは現在の手順に関する情報を返します。使用可能な情報のリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な値のリストです。

パラメータ値

説明

SESS_NO

手順が所属するセッションの番号このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

SESS_GUID

セッションのGUID。

NNO

セッションでの手順の番号

NB_RUN

実行の試行数

STEP_NAME

手順名

STEP_TYPE

手順のタイプ

CONTEXT_NAME

実行コンテキストの名前

VAR_INCR

手順変数の増分

VAR_OP

変数を比較するために使用される演算子

VAR_VALUE

変数の強制値

OK_EXIT_CODE

成功の場合の終了コード

OK_EXIT

成功の場合にパッケージを終了

OK_NEXT_STEP

成功の場合の次の手順

OK_NEXT_STEP_NAME

成功の場合の次の手順の名前

KO_RETRY

失敗の場合の再試行数

KO_RETRY_INTERV

失敗の場合の試行間隔

KO_EXIT_CODE

失敗の場合の終了コード

KO_EXIT

失敗の場合にパッケージを終了

KO_NEXT_STEP

失敗の場合の次の手順

KO_NEXT_STEP_NAME

失敗の場合の次の手順の名前

例

The current step is: <%=odiRef.getStep("STEP_NAME")%>

B.2.61 getSubscriberList()メソッド

ジャーナル化された表の各サブスクライバのプロパティを返すために使用します。プロパティは文字列パターンに応じて構成されます。

使用方法

public java.lang.String getSubscriberList( java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

代替可能な構文:

public java.lang.String getSubscriberList(
java.lang.String pPattern,
java.lang.String pSeparator,

説明

ジャーナル化された表のサブスクライバのリストを返します。pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストを、後述の「パターン属性リスト」に示します。

属性は、パターン文字列内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例 «My name is [SUBSCRIBER]»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

SUBSCRIBER

サブスクライバの名前

例

Here is list of Subscribers: <%=odiRef.getSubscriberList("\nBegin List\n", "- [SUBSCRIBER]", "\n", "\nEnd of List\n")%>

B.2.62 getSysDate()メソッド

セッションを実行しているマシンのシステム日付を指定された形式で返すために使用します。

使用方法

public java.lang.String getSysDate()

public java.lang.String getSysDate(pDateFormat)

説明

このメソッドは、このメソッドは、セッションを実行しているマシンのシステム日付を返します。t

パラメータ

パラメータ

型

説明

pDateFormat

文字列

システム日付を返すために使用される日付書式。このパターンはJavaの日付・時刻パターンに従う必要があります。

例

Current year is: <%=odiRef.getSysDate("y")%>

B.2.63 getTable()メソッド

表の完全修飾名を返すために使用します。この表は、ソース表、ターゲット表、あるいはOracle Data Integratorによって処理された一時表または構造表のいずれかです。

使用方法

public java.lang.String getTable(
java.lang.String pMode,
java.lang.String pProperty,
java.lang.String pLocation)

public java.lang.String getTable(
java.lang.String pProperty,
java.lang.String pLocation)

public java.lang.String getTable(
java.lang.String pProperty)

説明

Oracle Data Integratorによって処理された一時表および永続表の完全修飾名を取得します。

パラメータ

パラメータ

型

説明

pMode

文字列

"L": ローカル・オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。この値は、pModeが指定されていない場合に使用されます。

"R": オブジェクト・マスクを使用してオブジェクトの完全パスを作成します。

"A": 自動。使用する適切なマスクを自動的に定義します。

pProperty

文字列

構築される表の名前を示すパラメータ。可能な値のリストを次に示します。

- ID: データストア識別子このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

- GLOBAL_ID: ターゲット表のGUID。

- TARG_NAME: ターゲット・データストアのフルネーム。アクションでは、このパラメータは、DDLコマンドによって処理された現在の表の名前を返します。マッピングのターゲット・データストアでパーティショニングが使用されている場合、このプロパティは、データストア名にパーティショニング句を自動的に含めます。

- COLL_NAME: ロード・データストアのフルネーム

- INT_NAME: 統合データストアのフルネーム

- ERR_NAME: エラー・データストアのフルネーム

- CHECK_NAME: エラー・サマリー・データストアの名前

- CT_NAME: チェック・データストアのフルネーム

- FK_PK_TABLE_NAME: 外部キーによって参照されたデータストアのフルネーム

- JRN_NAME: ジャーナル化されたデータストアのフルネーム

- JRN_VIEW: ジャーナル化されたデータストアにリ ンクされたビューのフルネーム

- JRN_DATA_VIEW: ジャーナル化されたデータストアにリンクされたデータ・ビューのフルネーム

- JRN_TRIGGER: ジャーナル化されたデータストアにリンクされたトリガーのフルネーム

- JRN_ITRIGGER: ジャーナル化されたデータストアにリンクされた挿入トリガーのフルネーム

- JRN _UTRIGGER: ジャーナル化されたデータストアにリンクされた更新トリガーのフルネーム

- JRN_DTRIGGER: ジャーナル化されたデータストアにリンクされた削除トリガーのフルネーム

- SUBSCRIBER_TABLE: サブスクライバ・リストが含まれているデータストアのフルネーム

- CDC_SET_TABLE: CDCセットのリストが含まれている表のフルネーム

- CDC_TABLE_TABLE: CDCセットを使用してジャーナル化された表のリストが含まれている表のフルネーム

- CDC_SUBS_TABLE: CDCセットのサブスクライバのリストが含まれている表のフルネーム

- CDC_OBJECTS_TABLE: ジャーナル化パラメータとオブジェクトが含まれている表のフルネーム

- <flexfield_code>: 現在のターゲット表のフレックスフィールド値

pLocation

文字列

W: 物理カタログのオブジェクトと、現在のタプル(コンテキスト、論理スキーマ)に対応する物理作業スキーマのフルネームを返します。

D: 物理カタログのオブジェクトと、現在のタプル(コンテキスト、論理スキーマ)に対応する物理データ・スキーマのフルネームを返します。

A: Oracle Data Integratorがオブジェクトのデフォルトの場所を決定します。この値は、pLocationが指定されていない場合に使用されます。

例

定義されている物理スキーマ: Pluton.db_odi.dbo

プロパティ

値

データ・カタログ:

db_odi

データ・スキーマ:

dbo

作業カタログ:

tempdb

作業スキーマ:

temp_owner

ローカル・マスク:

%CATALOG.%SCHEMA.%OBJECT

リモート・マスク:

%DSERVER:%CATALOG.%SCHEMA.%OBJECT

ロード接頭辞:

CZ_

エラー接頭辞:

ERR_

統合接頭辞:

I$_

この物理スキーマを関連付けている論理スキーマ: MSSQL_ODI(コンテキストはCTX_DEV) 表の名前: CUSTOMER

コール対象

戻り値

<%=odiRef.getTable("L", "COLL_NAME", "W")%>

tempdb.temp_owner.CZ_0CUSTOMER

<%=odiRef.getTable("R", "COLL_NAME", "D")%>

MyServer:db_odi.dbo.CZ_0CUSTOMER

<%=odiRef.getTable("L", "INT_NAME", "W")%>

tempdb.temp_owner.I$_CUSTOMER

<%=odiRef.getTable("R", "ERR_NAME", "D")%>

MyServer:db_odi.dbo.ERR_CUSTOMER

B.2.64 getTargetColList()メソッド

マッピングのターゲット表のアクティブな属性に関する情報を返すために使用します。アクティブな属性とは、アクティブ・マッピングを持つ属性のことです。ターゲット表のすべての属性(アクティブな属性および非アクティブな属性を含む)に関する情報を返すには、getAllTargetColList()メソッドを使用します。

使用方法

public java.lang.String getTargetColList( java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd,
java.lang.String pSelector)

代替可能な構文:

public java.lang.String getTargetColList( java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

public java.lang.String getTargetColList( java.lang.String pPattern,
java.lang.String pSeparator)

説明

マッピングのターゲット表の属性リストを提供します。

pPatternパラメータはリストの各要素(pSelectorパラメータに応じて選択)ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

代替可能な構文では、未設定のパラメータはすべて空の文字列として設定されます。

パラメータ

パラメータ

型

説明

pStart

文字列

このシーケンスは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストを、後述の「パターン属性リスト」に示します。

属性は、パターン文字列内に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute of the target»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このシーケンスは、生成する文字列の終わりの目印です。

pSelector

文字列

次の形式を使用して、最初のリストの要素をフィルタできるブール式を指定する文字列。

<SELECTOR> <演算子> <SELECTOR>など。カッコを使用できます。

使用できる演算子:

1. 否定: NOTまたは!

2. 論理和: ORまたは||

3. 論理積: ANDまたは&&

例: (INS AND UPD) OR TRG

有効なセレクタについては後述します。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

I_COL

属性の内部識別子

COL_NAME

属性の名前。

COL_HEADING

属性のヘッダー

COL_DESC

属性の説明

POS

属性の位置

LONGC

属性の長さ(精度)

SCALE

属性のスケール

FILE_POS

属性の開始(索引)

BYTES

属性の物理バイト数

FILE_END_POS

属性の終わり(FILE_POS + BYTES)

IND_WRITE

属性の書込み権限フラグ

COL_MANDATORY

属性の必須文字。有効な値は次のとおりです。

- 0: nullを許可

- 1: nullでない

CHECK_FLOW

属性のフロー制御フラグ。有効な値: (0: チェックしない、1: チェック)

- 0: チェックしない

- 1: チェック

CHECK_STAT

属性の静的制御フラグ。有効な値: (0: チェックしない、1: チェック)

- 0: チェックしない

- 1: チェック

COL_FORMAT

属性の論理形式

COL_DEC_SEP

属性の小数点記号

REC_CODE_LIST

属性に維持されたレコード・コードのリスト

COL_NULL_IF_ERR

属性の処理フラグ。有効な値:(0 = 拒否、1 = アクティブ・トレースをNULLに設定、2= 非アクティブ・トレースをNULLに設定)

- 0: 拒否

- 1: アクティブ・トレースをNULLに設定

- 2: 非アクティブ・トレースをNULLに設定

DEF_VALUE

属性のデフォルト値

ALIAS_SEP

別名に対して(テクノロジにより)使用されるセパレータ

SOURCE_DT

属性のデータ型のコード

SOURCE_CRE_DT

属性のデータ型に対する表作成構文

SOURCE_WRI_DT

属性の書込み可能データ型に対する表作成構文

DEST_DT

ターゲット・テクノロジ上のデータ型に変換された、属性のデータ型のコード

DEST_CRE_DT

ターゲット・テクノロジ上のデータ型に変換された属性のデータ型に対する表作成構文

DEST_WRI_DT

ターゲット・テクノロジ上のデータ型に変換された、属性の書込み可能なデータ型に対する表作成構文

SCD_COL_TYPE

データ・モデルでこの属性の緩やかに変化するディメンションに対して定義された動作

MANDATORY_CLAUSE

属性が必須の場合、NOT NULLを返します。そうでない場合、そのテクノロジのNULLキーワードを返します。

DEFAULT_CLAUSE

デフォルト値が存在する場合、DEFAULT <デフォルト値>を返します。そうでない場合は、空の文字列を返します。

JDBC_TYPE

データ・サービス - ドライバによって返される属性のJDBCタイプ。

<flexfield code>

現在の属性のフレックスフィールド値

セレクタの説明

パラメータ値

説明

INS

- LKM: 適用対象外

- IKM: 挿入でマークされたマッピング式のみ

- CKM: 適用対象外

UPD

- LKM: 適用対象外

- IKM: 更新でマークされたマッピング式のみ

- CKM: 適用対象外

TRG

- LKM: 適用対象外

- IKM: ターゲット上で実行されたマッピング式のみ

- CKM: ターゲット上で実行されたマッピング式

NULL

- LKM: 適用対象外

- IKM: NULL値可能でない属性をロードするすべてのマッピング式

- CKM: NULL値を許容しないすべてのターゲット属性

PK

- LKM: 適用対象外

- IKM: 主キー属性をロードするすべてのマッピング式

- CKM: 主キーの一部であるすべてのターゲット属性

UK

- LKM: 適用対象外

- IKM: 現在のマッピングに対して選択された更新キー属性をロードするすべてのマッピング式

- CKM: 適用対象外

REW

- LKM: 適用対象外

- IKM: 読取り専用フラグが選択されていない属性をロードするすべてのマッピング式

- CKM: 読取り専用フラグが選択されていないすべてのターゲット属性

MAP

- LKM: 適用対象外

- IKM: 適用対象外

- CKM:

フロー制御: 現在のマッピングの式でロードされたターゲット表のすべての属性

静的制御: ターゲット表のすべての属性

SCD_SK

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Surrogate Key」とマーキングされたすべての属性

SCD_NK

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Natural Key」とマーキングされたすべての属性

SCD_UPD

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Overwrite on Change」とマーキングされたすべての属性

SCD_INS

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Add Row on Change」とマーキングされたすべての属性

SCD_FLAG

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Current Record Flag」とマーキングされたすべての属性

SCD_START

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Starting Timestamp」とマーキングされたすべての属性

SCD_END

LKM、CKM、IKM: データ・モデル定義で「SCD Behavior: Ending Timestamp」とマーキングされたすべての属性

WS_INS

SKM: 属性は、データ・サービスを使用したINSERTを許可するフラグを設定されています。

WS_UPD

SKM: 属性は、データ・サービスを使用したUDATEを許可するフラグを設定されています。

WS_SEL

SKM: 属性は、データ・サービスを使用したSELECTを許可するフラグを設定されています。

例

create table TARGET_COPY <%=odiRef.getTargetColList("(", "[COL_NAME] [DEST_DT] null", ", ", ")", "")%>

B.2.65 getTableName()メソッド

表の名前とタイプを示す未解決文字列を返すために使用します。

使用方法

public java.lang.String getTableName(
java.lang.String pProperty)

説明

このメソッドは、表のタイプを示す接頭辞を持つ未解決文字列を返します。残りの文字列は表の名前を示します。

パラメータ

パラメータ

型

説明

pProperty

文字列

取得する表の名前を示すパラメータ。可能な値のリストを次に示します。

- INT_SHORT_NAME: 統合表の名前

- COLL_SHORT_NAME: ロード表の名前

- CT_SHORT_NAME: 統合表の名前。マッピングでフロー制御が使用されている場合、INT_SHORT_NAMEと同じ名前を返します。マッピングで静的制御が使用されている場合、ターゲット表名<table name>を返します。

- ERR_SHORT_NAME: エラー表の名前。

例

<%=odiRef.getObjectName("L", odiRef.getTableName("COLL_SHORT_NAME"), "W")%>
<%=odiRef.getObjectShortName("L", odiRef.getTableName("INT_SHORT_NAME"), "W")%>

B.2.66 getTargetTable()メソッド

マッピングのターゲット表に関する情報を返すために使用します。

使用方法

public java.lang.String getTargetTable(java.lang.String pPropertyName)

説明

このメソッドは、現在のターゲット表に関する情報を返します。使用可能なデータのリストをpPropertyName値の表に示します。

アクションでは、このメソッドはDDLコマンドによって処理されている表に関する情報を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な値のリストです。

パラメータ値

説明

I_TABLE

データストアの内部識別子。このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

TABLE_GUID

ターゲット表のGUID。

MODEL_NAME

現在のデータストアのモデルの名前

SUB_MODEL_NAME

現在のデータストアのサブモデルの名前

TECHNO_NAME

ターゲット・テクノロジの名前

LSCHEMA_NAME

ターゲット論理スキーマの名前

TABLE_NAME

ターゲット・データストアの名前。

RES_NAME

ターゲット・リソースの物理名

CATALOG

カタログ名

WORK_CATALOG

作業カタログの名前

SCHEMA

スキーマ名

WORK_SCHEMA

作業スキーマの名前

TABLE_ALIAS

現在のデータストアの別名

TABLE_TYPE

データストアのタイプ

DESCRIPTION

現在のマッピングの説明

TABLE_DESC

現在のマッピングのターゲット・データストアの説明。DDLコマンドの場合、現在の表の説明。

R_COUNT

現在のデータストアの行数

FILE_FORMAT

現在のデータストア(ファイル)の形式

FILE_SEP_FIELD

フィールド・セパレータ(ファイル)

XFILE_SEP_FIELD

16進表記のフィールド・セパレータ(ファイル)

SFILE_SEP_FIELD

フィールド・セパレータ文字列(ファイル)

FILE_ENC_FIELD

フィールドの開始および終了文字(ファイル)

FILE_SEP_ROW

レコード・セパレータ(ファイル)

XFILE_SEP_ROW

16進表記のレコード・セパレータ(ファイル)

SFILE_SEP_ROW

レコード・セパレータ文字列(ファイル)

FILE_FIRST_ROW

ファイル(ファイル)の先頭の、無視する行数

FILE_DEC_SEP

小数点記号(ファイル)

METADATA_DESC

データストアのメタデータの説明(ファイル)

OLAP_TYPE

データストア定義で指定されたOLAPタイプ

IND_JRN

データストアがCDCに含まれることを示すフラグ

JRN_ORDER

一貫したジャーナル化のためのCDCセット内でのデータストアの順序

WS_NAME

データ・サービス - このデータストアのモデル用に生成されたWebサービスの名前

WS_NAMESPACE

データ・サービス - このデータストアのモデル用に生成されたWebサービスの名前

WS_JAVA_PACKAGE

データ・サービス - Webサービス用に生成されたJavaパッケージ

WS_ENTITY_NAME

データ・サービス - Webサービスでこのデータストアに対して使用されるエンティティ名

WS_DATA_SOURCE

データ・サービス - Webサービスでこのデータストアに対して使用されるエンティティ名

PARTITION_NAME

ターゲット・データストアに選択されているパーティションまたはサブパーティションの名前。パーティションが選択されていない場合は、空の文字列を返します。

PARTITION_TYPE

ターゲット・データストアに選択されているパーティションまたはサブパーティションのタイプ。パーティションが選択されていない場合は、空の文字列を返します。

- P: パーティション

- S: サブパーティション

<flexfield code>

現在の表のフレックスフィールド値

例

The current table is: <%=odiRef.getTargetTable("RES_NAME")%>

B.2.67 getTemporaryIndex()メソッド

マッピングで結合またはフィルタを最適化するために定義される一時索引に関する情報を返すために使用します。

使用方法

public java.lang.String getTemporaryIndex(java.lang.String pPropertyName)

説明

このメソッドは、マッピングによって作成または削除されている一時索引に関する情報を返します。

これは、このタスクの「一時索引の作成」オプションを「ソース上」または「ターゲット上」に設定している場合に、ロード・ナレッジ・モジュールまたは統合ナレッジ・モジュールで使用できます。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれる文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

IDX_NAME

索引の名前。この名前は、物理スキーマ用に定義された一時索引の接頭辞を付けて作成されます。

FULL_IDX_NAME

索引の完全修飾名。ターゲット・タブでは、ステージング領域の作業スキーマで索引を作成するためにこの名前が修飾されます。ソース・タブでは、ソースのデフォルト作業スキーマ(LKM)またはステージング領域の作業スキーマ(IKM)で索引を作成するためにこの名前が修飾されます。

COLL_NAME

LKMのロード表の完全修飾名。このプロパティはIKMには適用されません。

CATALOG

索引付けされる表を含むカタログ

SCHEMA

索引付けされる表を含むスキーマ

WORK_CATALOG

索引付けされる表の作業カタログ

WORK_SCHEMA

索引付けされる表の作業スキーマ

DEF_CATALOG

索引付けされる表を含むデフォルト・カタログ

DEF_SCHEMA

索引付けされる表を含むデフォルト・スキーマ

DEF_WORK_CATALOG

索引付けされる表のデフォルト作業カタログ

DEF_WORK_SCHEMA

索引付けされる表のデフォルト作業スキーマ

DEF_WORK_SCHEMA

索引付けされる表のデフォルト作業スキーマ

LSCHEMA_NAME

索引付けされる表の論理スキーマ

TABLE_NAME

索引付けされる表の名前

FULL_TABLE_NAME

索引付けされる表の完全修飾名

INDEX_TYPE_CODE

索引タイプを表すコード

INDEX_TYPE_CLAUSE

このタイプの索引を作成するための句

POP_TYPE_CLAUSE

索引を作成する句のタイプ:

- J: 結合

- F: フィルタ

EXPRESSION

結合またはフィルタ句の式。デバッグ目的で使用します。

例

Create <%=odiRef.getTemporaryIndex (" [INDEX_TYPE_CLAUSE] index [FULL_IDX_NAME] on [FULL_TABLE_NAME] " )%><%=odiRef.getTemporaryIndexColList("(", "[COL_NAME]", ", ", ")")%>

B.2.68 getTemporaryIndexColList()メソッド

マッピングの一時索引の列に関する情報を返すために使用します。

使用方法

public java.lang.String getTemporaryIndexColList(java.lang.String pStart,
java.lang.String pPattern,
java.lang.String pSeparator,
java.lang.String pEnd)

説明

一時索引の列のリストを返します。

pPatternパラメータはリストの各要素ごとに解釈され、繰り返されて、前の要素からパラメータpSeparatorで区切られます。生成された文字列はpStartから始まり、pEndで終わります。要素が選択されていない場合は、pStartとpEndは省略され、空の文字列が返されます。

このリストには、一時索引の各列につき1つの要素が含まれます。

これは、このタスクの「一時索引の作成」オプションを「ソース上」または「ターゲット上」に設定している場合に、ロード・ナレッジ・モジュールまたは統合ナレッジ・モジュールで使用できます。

パラメータ

パラメータ

型

説明

パラメータ

型

説明

pStart

文字列

このパラメータは、生成する文字列の始まりの目印です。

pPattern

文字列

パターンはリスト内に現れるたびに繰り返されます。

パターンで使用できる属性のリストは、後述の「パターン属性リスト」を参照してください。

各属性は、パターン文字列に出現するたびにその値に置き換えられます。属性は大カッコ([])で囲む必要があります。

例: «My string [COL_NAME] is a attribute»

pSeparator

文字列

このパラメータは、各パターンを前のパターンから区切ります。

pEnd

文字列

このパラメータは、生成する文字列の終わりの目印です。

パターン属性リスト

次の表は、異なるパラメータ値を、それに関連付けられた説明とともにあげたものです。

パラメータ値

説明

CX_COL_NAME

ステージング領域上の現在の式のコンテナとして使用されている属性の計算された名前

COL_NAME

索引に含める属性の名前

POS

この索引を最適化する結合またはフィルタ句でのこの属性の最初の出現位置

例

Create <%=odiRef.getTemporaryIndex (" [INDEX_TYPE_CLAUSE] index [FULL_IDX_NAME] on [FULL_TABLE_NAME] " )%><%=odiRef.getTemporaryIndexColList("(", "[COL_NAME]", ", ", ")")%>

B.2.69 getUser()メソッド

現在のセッションを実行しているユーザーに関する情報を返すために使用します。

使用方法

public java.lang.String getUser(java.lang.String pPropertyName)

説明

このメソッドは、現在のセッションを実行しているユーザーに関する情報を返します。使用可能なプロパティのリストをpPropertyNameの値の表に示します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

リクエストされたプロパティの名前が含まれている文字列

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

パラメータ値

説明

I_USER

ユーザー識別子このパラメータは非推奨であり、11gとの互換性のためにのみ残されています。このIDプロパティは、リポジトリが11g互換性モードのときには有効になりますが、リポジトリが12cモードのときにはエラー・メッセージが返されます。

USER_GUID

ユーザーのGUID。

USER_NAME

ユーザー名

IS_SUPERVISOR

ユーザーがsupervisor (1)か、そうでない(0)かを示すブール値のフラグ

例

This execution is performed by <%=odiRef.getUser("USER_NAME")%>

B.2.70 getVersion()メソッド

ODIの現在のバージョンを返すために使用します。

使用方法

public java.lang.String getVersion()

説明

このメソッドは、実行中のODIインストールの完全バージョン番号を返します。

例

KMテキスト:

This execution is performed in <%=odiRef.getVersion()%>

この場合、次の文字列が返されます。

This execution is performed in 12.1.3.0.0

B.2.71 hasPK()メソッド

現在のデータストアに主キーがあるかどうかを返すために使用します。

使用方法

public java.lang.Boolean hasPK()

説明

このメソッドはブール値を返します。Webサービスが生成されているデータストアに主キーがある場合、戻り値はtrueです。

このメソッドはSKMでのみ使用できます。

例

<% if (odiRef.hasPK()) { %>

There is a PK :

<%=odiRef.getPK("KEY_NAME")%> : <%=odiRef.getPKColList("{",
"\u0022[COL_NAME]\u0022", ", ", "}")%>

<% } else {%>

There is NO PK.

<% } %>

B.2.72 isColAttrChanged()メソッド

列属性またはコメントが変更されたかどうかを返すために使用します。

使用方法

public java.lang.Boolean
isColAttrChanged(java.lang.String pPropertyName)

説明

このメソッドは、列属性またはコメントを変更するための列アクションで使用できます。パラメータとして渡された列属性が変更されたかどうかを示すブール値を返します。

パラメータ

パラメータ

型

説明

pPropertyName

文字列

属性コード(次を参照)

次の表は、pPropertyNameで可能な様々な値のリストです。

パラメータ値

説明

DATATYPE

列のデータ型、長さまたは精度が変更されています。

LENGTH

列の長さが変更されています(たとえば、VARCHAR(10)がVARCHAR(12)に変更されています)。

PRECISION

列の精度が変更されています(たとえば、DECIMAL(10,3)がDECIMAL(10,4)に変更されています)。

COMMENT

列コメントが変更されています。

NULL_TO_NOTNULL

列のNULL値可能属性が、NULLからNOT NULLに変更されています。

NOTNULL_TO_NULL

列のNULL値可能属性が、NOT NULLからNULLに変更されています。

NULL

列のNULL値可能属性が変更されています。

DEFAULT

列のデフォルト値が変更されています。

例

<% if (odiRef.IsColAttrChanged("DEFAULT") ) { %>
/* Column default attribute has changed. */
<% } %>

B.2.73 isVersionCompatible()メソッド

ODIの現在のバージョンが指定されたバージョンと互換性があるかどうかを確認するために使用します。VER1 > VER2 (例: 12.1.3.0.0 > 11.1.1.7.0)の場合、バージョンVER1はバージョンVER2との互換性があります。

使用方法

public boolean isVersionCompatible(java.lang.String compatibleVersion)

説明

指定されたバージョンが製品の現在のバージョンと互換性がある場合、このメソッドはtrueを返します。VER1 > VER2 (例: 12.1.3.0.0 > 11.1.1.7.0)の場合、バージョンVER1はバージョンVER2との互換性があります。

例

KMテキスト:

This version is compatible to 11.1.1.7.0: <%=odiRef.isVersionCompatible("11.1.1.7.0") %>

この場合、次の文字列が返されます。

This version is compatible to 11.1.1.7.0: true

B.2.74 nextAK()メソッド

データストアの次の代替キーに移るために使用します。

使用方法

public java.lang.Boolean nextAK()

説明

このメソッドは、Webサービスが生成されているデータストアの次の代替キー(AK)に移ります。

最初にコールされると、このメソッドはtrueを返し、現在のAKをデータストアの最初のAKに置きます。データストアにAKがない場合はfalseを返します。

次回以降のコールは、現在のAKをデータストアの次のAKに置き、trueを返します。次のAKがない場合はfalseを返します。

このメソッドはSKMでのみ使用できます。

例

次の例では、データストアのすべてのAKに対して反復しています。whileループの繰返しごとに、getAKとgetAKColListメソッドは、データストアの各種のAKに関する情報を返します。

<% while (odiRef.nextAK()) { %>
<%=odiRef.getAK("KEY_NAME")%>
Columns <%=odiRef.getAKColList("{", "\u0022[COL_NAME]\u0022", ",
", "}")%>
Message : <%=odiRef.getAK("MESS")%>
<% } %>

B.2.75 nextCond()メソッド

データストアの次の条件に移るために使用します。

使用方法

public java.lang.Boolean nextCond()

説明

このメソッドは、Webサービスが生成されているデータストアの次の条件(チェック制約)に移 ります。

最初にコールされると、このメソッドはtrueを返し、現在の条件をデータストアの最初の条件に置きます。データストアに条件がない場合はfalseを返します。

次回以降のコールは、現在の条件をデータストアの次の条件に置き、trueを返します。次の条件がない場合はfalseを返します。

このメソッドはSKMでのみ使用できます。

例

次の例では、データストアのすべての条件に対して反復しています。whileループの繰返しごとに、getCKメソッドは、データストアの各種の条件に関する情報を返します。

<% while (odiRef.nextCond()) { %>
<%=odiRef.getCK("COND_NAME")%>
SQL :<%=odiRef.getCK("COND_SQL")%>
MESS :<%=odiRef.getCK("MESS")%>
<% } %>

B.2.76 nextFK()メソッド

データストアの次の外部キーに移るために使用します。

使用方法

public java.lang.Boolean nextFK()

説明

このメソッドは、Webサービスが生成されているデータストアの次の外部キー(FK)に移ります。

最初にコールされると、このメソッドはtrueを返し、現在のFKをデータストアの最初のFKに置きます。データストアにFKがない場合はfalseを返します。

次回以降のコールは、現在のFKをデータストアの次のFKに置き、trueを返します。次のFKがない場合はfalseを返します。

このメソッドはSKMでのみ使用できます。

例

次の例では、データストアのすべてのFKに対して反復しています。whileループの繰返しごとに、getFKとgetFKColListメソッドは、データストアの各種のFKに関する情報を返します。

<% while (odiRef.nextFK()) { %>
FK : <%=odiRef.getFK("FK_NAME")%>
Referenced Table : <%=odiRef.getFK("PK_TABLE_NAME")%>
Columns <%=odiRef.getFKColList("{", "\u0022[COL_NAME]\u0022", ",
", "}")%>
Message : <%=odiRef.getFK("MESS")%>
<% } %>

B.2.77 setNbInsert()、setNbUpdate()、setNbDelete()、setNbErrors()およびsetNbRows()メソッド

現在のタスクに対して挿入、更新、削除された行数またはエラーになった行数を設定するために使用します。

使用方法

public java.lang.Void setNbInsert(public java.lang.Long)

public java.lang.Void setNbUpdate(public java.lang.Long)

public java.lang.Void setNbDelete(public java.lang.Long)

public java.lang.Void setNbErrors(public java.lang.Long)

public java.lang.Void setNbRows(public java.lang.Long)

説明

現在のタスクに設定されたこれらのメソッドにより、次の値が報告されます。

- 挿入された行数(setNbInsert)

- 更新された行数(setNbUpdate)

- 削除された行数(setNbDelete)

- エラーになった行数(setNbErrors)

- このタスク時に処理された行の総数(setNbRows)

これらの数は、処理された行の実際の数とは別に設定できます。

注意:

このメソッドはJythonコードなどのスクリプト・エンジン・コマンドでのみ使用可能です。<%%>タグで囲まないでください。

例

次のJythonの例では、挿入行数を定数値50に設定し、エラーの行数を#DEMO.NbErrorsというODI変数から導出します。

InsertNumber=50

odiRef.setNbInsert(InsertNumber)

ErrorNumber=#DEMO.NbErrors

odiRef.setNbErrors(ErrorNumber)

B.2.78 setTableName()メソッド

ロード表または統合表の名前を設定するために使用します。

使用方法

public java.lang.Void setTableName(
java.lang.String pProperty,
java.lang.String pTableName)

説明

このメソッドは、ロードまたは統合に使用される一時表の名前を設定します。この名前は任意の値にすることができます。

メソッドの使用時には、ロード表または統合表の名前はODIによって生成されず、標準の命名規則には従いません(たとえば、ロード表に接頭辞C$は付けられません)。ただし、この表名を使用する他のメソッドでは、新しく設定された値が返されます。

最初のパラメータpPropertyは、設定される一時表の名前を示します。2番目のパラメータは、有効な任意の表名にすることができます。

パラメータ

パラメータ

型

説明

pProperty

文字列

設定する表名を示すパラメータ。可能な値のリストを次に示します。

- INT_SHORT_NAME: 統合表の名前

- COLL_SHORT_NAME: ロード表の名前

pTableName

文字列

一時表の新しい名前

例

<% odiRef.setTableName("COLL_SHORT_NAME", "C" + getInfo("I_SRC_SET")) %>

<% odiRef.setTableName("COLL_SHORT_NAME", odiRef.getOption("Flow # ") + odiRef.getTable("ID")) %>

B.2.79 setTaskName()メソッド

ナレッジ・モジュール、プロシージャまたはアクションでセッション・タスクの名前を設定します。

使用方法

public java.lang.String setTaskName(
java.lang.String taskName)

説明

このメソッドは、タスクの名前をtaskName値に設定します。この値はランタイムで設定されます。このメソッドは、すべてのナレッジ・モジュール、プロシージャおよびアクションで利用できます(グローバル・メソッド)。

パラメータ

パラメータ

型

説明

taskName

文字列

設定するタスク名を示すパラメータ。この値が空の場合、ナレッジ・モジュールまたはプロシージャのタスクに定義された値のまま変わりません。

例

<$=odiRef.setTaskName("Create Error Table " + "<%=odiRef.getTable("L","ERR_NAME","W")%>") $>
<$=odiRef.setTaskName("Insert Error for " + "<%=odiRef.getFK("FK_NAME")%>") $>
<$=odiRef.setTaskName("Loading " + "<%=odiRef.getTable("L", "COLL_NAME", "W")%>" + " from " + "<%=odiRef.getSrcTablesList("", "RES_NAME", ",", ".")%>" ) $>

C SNP_REV表のリファレンス

この付録ではOracle Data IntegratorのSNP_REV表について説明します。この表は設計時リポジトリに格納され、モデル・メタデータのステージング表として使用されます。

カスタマイズ・リバースエンジニアリング・プロセスでは、これらの表をロードしてから、モデルを記載するリポジトリ表にコンテンツが統合されます。

詳細は、リバースエンジニアリング戦略を参照してください。

この付録の内容は次のとおりです。

- SNP_REV_SUB_MODEL

- SNP_REV_TABLE

- SNP_REV_COL

- SNP_REV_KEY

- SNP_REV_KEY_COL

- SNP_REV_JOIN

- SNP_REV_JOIN_COL

- SNP_REV_COND

C.1 SNP_REV_SUB_MODEL

SNP_REV_SUB_MODELには、リバースエンジニアリング用のサブモデル階層が記載されます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

SMOD_CODE

varchar(35)

はい

サブモデルのコード

SMOD_NAME

varchar(400)

いいえ

サブモデルの名前

SMOD_PARENT_CODE

varchar(35)

いいえ

親サブモデルのコード

IND_INTEGRATION

varchar(1)

いいえ

非推奨。

TABLE_NAME_PATTERN

varchar(35)

いいえ

このサブモデル内でデータストアを分散するために使用する自動割当てマスク

REV_APPY_PATTERN

varchar(1)

いいえ

データストア分散規則:

- 0: 分散なし

- 1: サブモデルに存在しない全データストアの自動分散

- 2: 全データストアの自動分散

REV_PATTERN_ORDER

varchar(10)

いいえ

パターンを適用する順番

C.2 SNP_REV_TABLE

SNP_REV_TABLE には、リバースエンジニアリング用のデータストア(表、ビューなど)が記載されます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

TABLE_NAME

varchar(128)

はい

データストアの名前

RES_NAME

varchar(400)

いいえ

リソース名: 物理表またはファイルの名前

TABLE_ALIAS

varchar(128)

いいえ

デフォルトの別名

TABLE_TYPE

varchar(2)

いいえ

データストアの種類:

- T: 表またはファイル

- V: ビュー

- Q: キュー

- AT: 表の別名

- SY: シノニム

- ST: システム表

TABLE_DESC

varchar(250)

いいえ

データストアの説明

IND_SHOW

varchar(1)

いいえ

データストアの表示:

- 0: 非表示

- 1: 表示

R_COUNT

numeric(10)

いいえ

推定される行数

FILE_FORMAT

varchar(1)

いいえ

レコードの形式(ファイルおよびJMSメッセージのみに適用):

- D: デミリタ付きファイル

- F: 固定長ファイル

FILE_SEP_FIELD

varchar(24)

いいえ

フィールド・セパレータ(ファイルおよびJMSメッセージのみに適用)

FILE_ENC_FIELD

varchar(2)

いいえ

テキスト・デミリタ(ファイルおよびJMSメッセージのみに適用)

FILE_SEP_ROW

varchar(24)

いいえ

レコード・セパレータ(ファイルおよびJMSメッセージのみに適用)

FILE_FIRST_ROW

numeric(10)

いいえ

スキップするヘッダー・レコードの数(ファイルおよびJMSメッセージのみに適用)

FILE_DEC_SEP

varchar(1)

いいえ

ファイルの数値フィールドに使用するデフォルトの少数セパレータ(ファイルおよびJMSメッセージのみに適用)

SMOD_CODE

varchar(35)

いいえ

このデータストアを含むサブモデルのコード。値がない場合は、データストアはメイン・モデルにあります。

OLAP_TYPE

varchar(2)

いいえ

OLAPタイプ:

- DH : 緩やかに変化するディメンション

- DI : ディメンション

- FA : ファクト表

WS_NAME

varchar(400)

いいえ

データ・サービス名

WS_ENTITY_NAME

varchar(400)

いいえ

データ・サービス・エンティティ名

SUB_PARTITION_METH

varchar(1)

いいえ

パーティション化メソッド:

- H: ハッシュ

- R: レンジ

- L: リスト

PARTITION_METH

varchar(1)

いいえ

サブパーティション化メソッド:

- H: ハッシュ

- R: レンジ

- L: リスト

C.3 SNP_REV_COL

SNP_REV_COLには、リバースエンジニアリング用のデータストア属性がリストされます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

TABLE_NAME

varchar(128)

はい

データストアの名前

COL_NAME

varchar(128)

はい

属性名

COL_HEADING

varchar(128)

いいえ

属性の簡単な説明

COL_DESC

varchar(250)

いいえ

属性の詳細説明

DT_DRIVER

varchar(35)

いいえ

属性のデータ型。このデータ型は、このテクノロジのOracle Data Integratorトポロジで定義されたデータ型コードと一致する必要があります。

POS

numeric(10)

いいえ

属性の位置(ファイルの固定長属性には使用されない)

LONGC

numeric(10)

いいえ

属性の論理長(数値の精度)

SCALEC

numeric(10)

いいえ

属性の論理スケール

FILE_POS

numeric(10)

いいえ

属性の開始位置(固定長ファイルでのみ使用)

BYTES

numeric(10)

いいえ

ファイルから読み取る物理バイト数(表属性には使用されない)

IND_WRITE

varchar(1)

いいえ

1と0で、属性が書込み可能かどうかを示します。

COL_MANDATORY

varchar(1)

いいえ

1と0で、属性が必須かどうかを示します。

CHECK_FLOW

varchar(1)

いいえ

1と0で、必須の制約チェックを静的制御にデフォルトで含めるかどうかを示します。

CHECK_STAT

varchar(1)

いいえ

1と0で、必須の制約チェックを静的制御にデフォルトで含めるかどうかを示します。

COL_FORMAT

varchar(35)

いいえ

属性の形式。通常、このフィールドは日付書式を定義するファイルおよびJMSメッセージにのみ適用されます。

COL_DEC_SEP

varchar(1)

いいえ

属性の小数セパレータ(ファイルおよびJMSメッセージのみに適用)

REC_CODE_LIST

varchar(250)

いいえ

複数のレコード・ファイルをフィルタ処理するためのレコード・コード(ファイルおよびJMSメッセージのみに適用)

COL_NULL_IF_ERR

varchar(1)

いいえ

エラー発生時のこの属性の動作を指定:

- 0: エラーの拒否

- 1: エラーの場合はNull(非アクティブ・トレース)

- 2: エラーの場合はNull(アクティブ・トレース)

DEF_VALUE

varchar(100)

いいえ

この属性のデフォルト値

SCD_COL_TYPE

varchar(2)

いいえ

緩やかに変化するディメンションの種類:

- CR: 現在のレコード・フラグ

- ET: 終了日

- IR: 変更時に行を追加

- NK: ナチュラル・キー

- OC: 変更時に上書き

- SK: サロゲート・キー

- ST: 開始日

IND_WS_SELECT

varchar(2)

いいえ

0と1で、データ・サービスを使用してこの属性を選択可能かどうかを示します。

IND_WS_UPDATE

varchar(2)

いいえ

0と1で、データ・サービスを使用してこの属性を更新可能かどうかを示します。

IND_WS_INSERT

varchar(2)

いいえ

0と1で、データ・サービスを使用してこの属性にデータを挿入できるかどうかを示します。

C.4 SNP_REV_KEY

SNP_REV_KEYには、リバースエンジニアリング用の、データストアの主キー、代替キーおよび索引が記載されます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

TABLE_NAME

varchar(128)

はい

この制約を含むデータストアの名前

KEY_NAME

varchar(128)

はい

キーまたは索引の名前

CONS_TYPE

varchar(2)

はい

キーの種類:

- PK: 主キー

- AK: 代替キー

- I: 索引

IND_ACTIVE

varchar(1)

いいえ

0と1で、この制約がアクティブかどうかを示します。

CHECK_FLOW

varchar(1)

いいえ

1と0で、この制約チェックをフロー制御にデフォルトで含めるかどうかを示します。

CHECK_STAT

varchar(1)

いいえ

1と0で、この制約チェックを静的制御にデフォルトで含めるかどうかを示します。

C.5 SNP_REV_KEY_COL

SNP_REV_KEY_COLには、リバースエンジニアリング用の、主キー、代替キーおよび索引に含まれる属性がリストされます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

TABLE_NAME

varchar(128)

はい

この制約を含むデータストアの名前

KEY_NAME

varchar(128)

はい

キーまたは索引の名前

COL_NAME

varchar(128)

はい

キーまたは索引内の属性の名前

POS

numeric(10)

いいえ

キー内の属性の位置

C.6 SNP_REV_JOIN

SNP_REV_JOINには、リバースエンジニアリング用のデータストア参照(外部キー)が記載されます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

FK_NAME

varchar(128)

はい

参照(外部キー)の名前

TABLE_NAME

varchar(128)

はい

参照する表の名前

FK_TYPE

varchar(1)

いいえ

参照の種類:

- D: データベースの参照

- U: ユーザー定義の参照

- C: 複合のユーザー参照

PK_CATALOG

varchar(128)

いいえ

参照される表のカタログ(参照する表のカタログと異なる場合)

PK_SCHEMA

varchar(128)

いいえ

参照される表のスキーマ(参照する表のスキーマと異なる場合)

PK_TABLE_NAME

varchar(128)

いいえ

参照される表の名前

IND_ACTIVE

varchar(1)

いいえ

0と1で、この制約がアクティブかどうかを示します。

CHECK_FLOW

varchar(1)

いいえ

1と0で、この制約チェックをフロー制御にデフォルトで含めるかどうかを示します。

CHECK_STAT

varchar(1)

いいえ

1と0で、この制約チェックを静的制御にデフォルトで含めるかどうかを示します。

DEFER

varchar(1)

いいえ

遅延制約:

- D : 遅延可能

- I : 即時

- N: 遅延不可

このフィールドは使用されていない

UPD_RULE

varchar(1)

いいえ

更新時の動作:

- C: カスケード

- N: アクションなし

- R : 制限

- S : Nullの設定

DEL_RULE

varchar(1)

いいえ

削除時の動作:

- C: カスケード

- N: アクションなし

- R : 制限

- S : Nullの設定

C.7 SNP_REV_JOIN_COL

SNP_REV_JOIN_COLには、リバースエンジニアリング用の参照(外部キー)に含まれる一致属性がリストされます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

FK_NAME

varchar(128)

はい

参照(外部キー)の名前

FK_COL_NAME

varchar(128)

はい

参照する表内の属性の名前

FK_TABLE_NAME

varchar(128)

いいえ

参照する表の名前

PK_COL_NAME

varchar(128)

はい

参照される表内の属性の名前

PK_TABLE_NAME

varchar(128)

いいえ

参照される表の名前

POS

numeric(10)

いいえ

参照内の属性の位置

C.8 SNP_REV_COND

SNP_REV_CONDには、リバースエンジニアリング用のデータストアの条件およびフィルタが記載されます。

列

型

必須

説明

I_MOD

numeric(10)

はい

モデルID

TABLE_NAME

varchar(128)

はい

この制約を含むデータストアの名前

COND_NAME

varchar(128)

はい

条件またはチェックの制約の名前

COND_TYPE

varchar(1)

はい

条件の種類:

- C: Oracle Data Integratorの条件

- D: データベースの条件

- F: フィルタ

COND_SQL

varchar(250)

いいえ

この条件またはフィルタを適用するためのSQL式

COND_MESS

varchar(250)

いいえ

この条件のエラー・メッセージ

IND_ACTIVE

varchar(1)

いいえ

0と1で、この制約がアクティブかどうかを示します。

CHECK_FLOW

varchar(1)

いいえ

1と0で、この制約チェックをフロー制御にデフォルトで含めるかどうかを示します。

CHECK_STAT

varchar(1)

いいえ

1と0で、この制約チェックを静的制御にデフォルトで含めるかどうかを示します。

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。