

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

# 공식 표현식 튜토리얼
<a name="expression-tutorials"></a>

이 튜토리얼을 따라 AWS IoT SiteWise에서 공식 표현식을 사용할 수 있습니다.

**Topics**
+ [수식에서 문자열 사용](#use-strings-in-formulas)
+ [데이터 포인트 필터링](#filter-data)
+ [조건과 일치하는 데이터 포인트를 계산하려면 다음을 수행하세요.](#count-filtered-data)
+ [공식의 지연 데이터](#late-data)
+ [공식의 데이터 품질](#data-quality)
+ [정의되지 않은 값, 무한 값 및 오버플로우 값](#undefined-values)

## 수식에서 문자열 사용
<a name="use-strings-in-formulas"></a>

공식 표현식의 문자열에 대해 작업을 할 수 있습니다. 속성 및 측정 속성을 참조하는 변수에서 문자열을 입력할 수도 있습니다.

**중요**  
<a name="formula-output-rules"></a>공식 표현식은 실수 또는 문자열 값만 출력할 수 있습니다. 중첩 표현식은 문자열과 같은 다른 데이터 유형을 출력할 수 있지만 공식 전체는 숫자나 문자열로 평가되어야 합니다. [jp 함수](expression-string-functions.md#jp-definition)를 사용하여 문자열을 숫자로 변환할 수 있습니다. 부울 값은 1(참) 또는 0(거짓)이어야 합니다. 자세한 내용은 [정의되지 않은 값, 무한 값 및 오버플로우 값](#undefined-values) 단원을 참조하십시오.

AWS IoT SiteWise 는 문자열에서 작동하는 데 사용할 수 있는 다음과 같은 수식 표현식 기능을 제공합니다.
+ [문자열 리터럴](expression-literals.md#string-literal-definition)
+ [인덱스 연산자](expression-operators.md#index-operator-definition)(`s[index]`)
+ [조각 연산자](expression-operators.md#slice-operator-definition)(`s[start:end:step]`)
+ [비교 함수](expression-comparison-functions.md)는 문자열을 [사전순으로](https://en.wikipedia.org/wiki/Lexicographic_order) 비교하는 데 사용할 수 있습니다.
+ [문자열 함수](expression-string-functions.md)는 직렬화된 JSON 객체를 파싱하고 문자열을 숫자로 변환할 수 있는 `jp` 함수를 포함합니다.

## 데이터 포인트 필터링
<a name="filter-data"></a>

[if 함수](expression-conditional-functions.md#if-definition)를 사용하여 조건을 충족하지 않는 데이터 요소를 필터링할 수 있습니다. `if` 함수는 조건을 평가하여 `true` 및 `false` 결과에 대해 서로 다른 값을 반환합니다. [none 상수](expression-constants.md#none-definition)를 `if` 함수의 한 케이스에 대한 출력값으로 사용하여 해당 케이스의 데이터 포인트를 버릴 수 있습니다.

**조건과 일치하는 데이터 포인트를 필터링하려면 다음을 수행하세요.**
+ `if` 함수를 사용하여 조건이 충족되는지 확인하는 조건을 정의하고 `result_if_true` 또는 `result_if_false` 값으로 `none`를 반환하는 변환을 만드세요.

**Example 예: 물이 끓지 않는 데이터 포인트 필터링**  
머신에 있는 물의 온도(섭씨)를 제공하는 측정값(`temp_c`)이 있는 시나리오를 생각해 보세요. 다음 변환을 정의하여 물이 끓지 않는 데이터 포인트를 필터링할 수 있습니다.  
+ 변환: `boiling_temps = if(gte(temp_c, 100), temp_c, none)` - 섭씨 100도 이상이면 온도를 반환하고, 그렇지 않으면 데이터 포인트를 반환하지 않습니다.

## 조건과 일치하는 데이터 포인트를 계산하려면 다음을 수행하세요.
<a name="count-filtered-data"></a>

[비교 함수](expression-comparison-functions.md)와 [sum()](expression-aggregation-functions.md#sum-definition)을 사용하여 조건이 참인 데이터 포인트 수를 계산할 수 있습니다.

**조건과 일치하는 데이터 포인트를 계산하려면 다음을 수행하세요.**

1. 비교 함수를 사용하여 다른 속성에 대한 필터 조건을 정의하는 변환을 생성합니다.

1. 해당 조건이 충족되는 데이터 포인트를 합산하는 지표를 생성합니다.

**Example 예: 물이 끓는 데이터 포인트 수 계산**  
머신에 있는 물의 온도(섭씨)를 제공하는 측정값(`temp_c`)이 있는 시나리오를 생각해 보세요. 다음과 같은 변환 및 지표 속성을 정의하여 물이 끓는 데이터 포인트 수를 계산할 수 있습니다.  
+ 변환: `is_boiling = gte(temp_c, 100)` - 온도가 섭씨 100도보다 높거나 같으면 `1`를 반환하고, 그렇지 않으면 `0`를 반환합니다.
+ 지표: `boiling_count = sum(is_boiling)` - 물이 끓는 데이터 포인트 수를 계산합니다.

## 공식의 지연 데이터
<a name="late-data"></a>

AWS IoT SiteWise 는 최대 7일이 지난 데이터의 늦은 데이터 수집을 지원합니다. 가 지연 데이터를 AWS IoT SiteWise 수신하면 과거 기간에 지연 데이터를 입력하는 지표의 기존 값을 다시 계산합니다. 이러한 재계산으로 인해 데이터 처리 요금이 발생합니다.

**참고**  
는 지연 데이터를 입력하는 속성을 AWS IoT SiteWise 계산할 때 각 속성의 현재 수식 표현식을 사용합니다.

는 지표에 대한 과거 기간을 AWS IoT SiteWise 다시 계산한 후 해당 기간의 이전 값을 대체합니다. 해당 지표에 대한 알림을 활성화한 경우는 속성 값 알림 AWS IoT SiteWise 도 내보냅니다. 즉, 이전에 알림을 받은 동일한 속성 및 타임스탬프에 대해 새 속성 값 업데이트 알림을 받을 수 있습니다. 애플리케이션이나 데이터 레이크가 속성 값 알림을 사용하는 경우, 데이터가 정확하도록 이전 값을 새 값으로 업데이트해야 합니다.

## 공식의 데이터 품질
<a name="data-quality"></a>

에서 AWS IoT SiteWise각 데이터 포인트에는 다음 중 하나일 수 있는 품질 코드가 있습니다.
+ `GOOD` – 데이터가 어떤 문제의 영향도 받지 않습니다.
+ `BAD` – 데이터가 센서 고장과 같은 문제의 영향을 받습니다.
+ `UNCERTAIN` – 데이터가 센서 부정확과 같은 문제의 영향을 받습니다.

AWS IoT SiteWise 는 변환 및 지표를 계산할 때 `GOOD` 품질 데이터만 사용합니다.는 성공적인 계산을 위해 `GOOD` 품질 데이터만 AWS IoT SiteWise 출력합니다. 계산에 실패하면는 해당 계산에 대한 데이터 포인트를 출력 AWS IoT SiteWise 하지 않습니다. 이 문제는 계산의 결과로 정의되지 않은 값, 무한 값 또는 오버플로우 값이 나오는 경우에 발생할 수 있습니다.

데이터를 쿼리하고 데이터 품질별로 필터링하는 방법에 대한 자세한 내용은 [에서 데이터 쿼리 AWS IoT SiteWise](query-industrial-data.md) 단원을 참조하세요.

## 정의되지 않은 값, 무한 값 및 오버플로우 값
<a name="undefined-values"></a>

일부 수식 표현식(예: `x / 0`, `sqrt(-1)`또는 `log(0)`)은 실수 시스템에서 정의되지 않은 값, 무한 또는에서 지원하는 범위를 벗어나는 값을 계산합니다 AWS IoT SiteWise. 자산 속성의 표현식이 정의되지 않은 값, 무한 값 또는 오버플로 값을 계산하는 경우 AWS IoT SiteWise 는 해당 계산에 대한 데이터 포인트를 출력하지 않습니다.

AWS IoT SiteWise 또한는 수식 표현식의 결과로 숫자가 아닌 값을 계산하는 경우 데이터 포인트를 출력하지 않습니다. 즉, 문자열, 배열 또는 [none 상수](expression-constants.md#none-definition)를 계산하는 공식을 정의하면 해당 계산에 대한 데이터 포인트가 AWS IoT SiteWise 에서 출력되지 않습니다.

**Example 예제**  
다음 각 수식 표현식은 숫자로 표현할 AWS IoT SiteWise 수 없는 값을 생성합니다. AWS IoT SiteWise 는 이러한 수식 표현식을 계산할 때 데이터 포인트를 출력하지 않습니다.  
+ `x / 0`은 정의되지 않았습니다.
+ `log(0)`은 정의되지 않았습니다.
+ `sqrt(-1)`는 실수 시스템에서는 정의되지 않습니다.
+ `"hello" + " world"`는 문자열입니다.
+ `jp('{"values":[3,6,7]}', '$.values')`는 배열입니다.
+ `temp`가 `300`보다 작을 때 `if(gte(temp, 300), temp, none)`는 `none`입니다.