カスタムマッピング関数の作成

マッピングを手作業で作成する場合、最初にソースデータセットを読み込んでおく必要はありません(しかしどのようなソースフィールドがあるのかは把握しておく必要があります)。

始める前に

以下が必要です。

このタスクについて

このタスクでは、自分のマッピング定義で使用するためのカスタムのマッピング関数を作成してアップロードします。

手順

  1. 有効なJavaScriptスクリプト(.sjs)およびモジュール(.mjs)、有効なXQueryスクリプト(.xqy)のいずれかを作成します。

    このファイルは必ずyour-project-root/src/main/ml-modules/root/custom-modules/mapping-functionsディレクトリに格納してください。

    注:
    • JavaScriptスクリプト(.sjs)およびXQueryスクリプト(.xqy)では、MarkLogicサーバー9.0-10以降が必要です。
    • JavaScriptモジュール(.mjs)では、MarkLogicサーバー10.0-2以降が必要です。
       'use strict';
    
      function removeHyphens(val) {
        return val.replace("-", "");
      }
    
      module.exports = {
        removeHyphens
      }
    
       xquery version "1.0-ml";
    
      module namespace custom = "http://marklogic.com/mapping-functions/custom";
    
      declare function remove-hyphens($val as xs:string?) as xs:string? 
      {
        fn:replace($val, "-", "")
      };
    
  2. mlLoadModulesを実行します。
    ./gradlew mlLoadModules -igradlew.bat mlLoadModules -i
    スクリプトやモジュール内の関数は、マッピングに使用されるXSLTテンプレートにコンパイルされます。

次のタスク

  • QuickStartを使う場合
    1. カスタム関数を使用したいマッピングステップを開きます。
    2. ステップの詳細パネルで、カスタム関数の名前を入力するか、f(x)ドロップダウンリストから選択します。
  • フローを手作業で編集する場合
    1. マッピング定義ファイル内で、エンティティプロパティノードのsourcedFrom値に自分のカスタム関数を使用します。
         {
          "name" : "MyFlow-MyMappingStep",
          ...
          "properties" : {
            "my-entity-property": {
              "sourcedFrom": "MyCustomFunction( my-source-field-X )"
            }
            ...
          }
        }
      
    2. 必要であれば、フロー定義ファイル内で、マッピングステップのマッピング定義を更新します。
         "steps" : {
          ...
          "2" : {
            "name" : "MyMappingStep",
            ...
            "options" : {
              ...
              "mapping" : {
                "name" : "MyFlow-MyMappingStep",
              },
              ...
            },
            ...
          }
        }