【问题标题】:MarkLogic XqueryMarkLogic Xquery
【发布时间】:2017-04-06 10:31:53
【问题描述】:

我需要使用 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 在某种程度上是集合 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 return (count($uris), $uris)。

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

请帮忙

【问题讨论】:

  • 您想要遍历 Col1 值,而不是 uri。 Corb 是否允许您像返回 uris 一样返回 Col1 值?然后,如果您在 col1 上执行 cts:search,您将一次性获得与该记录相关的所有文档,并可以构建您的报告所需的记录。否则它会变得有点复杂..
  • 你试过了吗? ;-)
  • 您只是想要一个不同的 URI 列表,这些 URI 在 $A、$B、$C 中?为什么不将它们与cts:collection-query() 中指定的每个集合组合成一个查询?像这样:cts:uris((),(),cts:and-query((cts:collection-query( ("A", "B", "C") ),cts:element-range-query(xs:QName("Col1"),"=",$ListFromCol1)))
  • 另外,如果您有成千上万个 URI,您可能还需要启用 DISK-QUEUE 选项,以避免耗尽您的 JVM 内存。
  • 听起来你有一个解决方案 -- @MadsHansen,你能把它写下来作为答案,以便人们很容易看到这个问题已经解决了吗?

标签: marklogic marklogic-corb


【解决方案1】:

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

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

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

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

DISK-QUEUE=true
EXPORT-FILE-NAME=/local/path/to/exportFile.txt
EXPORT-FILE-SORT=ascending|distinct
PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileT‌​ask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多