【问题标题】:marklogic need advise for approach to aggregate documentsmarklogic 需要建议聚合文档的方法
【发布时间】:2014-05-24 16:00:21
【问题描述】:

大家好,MarkLogicians,

编辑见下文

我面临以下挑战: 我有来自平面关系表的社会人口统计邮政编码数据。 根据良好实践,我每行创建一个文档。 doc(row) 包含大约 400 个值,分为 7 类 40 个变量,每个变量有 4 到 7 个段。

<doc  id=1011AB >
 <cat>
   <var>
      <seg>
          25
      </seg>
   </var>
 </cat>
</doc>

有 500.000 个这样的文档,我们需要将 6 位级别聚合到更高的邮政编码级别(4 位)大约 40.000 个文档。

我们有用于为每个文档聚合一个段的工作代码。现在我正在寻找一种将 6 位级别聚合到 4 位级别的解决方案。聚合基本上是加权平均值的计算。

我的问题: 是否有一个优雅的为什么将 6 位级别的文档作为模板并填写它,还是我需要从头开始构建 4 位级别的文档?

=============== 编辑 ====================

好的,现在我有一张地图,我们在其中创建了一个连接键,例如

<map:map xmlns:map="http://marklogic.com/xdmp/map" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<map:entry key="Consumententypes (sub):::Type 6, gezin met jongste kind 6+::: gezin met jongste kind 6+">
<map:value xsi:type="xs:double">
0
</map:value>
</map:entry>
<map:entry key="Woning:::Woontype:::De Veelbelovende Starter">
<map:value xsi:type="xs:double">
7.48
</map:value>
</map:entry>

每个键都有对应的值。

我想根据分解键重新创建文档 将“category:::variable:::segment”添加到上述结构中,并将 map:value 添加为元素值。

问题:构建文档的最佳方式是什么?我是创建一个节点,用元素填充它,然后在 ML 中插入它,还是我制作一个空文档并在进行过程中添加东西(似乎不是那么快)

雨果

【问题讨论】:

  • 不确定我是否关注您的问题。更多细节和/或示例可能会有所帮助...

标签: aggregate-functions aggregate marklogic


【解决方案1】:

对于单线程方法,我将首先创建一个映射,其中键是六位代码,值是段。您可以使用 http://docs.marklogic.com/cts:value-co-occurrencesmap 选项来执行此操作。取决于可能意味着每个类别或变量或段一个 cts:value-co-occurrences 调用的详细信息。我含糊其辞,因为我看不出它们在您的用例中是如何组合在一起的。

获得六位数地图后,请使用它们构建四位数地图。这意味着循环遍历六位键并将新值推送到四位映射中。然后,您就可以将四位数映射序列化为新的 XML 文档了。如果您的四位地图条目的结构接近最终的 XML 格式,那应该很容易。编写一个简单的 XQuery 函数,该函数接受一个四位数的地图和一个代码,然后插入新文档。

您可能还会考虑使用任务服务器的并发性。您可以从词典中读取所有六位数代码,启动任务,每个任务处理对应于 N 个四位数代码的六位数代码。正确完成应该比一张巨型地图更快。重要的是要避免任务之间的四位代码有任何重叠,这样您在插入新的四位文档时就不会发生锁争用。

【讨论】:

  • 感谢您的回复,所以地图是键值存储对象,对吗?有没有办法在地图中保留 6ppc 对象的结构?像地图地图或类似的东西?记得我需要保留一个段属于哪个类别和哪个变量,所以只有在段上构建地图会失去前者的权利?
  • 这取决于你。映射键是一个字符串,但值是 item()* per docs.marklogic.com/map:put
猜你喜欢
  • 2019-11-06
  • 2017-10-19
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多