1

我对 MarkLogic 很陌生,我不确定如何最好地应对我现在面临的挑战。

我有一个从将被摄取到 MarkLogic 数据库的表中导出的 CSV 文件。现在源表使用 4 列作为其唯一的主键组合。

在 MarkLogic 中,默认情况下,CSV 文件中只有一列可以用作 URI ID。

我的问题是,在 MarkLogic 中提取数据期间是否可以使用 CSV 文件中的多于 1 列作为 URI ID?如果是,此功能或设置在数据中心是否可用?如果不可能,那么 MarkLogic 中的最佳实践通常是什么?

我知道一种可能的解决方法是创建一个新列,结合来自 4 个主键列的数据并将其用作 URI ID。

4

1 回答 1

3

您可以使用MLCP 转换来转换内容值和 uri。它得到一个包含两者的哈希对象 $content。根据需要更新其值,并返回更新后的哈希对象。就像是:

declare function example:transform(
  $content as map:map,
  $context as map:map
) as map:map*
{
  let $record := map:get($content, "value")
  let $uri := $record/prop1 || $record/prop2 || $record/prop3 
  let $_ := map:put($content, "uri", $uri)
  return $content
};

您也可以在 marklogic-data-hub 中使用此类 MLCP 转换。

于 2018-03-01T11:05:31.017 回答