2016-11-21 1 views
1
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> 

결과 :XQUERY 쏟아 질 창 위의 쿼리의

<window>2 4 6</window> 
<window>8 10 12</window> 

누군가가 설명 할 수는 왜 그것을 < 2 4 6>, < 8 10 12>? 왜 단지 3 개의 값이 < 2 4 6>, < 8 10 12>인지, 어떻게 2 4 6이나 8 10 12를 얻는가?

답변

3

예는

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에서 직접 촬영 한 것으로 보인다 및 그 결과의 좋은 설명이 있습니다

의 창문 바인딩의 항목 반복에 의해 만들어집니다 순서에 따라 WindowStartCondition 및 WindowEndCondition을 평가하여 각 창의 시작 항목과 끝 항목을 으로 식별합니다. when 키워드 다음에 오는 표현식의 유효 부울 값이 참일 경우, 이들 조건은 모두 충족됩니다. 창의 시작 항목은 WindowStartCondition (자세한 내용은 3.10.4.1 Windows 텀블링 및 3.10.4.2 슬라이딩 창 참조)을 만족하는 항목입니다. 창의 마지막 항목은 바인딩 시퀀스의 첫 번째 항목입니다 , 시작 항목으로 시작하여 WindowEndCondition을 만족하는 창 (자세한 내용은 3.10.4.1 창 축소 및 자세한 내용은 3.10.4.2 슬라이딩 창을 참조하십시오.) 각 창에는 시작 항목, 종료 항목 및 발생하는 모든 항목 사이에 바인딩 시퀀스.

창 유형이 텀블러 인 경우 창은 겹치지 않습니다. 첫 번째 창 시작에 대한 검색은 바인딩 시퀀스의 시작 부분에서 시작됩니다. 각 창이 생성 된 후 다음 창 시작은 마지막으로 생성 된 창의 끝 항목 뒤에 오는 바인딩 순서의 항목으로 시작됩니다. 따라서 하나의 창에서 발생하는 항목은 동일한 바인딩 시퀀스의 으로 그려진 다른 창에서 나타날 수 있습니다 (시퀀스에 동일한 개 항목이 두 번 이상 포함되지 않은 경우 제외). 바인딩 시퀀스 2, 4, 6, 8, 10, 12, 14 인 너무

start at $sonly end at $e를 사용하여 정의 된 변수 위치이다 :

시작 항목 위치 (옵션) 제 창의 항목의 순서 위치 바운드 바인딩 순서 시작 - 항목 - 위치는 위치 변수입니다. 따라서 유형은 xs : integer입니다. 마지막 항목 위치 : (선택 사항) 의 마지막 창 항목의 서수 위치에 바인딩됩니다.최종 항목 위치는 위치 변수입니다. 그러므로, 그 유형이 xs : 정수

상기 제 항목 2 세 번째 항목 6 위치 값 3 - 12는 상기 제 1 윈도우는 다음 새로운 윈도우를위한 검색에서 8로 시작 2, 4, 6 포함되어있다 위치 4이고, 위치가 612으로 끝나며 6 - 42입니다.