XQUERY滚动窗口 用于翻转窗口$w英寸(2,4,6,8,10,12,14) fn:true()时从$s开始 当$e-$s等式2时,仅以$e结尾 返回{$w}

XQUERY滚动窗口 用于翻转窗口$w英寸(2,4,6,8,10,12,14) fn:true()时从$s开始 当$e-$s等式2时,仅以$e结尾 返回{$w},xquery,Xquery,上述查询的结果: 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> 246 8 10 12 有人能解释一下原因吗?为什么只有3个值,如何得到2 4 6或8 10 12?示例 <window>2 4 6</

上述查询的结果:

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>
246
8 10 12
有人能解释一下原因吗?为什么只有3个值,如何得到2 4 6或8 10 12?

示例

<window>2 4 6</window>
<window>8 10 12</window>
用于翻转窗口$w英寸(2,4,6,8,10,12,14)
fn:true()时从$s开始
当$e-$s等式2时,仅以$e结尾
返回{$w}
似乎直接取自规范,这对结果有很好的解释:

窗口是通过迭代绑定中的项来创建的 顺序,按顺序,标识项目的开始项和结束项 通过评估WindowsStartCondition和 WindowEndCondition。如果 when关键字后面表达式的有效布尔值 这是真的。窗口的开始项是满足以下条件的项: 窗口开始条件(参见3.10.4.1翻转窗口和3.10.4.2 滑动窗口以获得更完整的解释。)的结束项 窗口是绑定序列中的第一项,从 满足WindowEndCondition的开始项(再次参见3.10.4.1 滚动窗和3.10.4.2滑动窗,了解更多详细信息。)每个 窗口包含其开始项、结束项和所有出现的项 在它们之间的绑定序列

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

因此,当绑定序列为
2,4,6,8,10,12,14时,使用
定义的变量从$s开始
并且
仅在$e结束
是位置变量:

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

对于第一个项目
2
和第三个项目
6
,位置值
3-1
2
,因此第一个窗口包含
2,4,6
,然后,在位置
4
处搜索新窗口以
8
开始,在位置
6
处以
12
结束,因为
6-4
也是
2

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>