시퀀스 함수
일부 연산의 경우 이벤트 시퀀스가 중요합니다.
애플리케이션을 통해 다음 레코드 시퀀스에 대한 작업을 할 수 있습니다.
- 시퀀스 및 시계열
- 시퀀스 함수
- 레코드 색인화
- 값 평균, 합계 및 비교
- 변화 모니터링-구별
@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
함수 | 결과 | 설명 |
---|---|---|
|
실수 | 지정된 FIELD 또는 FIELDS 값의 평균을 리턴합니다. |
|
실수 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 평균을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 평균이 리턴됩니다. |
|
실수 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 평균을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 평균이 리턴됩니다. INT는 되돌아볼 값의 최대 수를 지정합니다. 이는 단지 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
|
실수 | FIELD의 첫 번째 미분을 리턴합니다. 따라서 단일 인수 양식은 필드의 현재 값과 이전 값 간의 차이만 리턴합니다. 관련된 이전 레코드가 없으면 $null$을 리턴합니다. |
|
실수 | 이 2인수 양식은 FIELD2와 관련하여 FIELD1의 첫 번째 미분을 제공합니다. 관련된 이전 레코드가 없으면 $null$을 리턴합니다. 로 계산됩니다. |
|
실수 | FIELD의 두 번째 미분을 리턴합니다. 따라서 단일 인수 양식은 필드의 현재 값과 이전 값 간의 차이만 리턴합니다. 관련된 이전 레코드가 없으면 $null$을 리턴합니다. 는 로 계산됩니다. |
|
실수 | 이 2인수 양식은 FIELD2와 관련하여 FIELD1의 두 번째 미분을 제공합니다. 관련된 이전 레코드가 없으면 $null$을 리턴합니다. 이는 복합적인 계산입니다. -- . |
|
정수 | 현재 레코드의 지수를 리턴합니다. 지수는 현재 노드에 도착하면 레코드에 할당됩니다. 첫 번째 레코드에는 지수 1이 부여되며 지수는 각각의 후속 레코드에 대해 1씩 증분됩니다. |
|
모두 | 업스트림 소스 또는 유형 노드에 정의된 대로 공백이 아닌 FIELD의 마지막 값을 리턴합니다. 지금까지 읽은 레코드에 공백이 아닌 FIELD 값이 없으면 이 리턴됩니다. 사용자 결측값이라고도 하는 공백값을 각 필드에 대해 개별적으로 정의할 수 있습니다. |
|
숫자 | 지정된 FIELD의 최대값을 리턴합니다. |
|
숫자 | 현재 레코드를 포함하여 지금까지 수신된 마지막 EXPR 레코드에 대한 FIELD 최대값을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. |
|
숫자 | 현재 레코드를 포함하여 지금까지 수신된 마지막 EXPR 레코드에 대한 FIELD 최대값을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 최댓값이 리턴됩니다. INT는 되돌아볼 값의 최대 수를 지정합니다. 이는 단지 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
|
숫자 | 지정된 FIELD의 최소값을 리턴합니다. |
|
숫자 | 현재 레코드를 포함하여 지금까지 수신된 마지막 EXPR 레코드에 대한 FIELD 최소값을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. |
|
숫자 | 현재 레코드를 포함하여 지금까지 수신된 마지막 EXPR 레코드에 대한 FIELD 최소값을 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 최솟값이 리턴됩니다. INT는 되돌아볼 값의 최대 수를 지정합니다. 이는 단지 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
|
모두 | EXPR 값으로 현재 레코드의 레코드 오프셋에 있는 FIELD 값을 리턴합니다. 양수 오프셋은 이미 전달한("되돌아보기") 레코드를 참조하는 반면, 음수 오프셋은 도착해야 하는 레코드에 "미리보기"를 지정합니다. 예를 들어, 은 이전 레코드의 필드 값을 리턴하는 반면, 는 값을 획득하기 위해 시퀀스에서 4개의 레코드(즉, 아직 이 노드를 통과하지 못한 레코드)를 "미리봅니다". 음수(미리보기) 오프셋을 상수로 지정해야 합니다. 양수 오프셋의 경우에만 EXPR은 오프셋을 제공하기 위해 현재 레코드에 대해 평가되는 임의의 CLEM 표현식이기도 합니다. 이 경우, 이 함수의 3인수 버전은 성능을 향상시켜야 합니다(다음 함수 참조). 표현식이 음수가 아닌 정수 이외의 것을 리턴하는 경우 이로 인해 오류가 발생합니다. 즉, 계산된 미리보기 오프셋을 갖는 것이 올바르지 않습니다. 자체 참조 함수는 리터럴 미리보기를 사용할 수 없습니다. 예를 들어, 채움 노드에서 와 같은 표현식을 사용하여 의 값을 대체할 수 없습니다. 채움 노드에서 필드를 채울 때 유효한 두 개의 다른 해당 필드 값 즉, 사전에 채워진 값과 사후 채워진 값이 있습니다. 이 자체를 참조할 때는 사후 채원진 값을 참조합니다. 사후 채워진 이 값은 과거 행에 대해서만 존재하므로 자기 참조 은 과거 행만 참조할 수 있습니다. 자체 참조 는 미래를 참조할 수 없으므로 오프셋의 다음 검사를 수행합니다.
|
|
모두 | 참조할 최대 값 수를 지정하는 세 번째 인수 INT를 추가하여 함수와 동일한 조작을 수행합니다. 오프셋이 표현식에서 계산되는 경우 이 세 번째 인수는 성능을 향상시켜야 합니다. 예를 들어, 와 같은 표현식에서 시스템은 의 마지막 12개 값만 유지하도록 알고 있습니다. 그렇지 않으면 만약을 위해 모든 값을 저장해야 합니다. 오프셋 값이 음수의 "미리보기" 오프셋(상수여야 함)을 포함하여 상수인 경우 세 번째 인수는 무의미하며 이 함수의 2인수 버전을 사용해야 합니다. 앞서 설명한 2인수 버전의 자기 참조 함수에 대한 참고도 참조하십시오. 한 노드 내에서 "미리보기" 및 "되돌아보기" 를 둘 다 사용하는 것은 지원되지 않습니다. |
|
실수 | 지정된 FIELD 또는 FIELDS 값의 표준 편차를 리턴합니다. |
|
실수 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 표준 편차를 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 표준 편차가 리턴됩니다. |
|
실수 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 표준 편차를 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 표준 편차가 리턴됩니다. INT는 되돌아볼 값의 최대 수를 지정합니다. 이는 단지 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
|
모두 | 임의의 CLEM 표현식인 EXPR이 참인 이후로 전달한 레코드 수를 리턴합니다. |
|
모두 | 두 번째 인수인 INT를 추가하면 되돌아볼 레코드의 최대 수를 지정합니다. EXPR이 참이었던 적이 없으면 INT는 입니다. |
|
모두 | 현재 레코드를 고려하는 반면, 는 그렇지 않습니다. 는 현재 레코드에 대해 EXPR 이 true인 경우 0을 리턴합니다. |
|
모두 | 두 번째 인수인 INT를 추가하면 되돌아볼 레코드의 최대 수를 지정합니다. |
|
숫자 | 지정된 FIELD 또는 FIELDS 값의 합계를 리턴합니다. |
|
숫자 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 합계를 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 합계가 리턴됩니다. |
|
숫자 | 현재 레코드를 포함하여 현재 노드가 수신한 마지막 EXPR 레코드에 대한 FIELD 값의 합계를 리턴합니다. FIELD는 숫자 필드의 이름이어야 합니다. EXPR은 0보다 큰 정수로 평가되는 표현식입니다. EXPR이 생략되었거나 지금까지 수신된 레코드 수를 초과하는 경우 지금까지 수신된 모든 레코드에 대한 합계가 리턴됩니다. INT는 되돌아볼 값의 최대 수를 지정합니다. 이는 단지 두 개의 인수를 사용하는 것보다 훨씬 효율적입니다. |
|
모두 | 현재 레코드에서 FIELD 필드의 값을 리턴합니다. 표현식에서만 사용합니다. |