순서 기능
어떤 작업의 경우, 사건의 순서가 중요합니다.
이 앱을 사용하면 다음과 같은 기록 순서로 작업할 수 있습니다
- 시퀀스와 시계열
- 순서 기능
- 기록 색인화
- 평균, 합계, 값 비교
- 변화 모니터링 - 차별화
@SINCE- 오프셋 값
- 추가 순서 기능
많은 응용 프로그램에서 스트림을 통과하는 각 레코드는 다른 모든 레코드와 독립적인 개별 사례로 간주될 수 있습니다. 이런 상황에서는 기록의 순서가 중요하지 않습니다.
그러나 일부 문제 유형의 경우, 기록 순서가 매우 중요합니다. 이는 일반적으로 시계열 상황으로, 기록의 순서가 사건이나 발생의 순서대로 나열되어 있는 경우입니다. 각 기록은 특정 시점의 스냅샷을 나타냅니다. 그러나 가장 풍부한 정보의 대부분은 순간적인 값이 아니라 그러한 값이 시간에 따라 변화하고 행동하는 방식에 포함될 수 있습니다.
물론, 관련 변수는 시간 이외의 다른 것일 수도 있습니다. 예를 들어, 기록은 선을 따라 떨어진 거리에서 수행된 분석을 나타낼 수 있지만, 동일한 원칙이 적용됩니다.
순서와 특수 기능은 다음과 같은 특징으로 즉시 알아볼 수 있습니다
- 모두 앞에
@ - 해당 이름은 대문자로 제공됩니다.
시퀀스 기능은 노드가 현재 처리 중인 기록, 노드를 이미 통과한 기록, 심지어 노드를 아직 통과하지 않은 기록까지도 참조할 수 있습니다. 순서 함수는 CLEM 표현식의 다른 구성 요소와 자유롭게 혼합할 수 있지만, 일부는 인수로 사용할 수 있는 것에 제한이 있습니다.
예
특정 사건이 발생한 지 얼마나 되었는지 또는 특정 조건이 충족된 지 얼마나 되었는지 알고 싶을 때가 있을 수 있습니다. @SINCE 라는 기능을 사용하면 됩니다. 예를 들면 다음과 같습니다
@SINCE(Income > Outgoings)
이 기능은 이 조건이 참인 마지막 레코드의 오프셋, 즉 이 레코드 이전의 레코드 중 조건이 참인 레코드의 수를 반환합니다. 조건이 충족된 적이 없다면, @SINCE 는 @INDEX + 1 를 반환합니다.
@SINCE 에서 사용하는 표현식에서 현재 레코드의 값을 참조하고 싶을 때가 있습니다. @THIS 라는 기능을 사용하면, 필드 이름이 항상 현재 레코드에 적용되도록 지정할 수 있습니다. Concentration 필드 값이 현재 레코드의 두 배 이상인 마지막 레코드의 오프셋을 찾으려면 다음을 사용할 수 있습니다
@SINCE(Concentration > 2 * @THIS(Concentration))
@SINCE 에 주어진 조건이 정의상 현재 기록에 해당되는 경우도 있습니다. 예를 들면 다음과 같습니다
@SINCE(ID == @THIS(ID))
이런 이유로, @SINCE 는 현재 레코드의 조건을 평가하지 않습니다. 이전 레코드뿐만 아니라 현재 레코드의 조건도 평가하려면 유사한 기능인 @SINCE0 를 사용하십시오. 현재 레코드에서 조건이 참이면 @SINCE0 는 0 를 반환합니다.
| 함수 | 결과 | 설명 |
|---|---|---|
MEAN(FIELD) |
실수 | 지정된 FIELD 또는 FIELDS 의 값의 평균을 반환합니다. |
@MEAN(FIELD, EXPR) |
실수 | 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 평균을 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 평균이 반환됩니다. |
@MEAN(FIELD, EXPR, INT) |
실수 | 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 평균을 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 평균이 반환됩니다. INT는 뒤로 살펴볼 최대 값의 수를 지정합니다. 이는 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
@DIFF1(FIELD) |
실수 | FIELD의 첫 번째 차분을 반환합니다. 따라서 단일 인자 형식은 해당 필드의 현재 값과 이전 값의 차이를 반환합니다. 관련된 이전 레코드가 존재하지 않으면 $null$을 반환합니다. |
@DIFF1(FIELD1, FIELD2) |
실수 | 두 인자 형태는 첫 번째 미분을 FIELD1 ~에 관해 FIELD2. 관련된 이전 레코드가 존재하지 않으면 $null$을 반환합니다. @DIFF1(FIELD1)/@DIFF1(FIELD2) 로 계산됩니다. |
@DIFF2(FIELD) |
실수 | FIELD의 두 번째 차분을 반환합니다. 따라서 단일 인자 형식은 해당 필드의 현재 값과 이전 값의 차이를 반환합니다. 관련된 이전 레코드가 존재하지 않으면 $null$을 반환합니다. @DIFF2 @DIFF(@DIFF(FIELD)) 로 계산됩니다. |
@DIFF2(FIELD1, FIELD2) |
실수 | 두 인자 형식은 두 번째 차이의 FIELD1 ~에 관해 FIELD2. 관련된 이전 레코드가 존재하지 않으면 $null$을 반환합니다. 이것은 복잡한 계산입니다 -- @DIFF1(FIELD1)/@DIFF1(FIELD2) -
@OFFSET(@DIFF1(FIELD1),1)/@OFFSET(@DIFF1(FIELD2))) / @DIFF1(FIELD2). |
@INDEX |
정수 | 현재 기록의 색인을 반환합니다. 인덱스는 레코드가 현재 노드에 도착할 때 할당됩니다. 첫 번째 레코드의 인덱스는 1로 지정되고, 이후의 레코드마다 인덱스가 1씩 증가합니다. |
@LAST_NON_BLANK(FIELD) |
임의 | 업스트림 소스 또는 타입 노드에 정의된 대로 비어 있지 않은 FIELD의 마지막 값을 반환합니다. 지금까지 읽은 레코드에 FIELD에 대한 비어 있지 않은 값이 없으면, $null$ 가 반환됩니다. 사용자가 누락한 값이라고도 하는 빈 값은 각 필드에 대해 개별적으로 정의할 수 있습니다. |
@MAX(FIELD) |
숫자 | 지정된 필드에 대한 최대값을 반환합니다. |
@MAX(FIELD, EXPR) |
숫자 | 현재 레코드를 포함하여 지금까지 받은 EXPR 레코드 에 대한 FIELD의 최대값을 반환합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. |
@MAX(FIELD, EXPR, INT) |
숫자 | 현재 레코드를 포함하여 지금까지 수신한 마지막 EXPR 레코드에 대한 FIELD의 최대값을 반환합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 최대값이 반환됩니다. INT는 뒤로 살펴볼 최대 값의 수를 지정합니다. 이는 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
@MIN(FIELD) |
숫자 | 지정된 FIELD의 최소값을 반환합니다. |
@MIN(FIELD, EXPR) |
숫자 | 현재 레코드를 포함하여 지금까지 받은 EXPR 레코드에 대한 FIELD의 최소값을 반환합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. |
@MIN(FIELD, EXPR, INT) |
숫자 | 현재 레코드를 포함하여 지금까지 받은 EXPR 레코드에 대한 FIELD의 최소값을 반환합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 최소값이 반환됩니다. INT는 되돌아볼 값의 최대 개수를 지정합니다. 이는 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
@OFFSET(FIELD, EXPR) |
임의 | 현재 레코드에서 EXPR의 값 만큼 오프셋된 레코드의 FIELD 값을 반환합니다. 긍정적 오프셋은 이미 지나간 기록("룩백")을 의미하는 반면, 부정적 오프셋은 아직 도착하지 않은 기록에 대한 "룩어헤드"를 나타냅니다. 예를 들어, @OFFSET(Status, 1) 는 이전 레코드의 Status 필드 값을 반환하는 반면, @OFFSET(Status, –4) 는 시퀀스에서 네 개의 레코드(즉, 이 노드를 아직 통과하지 않은 레코드)를 "미리" 확인하여 값을 얻습니다. 음수(미리 보기) 오프셋은 상수로 지정해야 합니다. 긍정적인 오프셋의 경우에만, EXPR은 임의의 CLEM 표현식일 수도 있습니다. 이 표현식은 현재 레코드에 대해 평가되어 오프셋을 제공합니다. 이 경우, 이 함수의 3인자 버전이 성능을 향상시킬 것입니다(다음 함수 참조). 이 표현식이 음수가 아닌 정수가 아닌 다른 값을 반환하면 오류가 발생합니다. 즉, 계산된 룩어헤드 오프셋을 갖는 것은 허용되지 않습니다. 자기 참조적 함수( @OFFSET )는 리터럴 룩어헤드를 사용할 수 없다는 점에 유의하십시오. 예를 들어, Filler 노드에서 field1 값을 @OFFSET(field1,-2) 와 같은 표현식으로 대체할 수 없습니다. 필러 노드에서 필드를 채울 때, 해당 필드에는 사실상 두 가지 다른 값, 즉 미리 채워진 값과 나중에 채워진 값이 있습니다. @OFFSET 가 자신을 언급할 때는 입력된 값을 의미합니다. 이 포스트 필드 값은 과거 행에만 존재하므로, 자기 참조 @OFFSET 는 과거 행만 참조할 수 있습니다. 자기 참조 참조 가능 변수( @OFFSET )는 미래를 참조할 수 없기 때문에 오프셋에 대한 다음 검사를 수행합니다
|
@OFFSET(FIELD, EXPR, INT) |
임의 | 참조할 최대 값 수를 지정하는 세 번째 인수 INT를 추가하여 @OFFSET 함수와 동일한 조작을 수행합니다. 오프셋이 표현식에서 계산되는 경우, 이 세 번째 인수는 성능을 향상시켜야 합니다. 예를 들어, "@OFFSET(Foo, Month, 12)"와 같은 표현의 경우, 시스템은 " Foo"의 마지막 12개 값만 유지하도록 알고 있습니다. 그렇지 않으면, 만일의 경우를 대비하여 모든 값을 저장해야 합니다. 오프셋 값이 상수인 경우(상수여야 하는 음의 "lookahead" 오프셋 포함)에는 세 번째 인수가 무의미하므로 이 함수의 두 번째 인자 버전을 사용해야 합니다. 앞서 설명한 두 인자 버전의 자기 참조 함수에 대한 참고 사항도 참조하십시오. 한 노드 내에서 "lookahead"와 "lookback"을 함께 사용하는 것은 지원되지 않습니다. |
@SDEV(FIELD) |
실수 | 지정된 필드 또는 필드들의 값의 표준 편차를 반환합니다. |
@SDEV(FIELD, EXPR) |
실수 | 현재 노드가 받은 마지막 EXPR 레코드에 대한 FIELD 값의 표준 편차를 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 표준 편차가 반환됩니다. |
@SDEV(FIELD, EXPR, INT) |
실수 | 현재 노드가 받은 마지막 EXPR 레코드에 대한 FIELD 값의 표준 편차를 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 표준 편차가 반환됩니다. INT는 뒤로 살펴볼 최대 값의 수를 지정합니다. 이는 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
@SINCE(EXPR) |
임의 | 임의의 CLEM 표현식 인 EXPR이 참이었던 이후로 경과한 레코드 수를 반환합니다. |
@SINCE(EXPR, INT) |
임의 | 두 번째 인수 INT를 추가하면, 뒤로 살펴볼 최대 레코드 수를 지정할 수 있습니다. EXPR이 참이 아니었던 경우, INT 는 @INDEX+1 입니다. |
@SINCE0(EXPR) |
임의 | 현재 레코드를 고려하는 반면, @SINCE 는 그렇지 않습니다. @SINCE0 는 현재 레코드에 대해 EXPR 이 true인 경우 0을 리턴합니다. |
@SINCE0(EXPR, INT) |
임의 | 두 번째 인자 INT를 추가하면, 뒤로 살펴볼 최대 레코드 수를 지정할 수 있습니다. |
@SUM(FIELD) |
숫자 | 지정된 FIELD 또는 FIELDS 의 값의 합계를 반환합니다. |
@SUM(FIELD, EXPR) |
숫자 | 현재 노드가 받은 마지막 EXPR 레코드에 대한 FIELD 값의 합계를 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 합계가 반환됩니다. |
@SUM(FIELD, EXPR, INT) |
숫자 | 현재 노드가 받은 마지막 EXPR 레코드에 대한 FIELD 값의 합계를 반환합니다. 여기에는 현재 레코드도 포함됩니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 모든 표현일 수 있습니다. EXPR이 생략되거나 지금까지 받은 레코드 수를 초과하는 경우, 지금까지 받은 모든 레코드에 대한 합계가 반환됩니다. INT는 뒤로 살펴볼 최대 값의 수를 지정합니다. 이는 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
@THIS(FIELD) |
임의 | 현재 레코드에 있는 FIELD라는 필드의 값을 반환합니다. @SINCE 표현에서만 사용됩니다. |