XQUERY翻滚窗口

时间:2016-11-21 17:40:44

标签: xquery

 load: function() {
      var chart = this,
        points = this.series[0].data;

      points.forEach(function(point) {
        chart.xAxis[0].ticks[point.x].label.on('click', function() {
          if (point.y === null) {
            point.update({
              y: point.holdY
            });
          }
        });
      });
    }

以上查询的结果:

for tumbling window $w in (2, 4, 6, 8, 10, 12, 14)
    start at $s when fn:true()
    only end at $e when $e - $s eq 2
return <window>{ $w }</window>

有人可以解释为什么它&lt; 2 4 6&gt;,&lt; 8 10 12&gt; ?为什么只有3个值&lt; 2 4 6&gt;,&lt; 8 10 12&gt;,以及如何获得2 4 6或8 10 12?

1 个答案:

答案 0 :(得分:4)

示例

for tumbling window $w in (2, 4, 6, 8, 10, 12, 14)
    start at $s when fn:true()
    only end at $e when $e - $s eq 2
return <window>{ $w }</window>

似乎直接来自规范https://www.w3.org/TR/xquery-30/#id-tumbling-windows,并且对结果有一些很好的解释:

  

通过迭代绑定中的项目来创建Windows   序列,按顺序,识别开始项目和结束项目   通过评估WindowStartCondition和每个窗口   WindowEndCondition。如果满足以下条件,则满足这些条件   when关键字后面的表达式的有效布尔值   是真的。窗口的开始项是满足的项   WindowStartCondition(参见3.10.4.1翻滚Windows和3.10.4.2   滑动Windows以获得更完整的解释。)最终项目   window是绑定序列中的第一项,以。开头   开始项,满足WindowEndCondition(再次参见3.10.4.1   翻滚Windows和3.10.4.2滑动Windows以获取更多详细信息。)每个   窗口包含其开始项目,最终项目以及发生的所有项目   它们之间的结合序列。

     

如果窗口类型翻滚,则窗口永远不会重叠。搜索   从第一个窗口的开始开始   结合序列。生成每个窗口后,搜索到   下一个窗口的开始以绑定序列中的项开始   在最后生成的窗口的结束项之后发生。从而,   在一个窗口中出现的项目不会出现在另一个窗口中   来自相同的结合序列(除非序列包含相同的序列)   项目不止一次)。

因此,绑定序列为2, 4, 6, 8, 10, 12, 14时,使用start at $sonly end at $e定义的变量是位置的:

  

开始项目位置:(可选)绑定到的序号位置   绑定序列中的第一个窗口项。开始项目位置是一个   位置变量;因此,它的类型是xs:integer End-item-position:   (可选)绑定到最后一个窗口项的序号位置   结合序列。结束项目位置是位置变量;   因此,它的类型是xs:integer

对于第一项2和第三项6,位置值3 - 12,因此第一个窗口包含2, 4, 6,然后搜索对于新窗口,8位于412位于66 - 4也是2