1

我需要使用 corb 来生成报告。

Data:
Collection A : Col1,Col2,Col3,Col4
Collecntion B: Col1,Col5,Col6,Col7
Collection C: Col1,Col8,Col9

Output Requirement: Col1,Col2,Col5,Col6,Col8

其中 Col1 在某种程度上是 Collections B,C 中的内部连接

我的uri.xqy样子是这样的:

(:Get the list from Col1 to join on all:)
let $listFromCol1 := cts:element-values(xs:QName("Col1"),(),(),cts:and-query(....))

let $A := cts:uris((),(),cts:and-query((cts:collection-query("A"),cts:element-range-query(xs:QName("Col1"),"=",$ListFromCol1)))
let $B := cts:uris((),(),cts:and-query((cts:collection-query("B"),cts:element-range-query(xs:QName("Col1"),"=",$ListFromCol1)))
let $C := cts:uris((),(),cts:and-query((cts:collection-query("C"),cts:element-range-query(xs:QName("Col1"),"=",$ListFromCol1)))

现在,我得到了各个集合的 URI。我需要将此传递给我process.xqy的 in return (count($uris), $uris)

我想知道如何获取所有 $A、$B、$C 的计数并连接 $A、$B、$C 的所有 URI。

请帮忙

4

1 回答 1

0

如果您有一组非常大的 URI,那么您可能需要启用DISK-QUEUE选项。

DISK-QUEUE=true将通过在接收和管理从 uris.xqy 返回的 URI 队列时允许 CORB 溢出到磁盘来避免内存不足异常,而不是将它们全部保存在内存中。

如果您需要在输出中获取一组不同的 URI,您可以在流程模块中返回所有候选 URI,并让 CORB 通过使用带有ExportBatchToFileTaskEXPORT-FILE-SORT=ascending|distinct的选项进行重复数据删除。

启用这些选项的示例属性:

DISK-QUEUE=true
EXPORT-FILE-NAME=/local/path/to/exportFile.txt
EXPORT-FILE-SORT=ascending|distinct
PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileT‌​ask
于 2017-04-08T12:30:34.607 回答