管理対象属性スキーマのロード

ここでは、管理対象属性スキーマを作成するためにディメンション詳細レコード(DDR)をロードするグラフの実装の詳細を説明します。

管理対象属性スキーマをロードするには、CSVベースの構成グラフを使用します。「CSVベースの構成グラフ」を参照してください。

入力ファイル

ディメンション詳細レコード(DDR)は、関連付けられた標準属性と同じ名前を持ちます。これは、標準属性値の階層を作成するために使用されます。入力ファイルは、次の図のようなものです。

DDR入力ファイルの例。このファイルの詳細は、本文で説明しています。
サンプル・ファイルの1行目は、入力ファイルで定義されたプロパティを指定するヘッダー行です。この例では、次のプロパティが定義されています。
Key,Refinement,DimSearch,RecHierarchy

これらのプロパティの名前は任意です。入力ファイルでは、選択する様々な名前を使用できます(たとえば、KeyではなくAttrNameを使用してもかまいません)。各プロパティは、たとえばCSVファイルのカンマ、テキスト・ファイルのパイプ文字などによって区切られます。

この例では、ヘッダー・プロパティは次のDDRプロパティにマップします。
入力ヘッダー・プロパティ PDRプロパティへのマップ
Key mdex-dimension_Key
Refinement mdex-dimension_EnableRefinements
DimHierarchy mdex-dimension_IsDimensionSearchHierarchical
RecHierarchy mdex-dimension_IsRecordSearchHierarchical

管理対象属性Transformer

構成グラフでは、、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の両方のパフォーマンスが向上します。

Webサービス リクエスト

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コンポーネントに追加されます。