ここでは、管理対象属性スキーマを作成するためにディメンション詳細レコード(DDR)をロードするグラフの実装の詳細を説明します。
管理対象属性スキーマをロードするには、CSVベースの構成グラフを使用します。「CSVベースの構成グラフ」を参照してください。
ディメンション詳細レコード(DDR)は、関連付けられた標準属性と同じ名前を持ちます。これは、標準属性値の階層を作成するために使用されます。入力ファイルは、次の図のようなものです。
Key,Refinement,DimSearch,RecHierarchy
これらのプロパティの名前は任意です。入力ファイルでは、選択する様々な名前を使用できます(たとえば、KeyではなくAttrNameを使用してもかまいません)。各プロパティは、たとえばCSVファイルのカンマ、テキスト・ファイルのパイプ文字などによって区切られます。
入力ヘッダー・プロパティ | PDRプロパティへのマップ |
---|---|
Key | mdex-dimension_Key |
Refinement | mdex-dimension_EnableRefinements |
DimHierarchy | mdex-dimension_IsDimensionSearchHierarchical |
RecHierarchy | mdex-dimension_IsRecordSearchHierarchical |
構成グラフでは、、Transformerコンポーネントを使用して、標準属性スキーマを定義するためにサーバーに送信するXMLを作成します。XMLは、DDRセット(<mdex:record>)から構成され、各DDRは属性プロパティ(たとえば、<mdex-dimension_EnableRefinements>、<mdex-dimension_IsDimensionSearchHierarchical>、<mdex-dimension_IsRecordSearchHierarchical>など)から構成されます。
次のコードは、前記の入力ファイルからXMLを作成します。
//#CTL2 integer n = 1; integer aggrKey = 0; // Transforms input record into output record. function integer transform() { string maBool = ""; string maRecord = "<mdex:record xmlns=\"\">"; maRecord = maRecord + "<mdex-dimension_Key>" + $0.Key + "</mdex-dimension_Key>"; // Make sure to lower case the booleans in the CSV file maBool = lowerCase($0.Refinement); maRecord = maRecord + "<mdex-dimension_EnableRefinements>" + maBool + "</mdex-dimension_EnableRefinements>"; maBool = lowerCase($0.DimHierarchy); maRecord = maRecord + "<mdex-dimension_IsDimensionSearchHierarchical>" + maBool + "</mdex-dimension_IsDimensionSearchHierarchical>"; maBool = lowerCase($0.RecHierarchy); maRecord = maRecord + "<mdex-dimension_IsRecordSearchHierarchical>" + maBool + "</mdex-dimension_IsRecordSearchHierarchical>"; $0.xmlString = maRecord + "</mdex:record>"; // Batch up the web service requests. $0.singleAggregationKey = aggrKey; n++; if (n % 15 == 0) { aggrKey++; } return ALL; }
まず、このコードは2つの整数変数を(第1の変数はループ・カウンタとして、第2の変数は集約キー(aggKey)として)定義します。
次に、transform()関数が、<mdex:record>コンテナを作成し、<mdex-dimension_EnableRefinements>、<mdex-dimension_IsDimensionSearchHierarchical>および<mdex-dimension_IsRecordSearchHierarchical>ノードを追加することによりDDRを作成します。各ノードの値は、入力ファイルの対応する値から導出されます。
入力ファイルの例では、すべての値が大文字で指定されていることに注意してください。これらの値は、XMLに追加する前に小文字に変換します。
最後に、レコードはサーバーへの送信のために15のバッチにグループ化されます。バッチで送信することにより、グラフ内のすべてのコンポーネントを通じて連続的な処理ストリームが保証され、Integrator ETLとEndeca Serverの両方のパフォーマンスが向上します。
Endeca ServerにDDR構成をロードするには、構成WebサービスのupdateDimensions操作を使用します。次のコードは、DDRをロードするための一般的なupdateProperties操作を示しています。
<config-service:configTransaction xmlns:config-service="http://www.endeca.com/MDEX/config/services/types/3/0"> <config-service:OuterTransactionId>${OUTER_TRANSACTION_ID}</config-service:OuterTransactionID> <config-service:updateDimensions xmlns:mdex="http://www.endeca.com/MDEX/XQuery/2009/09"> $xmlString </config-service:updateDimensions> </config-service:configTransaction>
この例には、次の2つの変数が含まれます。
OUTER_TRANSACTION_ID
この変数は、リクエストの外部トランザクションIDを指定します。変数とその値は、Integrator ETLプロジェクトのworkspace.prmファイルに格納されます。
$xmlString
この変数には、グラフ内のReformatコンポーネントによって構築されたPDRが含まれます。
このコードは、構成グラフ内のWeb Services Clientコンポーネントに追加されます。