공식 표현식에서 임시 함수를 사용하십시오. - AWS IoT SiteWise

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

공식 표현식에서 임시 함수를 사용하십시오.

임시 함수를 사용하여 데이터 포인트의 타임스탬프를 기반으로 값을 반환합니다.

메트릭에 시간 함수 사용

지표에서만 데이터 포인트의 타임스탬프를 기반으로 값을 반환하는 다음 함수를 사용할 수 있습니다.

시간 함수 인수는 로컬 자산 모델 또는 중첩 표현식의 속성이어야 합니다. 즉, 하위 자산 모델의 속성을 시간 함수에 사용할 수 없습니다.

시간 함수의 중첩 표현식을 사용할 수 있습니다. 중첩된 표현식을 사용할 때는 다음 규칙이 적용됩니다.

  • 각 인수에는 변수가 하나만 있을 수 있습니다.

    예를 들어 latest( t*9/5 + 32 )은 지원됩니다.

  • 인수는 집계 함수일 수 없습니다.

    예를 들어 first( sum(x) )은 지원되지 않습니다.

함수 설명

first(x)

현재 시간 간격 동안 해당 변수의 가장 오래된 타임스탬프가 있는 값을 반환합니다.

last(x)

현재 시간 간격 동안 해당 변수의 가장 최근 타임스탬프가 있는 값을 반환합니다.

earliest(x)

현재 시간 간격이 시작되기 전에 지정된 변수의 마지막 값을 반환합니다.

입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다. 세부 정보는 time-range-defintion를 참조하세요.

latest(x)

주어진 변수의 마지막 값을 현재 시간 간격이 끝나기 전의 최신 타임스탬프와 함께 반환합니다.

입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다. 세부 정보는 time-range-defintion를 참조하세요.

statetime(x)

현재 시간 간격 동안 해당 변수가 양수인 시간(초)을 반환합니다. 비교 함수를 사용하면 statetime 함수가 사용할 변형 속성을 만들 수 있습니다.

예를 들어 Idle 속성(0 또는 1)이 있는 경우, IdleTime = statetime(Idle) 표현식을 사용하여 시간 간격당 유휴 시간을 계산할 수 있습니다. 자세한 내용은 상태 시간 시나리오 예를 참조하세요.

이 함수는 지표 속성을 입력 변수로 지원하지 않습니다.

입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다.

TimeWeightedAvg(x, [interpolation])

포인트 간 시간 간격을 두고 가중치를 적용한 입력 데이터의 평균을 반환합니다.

계산 및 간격에 대한 자세한 내용은 시간 가중 함수 파라미터를 참조하세요.

선택적 인수 interpolaton는 문자열 상수여야 합니다.

  • locf - 이 값이 기본값입니다. 계산에서는 데이터 포인트 간 간격에 대해 마지막으로 관찰된 캐리 포워드 계산 알고리즘을 사용합니다. 이 접근 방식에서는 데이터 포인트가 다음 입력 데이터 포인트 타임스탬프까지 마지막으로 관측된 값으로 계산됩니다.

    양호한 데이터 지점 이후의 값은 다음 데이터 포인트 타임스탬프까지의 값으로 추정됩니다.

  • linear - 계산에서는 데이터 포인트 간 간격에 대한 선형 보간 계산 알고리즘을 사용합니다.

    양호한 두 데이터 포인트 사이의 값은 해당 데이터 포인트 값 간의 선형 보간으로 추정됩니다.

    양호한 데이터 포인트와 불량 데이터 포인트 사이의 값 또는 마지막 양호한 데이터 포인트 이후의 값은 양호한 데이터 포인트로 추정됩니다.

TimeWeightedStDev(x, [algo])

포인트 간 시간 간격으로 가중치를 적용한 입력 데이터의 표준 편차를 반환합니다.

계산 및 간격에 대한 자세한 내용은 시간 가중 함수 파라미터를 참조하세요.

계산에서는 데이터 포인트 간 간격에 대해 마지막으로 관찰된 캐리 포워드 계산 알고리즘을 사용합니다. 이 접근 방식에서는 데이터 포인트가 다음 입력 데이터 포인트 타임스탬프까지 마지막으로 관측된 값으로 계산됩니다. 가중치는 데이터 포인트 또는 창 경계 사이의 시간 간격(초)으로 계산됩니다.

선택적 인수 algo는 문자열 상수여야 합니다.

  • f - 이 값이 기본값입니다. 주파수 가중치를 사용하여 편향 없는 가중치 표본 분산을 반환합니다. 여기서 값은 초 단위로 계산됩니다. TimeWeight 이 알고리즘은 일반적으로 표준 편차 이하로 가정되며 가중치 적용 표본에 대한 Bessel의 표준 편차 보정이라고 합니다.

  • p - 모집단 분산이라고도 하는 편향 가중 표본 분산을 반환합니다.

다음과 같은 경우 계산에 다음 공식이 사용됩니다.

  • Sp = 모집단 표준 편차

  • Sf = 빈도 표준 편차

  • Xi =수신 데이터

  • ωi = 시간 간격(초)과 동일한 가중치

  • μ* = 수신 데이터의 가중 평균

모집단 표준 편차 방정식:

모집단 표준 편차 방정식입니다.

빈도 표준 편차 방정식:

빈도 표준 편차의 방정식입니다.

다음 다이어그램은 현재 시간 간격을 기준으로 시간 함수first, lastearliest, 및 latest 를 AWS IoT SiteWise 계산하는 방법을 보여줍니다.

AWS IoT SiteWise 시간 함수는 타임스탬프를 기반으로 데이터 포인트를 반환합니다.
참고
  • 의 시간 범위는 (현재 윈도우 시작first(x), 현재 윈도우 종료] last(x) 입니다.

  • 시간 범위는 (시작 시간, 현재 창 종료]) 입니다. latest(x)

  • 시간 범위는 (시작 시간, 이전 창 종료]) 입니다. earliest(x)

시간 가중 함수 파라미터

집계 기간에 대해 계산된 시간 가중 함수는 다음 사항을 고려합니다.

  • 기간 내부의 데이터 포인트

  • 데이터 포인트 간 시간 간격

  • 기간 전의 마지막 데이터 포인트

  • 기간 뒤의 첫 번째 데이터 포인트(일부 알고리즘의 경우)

용어:

  • 잘못된 데이터 포인트 - 품질이 좋지 않거나 숫자 값이 아닌 모든 데이터 포인트. 이는 기간 결과 계산에서 고려되지 않습니다.

  • 잘못된 간격 - 잘못된 데이터 지점 이후의 간격입니다. 알려진 첫 번째 데이터 지점 이전의 간격도 잘못된 간격으로 간주됩니다.

  • 양호한 데이터 포인트 - 품질이 우수하고 수치 값이 있는 모든 데이터 포인트.

참고
  • AWS IoT SiteWise 변환과 GOOD 지표를 계산할 때만 품질 데이터를 사용합니다. UNCERTAINBAD 데이터 포인트를 무시합니다.

  • 알려진 첫 번째 데이터 포인트 이전의 간격은 잘못된 간격으로 간주됩니다. 자세한 내용은 공식 표현식 튜토리얼 섹션을 참조하세요.

마지막으로 알려진 데이터 포인트 이후의 간격은 무기한 계속되므로 이후의 모든 기간에 영향을 미칩니다. 새 데이터 포인트가 도착하면 함수는 간격을 다시 계산합니다.

위 규칙에 따라 기간 집계 결과가 계산되고 기간 경계로 제한됩니다. 기본적으로 함수는 전체 기간의 간격이 적절한 경우에만 기간 결과를 전송합니다.

기간의 적절한 간격이 기간 길이보다 작은 경우 함수는 기간을 전송하지 않습니다.

기간 결과에 영향을 미치는 데이터 포인트가 변경되면 함수는 데이터 포인트가 기간 외부에 있더라도 기간을 다시 계산합니다.

입력 속성의 기록에 데이터 요소가 하나 이상 있고 계산이 시작된 경우 함수는 시간 간격마다 시간 가중 집계 함수를 계산합니다.

상태 시간 시나리오 예

다음 속성을 가진 자산이 있는 예를 고려하십시오.

  • Idle - 0 또는 1인 측정입니다. 값이 1이면 머신이 유휴 상태입니다.

  • Idle Time - 공식 statetime(Idle)를 사용하여 1분 간격으로 머신이 유휴 상태인 시간(초)을 계산하는 지표입니다.

Idle 속성은 다음과 같은 데이터 포인트를 갖습니다.

타임스탬프 2:00:00 PM 2:00:30 PM 2:01:15 PM 2:02:45 PM 2:04:00 PM
Idle 0 1 1 0 0

AWS IoT SiteWise 의 값에서 1분마다 Idle Time 속성을 계산합니다. Idle 이 계산이 완료되면 Idle Time 속성은 다음과 같은 데이터 포인트를 갖습니다.

타임스탬프 2:00:00 PM 2:01:00 PM 2:02:00 PM 2:03:00 PM 2:04:00 PM
Idle Time N/A 30 60 45 0

AWS IoT SiteWise 1분이 Idle Time 끝날 때마다 다음과 같은 계산을 수행합니다.

  • 2:00 PM(1:59 PM ~ 2:00 PM)

    • 2:00 PM 이전에는 Idle에 대한 데이터가 없으므로 데이터 포인트가 계산되지 않습니다.

  • 2:01 PM(2:00 PM ~ 2:01 PM)

    • 2:00:00 PM에 머신이 활성 상태입니다(Idle0임).

    • 2:00:30 PM에 머신이 유휴 상태입니다(Idle1임).

    • Idle은 2:01:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 Idle Time은 30초입니다.

  • 2:02 PM(2:01 PM ~ 2:02 PM)

    • 2:01:00 PM에 머신이 유휴 상태입니다(2:00:30 PM의 마지막 데이터 포인트에 따라).

    • 2:01:15 PM에 머신이 유휴 상태입니다.

    • Idle은 2:02:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 Idle Time은 60초입니다.

  • 2:03 PM(2:02 PM ~ 2:03 PM)

    • 2:02:00 PM에 머신이 유휴 상태입니다(2:01:15 PM의 마지막 데이터 포인트에 따라).

    • 2:02:45 PM에 머신이 활성 상태입니다.

    • Idle은 2:03:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 Idle Time은 45초입니다.

  • 2:04 PM(2:03 PM ~ 2:04 PM)

    • 2:03:00 PM에 머신이 유휴 상태입니다(2:02:45 PM의 마지막 데이터 포인트에 따라).

    • Idle은 2:04:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 Idle Time은 0초입니다.

예제 TimeWeightedAvg 및 TimeWeightedStDev 시나리오

다음 표에는 이러한 1분 기간 지표 Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')에 대한 샘플 입력 및 출력이 나와 있습니다.

1분 집계 기간에 대한 샘플 입력:

참고

이러한 데이터 포인트는 모두 GOOD 품질이 우수합니다.

03:00:00 4.0
03:01:00 2.0
03:01:10 8.0
03:01:50 20.0
03:02:00 14.0
03:02:05 10.0
03:02:10 3.0
03:02:30 20.0
03:03:30 0.0

집계 결과 출력:

참고

없음 - 이 기간에 대한 결과가 생성되지 않았습니다.

Time Avg(x) TimeWeightedAvg(x) TimeWeightedAvg(X, "linear") stDev(X) timeWeightedStDev(x) timeWeightedStDev(x, 'p')
3:00:00 4 None None 0 None None
3:01:00 2 4 3 0 0 0
3:02:00 14 9 13 6 5.430610041581775 5.385164807134504
3:03:00 11 13 12.875 8.54400374531753 7.724054437220943 7.659416862050705
3:04:00 0 10 2.5 0 10.084389681792215 10
3:05:00 None 0 0 None 0 0

변환에 시간 함수 사용

변환의 경우에만 pretrigger() 함수를 사용하여 현재 변환 계산을 시작한 속성 업데이트 이전에 변수에 대한 GOOD 품질 값을 검색할 수 있습니다.

제조업체가 기계 상태를 모니터링하는 AWS IoT SiteWise 데 사용하는 예를 생각해 보십시오. 제조업체는 다음 측정값과 변환을 사용하여 프로세스를 나타냅니다.

  • 측정값 current_state는 0 또는 1이 될 수 있습니다.

    • 머신이 청소 상태인 경우, current_state는 1과 같습니다.

    • 머신이 제조 상태인 경우 current_state는 0과 같습니다.

  • if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)와 동일한 변환 cleaning_state_duration입니다. 이 변환은 머신이 청소 상태에 있었던 시간을 초 단위의 Unix epoch 형식으로 반환합니다. 자세한 내용은 공식 표현식에서는 조건부 함수를 사용하십시오.timestamp() 함수를 참조하세요.

머신이 예상보다 오래 청소 상태로 유지되는 경우 제조업체에서 머신을 조사할 수 있습니다.

또한 pretrigger() 함수를 다변량 변환에서 사용할 수 있습니다. 예를 들어, 이름이 xy인 측정값 두 개와 z와 같은 변환 x + y + pretrigger(y)가 있다고 가정해 보겠습니다. 다음 표에는 오전 9시부터 오전 9시 15분까지의 x, y, z에 대한 값이 나와 있습니다.

참고
  • 이 예에서는 측정값이 시간순으로 도착한다고 가정합니다. 예를 들어 오전 9시의 x 값이 오전 9시 5분의 x 값보다 먼저 도착합니다.

  • 오전 9시 5분의 데이터 포인트가 오전 9시의 데이터 포인트보다 먼저 도착하는 경우 z는 오전 9시 5분에 계산되지 않습니다.

  • 오전 9시 5분의 x 값이 오전 9시의 x 값보다 먼저 도달하고 y 값이 시간순으로 도달하면 오전 9시 5분에 z22 = 20 + 1 + 1와 같습니다.

오전 9시 오전 9시 5분 오전 9시 10분 오전 9시 15분

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

y는 오전 9시 이전에는 데이터 포인트를 수신하지 않습니다. 따라서 오전 9시에 z는 계산되지 않습니다.

23 = 20 + 2 + 1

pretrigger(y)는 1과 같습니다.

25 = 20 + 3 + 2

x는 새 데이터 포인트를 받지 않습니다. pretrigger(y)는 2와 같습니다.

36 = 30 + 3 + 3

y는 새 데이터 포인트를 받지 않습니다. 따라서 pretrigger(y)는 오전 9시 15분에는 3이 됩니다.