

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

# 데이터 속성 정의
<a name="asset-properties"></a>

*자산 속성*은 자산 데이터를 포함하는 각 자산 내부의 구조입니다. 자산 속성은 다음 유형 중 하나일 수 있습니다.
+ **속성** – 디바이스 제조업체 또는 지리적 위치 같은, 일반적으로 정적인 자산 속성입니다. 자세한 내용은 [정적 데이터(속성) 정의](attributes.md) 단원을 참조하십시오.
+ **측정** - 타임스탬프가 찍힌 회전 속도 값 또는 타임스탬프가 찍힌 섭씨 온도 값과 같은 자산의 원시 기기 센서 데이터 스트림입니다. 측정은 데이터 스트림 별칭에 의해 정의됩니다. 자세한 내용은 [장비의 데이터 스트림 정의(측정값)](measurements.md) 단원을 참조하십시오.
+ **변형** - 타임스탬프가 찍힌 화씨 온도 값 같은, 자산의 변형된 시계열 값입니다. 변형은 표현식 및 해당 표현식과 함께 사용할 변수로 정의됩니다. 자세한 내용은 [데이터 변환(변환)](transforms.md) 단원을 참조하십시오.
+ **지표** - 시간 단위의 평균 온도 같은, 지정된 시간 간격 동안 집계된 자산의 데이터입니다. 지표는 시간 간격, 표현식 및 해당 표현식과 함께 사용할 변수로 정의됩니다. 지표 표현식은 관련 자산의 지표 속성을 입력할 수 있으므로 작업 또는 작업의 하위 집합을 나타내는 지표를 계산할 수 있습니다. 자세한 내용은 [속성과 기타 자산에서 데이터 집계(지표)](metrics.md) 단원을 참조하십시오.

자세한 내용은 [에서 자산 모델 생성 AWS IoT SiteWise](create-asset-models.md) 단원을 참조하십시오.

측정, 변형 및 지표를 사용하여 OEE(전반적인 장비 효율성)를 계산하는 방법의 예는 [에서 OEE 계산 AWS IoT SiteWise](calculate-oee.md) 단원을 참고하세요.

**Topics**
+ [정적 데이터(속성) 정의](attributes.md)
+ [장비의 데이터 스트림 정의(측정값)](measurements.md)
+ [데이터 변환(변환)](transforms.md)
+ [속성과 기타 자산에서 데이터 집계(지표)](metrics.md)
+ [수식 표현식 사용](formula-expressions.md)

# 정적 데이터(속성) 정의
<a name="attributes"></a>

*자산 속성*은 디바이스 제조업체 또는 지리적 위치 같은, 일반적으로 정적인 정보를 나타냅니다. 자산 템플릿에서 생성한 각 자산은 해당 모델의 속성을 포함합니다.

**Topics**
+ [속성 정의(콘솔)](#define-attributes-console)
+ [속성 정의(AWS CLI)](#define-attributes-cli)

## 속성 정의(콘솔)
<a name="define-attributes-console"></a>

 AWS IoT SiteWise 콘솔에서 자산 모델의 속성을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-console"></a>**이름** - 속성의 이름입니다.
+ **기본값** - (선택 사항) 이 속성의 기본값입니다. 모델에서 생성된 자산은 속성에 대해이 값을 갖습니다. 모델에서 생성된 자산의 기본값을 재정의하는 방법에 대한 자세한 내용은 [속성 값 업데이트](update-attribute-values.md) 단원을 참조하세요.
+ <a name="asset-property-data-type-console"></a>**데이터 형식** - 속성의 데이터 형식으로 다음 중 하나입니다.
  + **문자열** - 최대 1,024바이트의 문자열입니다.
  + **정수** - 범위가 [-2,147,483,648, 2,147,483,647]인 부호 있는 32비트 정수입니다.
  + **실수** - 범위가 [-10^100, 10^100]이고 IEEE 754 배정밀도를 갖는 부동 소수점 숫자입니다.
  + **부울** - `true` 또는`false`입니다.
+ **외부 ID** - (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.

자세한 내용은 [자산 모델 생성(콘솔)](create-asset-models.md#create-asset-model-console) 단원을 참조하십시오.

## 속성 정의(AWS CLI)
<a name="define-attributes-cli"></a>

 AWS IoT SiteWise API를 사용하여 자산 모델의 속성을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-cli"></a>`name` - 속성의 이름입니다.
+ `defaultValue` – (선택 사항) 이 속성의 기본값입니다. 모델에서 생성된 자산은 속성에 대해이 값을 갖습니다. 모델에서 생성된 자산의 기본값을 재정의하는 방법에 대한 자세한 내용은 [속성 값 업데이트](update-attribute-values.md) 단원을 참조하세요.
+ <a name="asset-property-data-type-cli"></a>`dataType` – 속성의 데이터 형식으로 다음 중 하나입니다.
  + `STRING` – 최대 1,024바이트의 문자열입니다.
  + `INTEGER` – 범위가 [-2,147,483,648, 2,147,483,647]인 부호 있는 32비트 정수입니다.
  + `DOUBLE` – 범위가 [-10^100, 10^100]이고 IEEE 754 배정밀도를 갖는 부동 소수점 숫자입니다.
  + `BOOLEAN` - `true` 또는 `false`입니다.
+ `externalId` – (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.

**Example 속성 정의 예**  
다음 예제에서는 자산의 모델 번호를 나타내는 속성을 기본값과 함께 보여 줍니다. 이 객체는 [속성](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.html)이 포함된 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)의 예입니다. 이 객체를 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 요청 페이로드의 일부로 지정하여 속성 특성을 생성할 수 있습니다. 자세한 내용은 [자산 모델 생성(AWS CLI)](create-asset-models.md#create-asset-model-cli) 단원을 참조하십시오.  

```
{
...
"assetModelProperties": [
{
  "name": "Model number",
  "dataType": "STRING",
  "type": {
    "attribute": {
      "defaultValue": "BLT123"
    }
  }
}
],
...
}
```

# 장비의 데이터 스트림 정의(측정값)
<a name="measurements"></a>

*측정*은 타임스탬프가 지정된 온도 값 또는 타임스탬프가 지정된 분당 회전 수(RPM) 값 같은, 디바이스의 원시 센서 데이터 스트림을 나타냅니다.

**Topics**
+ [측정값 정의(콘솔)](#define-measurements-console)
+ [측정값 정의(AWS CLI)](#define-measurements-cli)

## 측정값 정의(콘솔)
<a name="define-measurements-console"></a>

 AWS IoT SiteWise 콘솔에서 자산 모델에 대한 측정을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-console"></a>**이름** – 속성의 이름입니다.
+ <a name="asset-property-unit-console"></a>**단위** – (선택 사항) 속성에 대한 과학적 단위(예: mm 또는 섭씨)입니다.
+ <a name="asset-property-data-type-console"></a>**데이터 형식** - 속성의 데이터 형식으로 하나입니다.
  + **문자열** - 최대 1,024바이트의 문자열입니다.
  + **정수** - 범위가 [-2,147,483,648, 2,147,483,647]인 부호 있는 32비트 정수입니다.
  + **실수** - 범위가 [-10^100, 10^100]이고 IEEE 754 배정밀도를 갖는 부동 소수점 숫자입니다.
  + **부울** - `true` 또는`false`입니다.
+ **외부 ID** - (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.

자세한 내용은 [자산 모델 생성(콘솔)](create-asset-models.md#create-asset-model-console) 단원을 참조하십시오.

## 측정값 정의(AWS CLI)
<a name="define-measurements-cli"></a>

 AWS IoT SiteWise API를 사용하여 자산 모델에 대한 측정을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-cli"></a>`name` - 속성의 이름입니다.
+ <a name="asset-property-data-type-cli"></a>`dataType` – 속성의 데이터 형식으로 하나입니다.
  + `STRING` – 최대 1,024바이트의 문자열입니다.
  + `INTEGER` – 범위가 [-2,147,483,648, 2,147,483,647]인 부호 있는 32비트 정수입니다.
  + `DOUBLE` – 범위가 [-10^100, 10^100]이고 IEEE 754 배정밀도를 갖는 부동 소수점 숫자입니다.
  + `BOOLEAN` - `true` 또는 `false`입니다.
+ <a name="asset-property-unit-cli"></a>`unit` – (선택 사항) 속성에 대한 과학적 단위(예: mm 또는 섭씨)입니다.
+ `externalId` – (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.

**Example 측정 정의 예**  
다음 예제에서는 자산의 온도 센서 판독값을 나타내는 측정을 보여줍니다. 이 객체는 [측정](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html)이 포함된 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)의 예입니다. 이 객체를 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 요청 페이로드의 일부로 지정하여 측정 속성을 생성할 수 있습니다. 자세한 내용은 [자산 모델 생성(AWS CLI)](create-asset-models.md#create-asset-model-cli) 단원을 참조하십시오.  
나중에 고유한 디바이스 데이터 스트림을 사용하도록 각 자산을 구성해야 하므로 자산 모델을 정의할 때 [측정](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html) 구조는 빈 구조입니다. 자산의 측정 속성을 디바이스의 센서 데이터 스트림에 연결하는 방법에 대한 자세한 내용은 [에 대한 데이터 스트림 관리 AWS IoT SiteWise](manage-data-streams.md) 단원을 참조하세요.  

```
{
      ...
      "assetModelProperties": [
      {
          "name": "Temperature C",
          "dataType": "DOUBLE",
          "type": {
              "measurement": {}
          },
          "unit": "Celsius"
      }
  ],
      ...
}
```

# 데이터 변환(변환)
<a name="transforms"></a>

*변환*은 자산 속성의 데이터 포인트를 한 양식에서 다른 양식으로 매핑하는 수학 표현식입니다. 변환 표현식은 자산 속성 변수, 리터럴, 연산자 및 함수로 구성됩니다. 변환된 데이터 포인트는 입력 데이터 포인트와 one-to-one 관계를 유지합니다.는 입력 속성이 새 데이터 포인트를 수신할 때마다 변환된 새 데이터 포인트를 AWS IoT SiteWise 계산합니다.

**참고**  
타임스탬프가 동일한 속성 업데이트의 경우 다른 수신 속성의 업데이트로 출력 값을 덮어쓸 수 있습니다.

예를 들어, 자산에 섭씨 단위의 `Temperature_C`라는 온도 측정 스트림이 있는 경우 `Temperature_F = 9/5 * Temperature_C + 32` 공식을 사용하여 각 데이터 포인트를 화씨로 변환할 수 있습니다. 가 `Temperature_C` 측정 스트림에서 데이터 포인트를 AWS IoT SiteWise 수신할 때마다 해당 `Temperature_F` 값은 몇 초 이내에 계산되고 `Temperature_F` 속성으로 사용할 수 있습니다.

변환에 둘 이상의 변수가 포함된 경우 이전에 도착한 데이터 포인트가 계산을 즉시 시작합니다. 부품 제조업체가 변환을 사용하여 제품 품질을 모니터링하는 예를 들어 보겠습니다. 제조업체는 부품 유형에 따라 다른 표준을 사용하여 다음 측정값을 사용하여 공정을 나타냅니다.
+ `Part_Number` ‐ 부품 유형을 식별하는 문자열입니다.
+ `Good_Count` ‐ 부품이 표준을 충족할 경우 1씩 증가하는 정수입니다.
+ `Bad_Count` ‐ 부품이 표준을 충족하지 않을 경우 1씩 증가하는 정수입니다.

제조업체에서는 ` if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")`와 같은 `Quality_Monitor` 변환도 생성합니다.

이 변환은 특정 부품 유형에서 생산된 불량 부품의 비율을 모니터링합니다. 부품 번호가 BLT123 이고 불량 부품의 비율이 10%(0.1)를 초과하면 변환이 `"Caution"`으로 반환됩니다. 그렇지 않으면 변환이 `"Normal"`로 반환됩니다.

**참고**  
`Part_Number`에서 다른 측정값보다 먼저 새 데이터 포인트를 받으면 `Quality_Monitor` 변환은 새 `Part_Number` 값과 최신 `Good_Count` 및 `Bad_Count` 값을 사용합니다. 오류를 방지하려면 다음 제조 실행 전에 `Good_Count` 및 `Bad_Count`를 다시 설정하세요.
모든 변수에 새 데이터 포인트가 입력된 후에만 표현식을 평가하려면 [지표](metrics.md)를 사용하세요.

**Topics**
+ [변환 정의(콘솔)](#define-transforms-console)
+ [변환 정의(AWS CLI)](#define-transform-cli)

## 변환 정의(콘솔)
<a name="define-transforms-console"></a>

 AWS IoT SiteWise 콘솔에서 자산 모델의 변환을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-console"></a>**이름** – 속성의 이름입니다.
+ <a name="asset-property-unit-console"></a>**단위** – (선택 사항) 속성에 대한 과학적 단위(예: mm 또는 섭씨)입니다.
+ **데이터 유형** - 변환의 데이터 유형으로, **실수** 또는 **문자열**일 수 있습니다.
+ **외부 ID** - (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.
+ **공식** -변환 표현식입니다. 변환 표현식에서는 집계 함수나 시간 함수를 사용할 수 없습니다. 입력을 시작하거나 아래쪽 화살표 키를 눌러 자동 완성 기능을 엽니다. 자세한 내용은 [수식 표현식 사용](formula-expressions.md) 단원을 참조하십시오.
**중요**  <a name="transform-input-rules"></a>
변환은 정수, 실수, 부울 또는 문자열 유형인 속성을 입력할 수 있습니다. 부울은 `0`(거짓)와 `1`(참)로 변환됩니다.  
변환은 속성이 아닌 하나 이상의 특성과 원하는 수의 속성인 특성을 입력해야 합니다. AWS IoT SiteWise 는 속성이 아닌 입력 특성이 새 데이터 포인트를 수신할 때마다 새로 변환된 데이터 포인트를 계산합니다. 새 속성 값은 변환 업데이트를 실행하지 않습니다. 자산 속성 데이터 API 작업에 대한 동일한 요청 비율이 변환 계산 결과에 적용됩니다.  
<a name="formula-output-rules"></a>공식 표현식은 실수 또는 문자열 값만 출력할 수 있습니다. 중첩 표현식은 문자열과 같은 다른 데이터 유형을 출력할 수 있지만 공식 전체는 숫자나 문자열로 평가되어야 합니다. [jp 함수](expression-string-functions.md#jp-definition)를 사용하여 문자열을 숫자로 변환할 수 있습니다. 부울 값은 1(참) 또는 0(거짓)이어야 합니다. 자세한 내용은 [정의되지 않은 값, 무한 값 및 오버플로우 값](expression-tutorials.md#undefined-values) 단원을 참조하십시오.

자세한 내용은 [자산 모델 생성(콘솔)](create-asset-models.md#create-asset-model-console) 단원을 참조하십시오.

## 변환 정의(AWS CLI)
<a name="define-transform-cli"></a>

 AWS IoT SiteWise API를 사용하여 자산 모델에 대한 변환을 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-cli"></a>`name` - 속성의 이름입니다.
+ <a name="asset-property-unit-cli"></a>`unit` – (선택 사항) 속성에 대한 과학적 단위(예: mm 또는 섭씨)입니다.
+ `dataType` - 변환의 데이터 유형으로 `DOUBLE` 또는 `STRING`이어야 합니다.
+ `externalId` – (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.
+ `expression` – 변환 표현식입니다. 변환 표현식에서는 집계 함수나 시간 함수를 사용할 수 없습니다. 자세한 내용은 [수식 표현식 사용](formula-expressions.md) 단원을 참조하십시오.
+ `variables` - 표현식에서 사용할 자산의 기타 특성을 정의하는 변수 목록입니다. 각 변수 구조에는 표현식에 사용할 간단한 이름과 해당 변수에 연결할 속성을 식별하는 `value` 구조가 포함되어 있습니다. `value` 구조에는 다음 정보가 포함되어 있습니다.
  + `propertyId` - 값을 입력할 속성의 ID입니다. ID 대신 속성 이름을 사용할 수 있습니다.
**중요**  <a name="transform-input-rules"></a>
변환은 정수, 실수, 부울 또는 문자열 유형의 속성을 입력할 수 있습니다. 부울은 `0`(거짓)와 `1`(참)로 변환됩니다.  
변환은 속성이 아닌 하나 이상의 특성과 원하는 수의 속성인 특성을 입력해야 합니다. AWS IoT SiteWise 는 속성이 아닌 입력 특성이 새 데이터 포인트를 수신할 때마다 새로 변환된 데이터 포인트를 계산합니다. 새 속성 값은 변환 업데이트를 실행하지 않습니다. 자산 속성 데이터 API 작업에 대한 동일한 요청 비율이 변환 계산 결과에 적용됩니다.  
<a name="formula-output-rules"></a>공식 표현식은 실수 또는 문자열 값만 출력할 수 있습니다. 중첩 표현식은 문자열과 같은 다른 데이터 유형을 출력할 수 있지만 공식 전체는 숫자나 문자열로 평가되어야 합니다. [jp 함수](expression-string-functions.md#jp-definition)를 사용하여 문자열을 숫자로 변환할 수 있습니다. 부울 값은 1(참) 또는 0(거짓)이어야 합니다. 자세한 내용은 [정의되지 않은 값, 무한 값 및 오버플로우 값](expression-tutorials.md#undefined-values) 단원을 참조하십시오.

**Example 변환 정의**  
다음 예는 자산의 온도 측정 데이터를 섭씨에서 화씨로 변환하는 변형 속성을 보여줍니다. 이 객체는 [변환](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html)이 포함된 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)의 예입니다. 이 객체를 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 요청 페이로드의 일부로 지정하여 변환 속성을 생성할 수 있습니다. 자세한 내용은 [자산 모델 생성(AWS CLI)](create-asset-models.md#create-asset-model-cli) 단원을 참조하십시오.  

```
{
...
"assetModelProperties": [
...
{
  "name": "Temperature F",
  "dataType": "DOUBLE",
  "type": {
    "transform": {
      "expression": "9/5 * temp_c + 32",
      "variables": [
        {
          "name": "temp_c",
          "value": {
            "propertyId": "Temperature C"
          }
        }
      ]
    }
  },
  "unit": "Fahrenheit"
}
],
...
}
```

**Example 세 개의 변수를 포함하는 변환 정의**  
다음 예제는 BLT123 부품 중 10% 이상이 표준을 충족하지 않는 경우 경고 메시지(`"Caution"`)를 반환하는 변환 속성을 보여줍니다. 그렇지 않으면 정보 메시지(`"Normal"`)를 반환합니다.  

```
{
...
"assetModelProperties": [
...
{
"name": "Quality_Monitor",
"dataType": "STRING",
"type": {
    "transform": {
        "expression": "if(eq(Part_Number,"BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")",
        "variables": [
            {
                "name": "Part_Number",
                "value": {
                    "propertyId": "Part Number"
                }
            },
            {
                "name": "Good_Count",
                "value": {
                    "propertyId": "Good Count"
                }
            },
            {
                "name": "Bad_Count",
                "value": {
                    "propertyId": "Bad Count"
                }
            }
        ]
    }
}
}
...
}
```

# 속성과 기타 자산에서 데이터 집계(지표)
<a name="metrics"></a>

지표는 집계 함수를 사용하여 모든 입력 데이터 포인트를 처리하고 지정된 시간 간격당 단일 데이터 포인트를 출력하는 수학 표현식입니다. 예를 들어, 어떤 지표는 온도 데이터 스트림의 시간별 평균 온도를 계산할 수 있습니다.

지표는 연결된 자산의 지표에서 데이터를 입력할 수 있으므로 작업 또는 작업의 하위 집합에 대한 통찰을 제공하는 통계를 계산할 수 있습니다. 예를 들어, 지표는 풍력 발전소의 모든 풍력 터빈에 대한 시간당 평균 온도를 계산할 수 있습니다. 자산 간의 연결을 정의하는 방법에 대한 자세한 내용은 [자산 모델 계층 정의](define-asset-hierarchies.md) 단원을 참조하세요.

또한 지표는 각 시간 간격의 데이터를 집계하지 않고도 다른 속성의 데이터를 입력할 수 있습니다. 공식에서 [속성](attributes.md)을 지정하는 경우 공식을 계산할 때 AWS IoT SiteWise 는 해당 속성의 [최신](expression-temporal-functions.md#latest-definition) 값을 사용합니다. 공식에 지표를 지정하는 경우는 공식을 계산하는 시간 간격의 [마지막](expression-temporal-functions.md#last-definition) 값을 AWS IoT SiteWise 사용합니다. 즉, `OEE = Availability * Quality * Performance`와 같은 지표를 정의할 수 있습니다. 여기서 `Availability`, `Quality`, `Performance`는 모두 동일한 자산 모델의 다른 지표입니다.

AWS IoT SiteWise 또한는 모든 자산 속성에 대한 기본 집계 지표 세트를 자동으로 계산합니다. 계산 비용을 줄이기 위해, 기본 계산에 대한 사용자 지정 지표를 정의하는 대신 이러한 집계를 사용할 수 있습니다. 자세한 내용은 [에서 자산 속성 집계 쿼리 AWS IoT SiteWise](aggregates.md) 단원을 참조하십시오.

**Topics**
+ [지표 정의(콘솔)](#define-metrics-console)
+ [지표 정의(AWS CLI)](#define-metrics-cli)

## 지표 정의(콘솔)
<a name="define-metrics-console"></a>

 AWS IoT SiteWise 콘솔에서 자산 모델의 지표를 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-console"></a>**이름** – 속성의 이름입니다.
+ **데이터 유형** - 변환의 데이터 유형으로, **실수** 또는 **문자열**일 수 있습니다.
+ **외부 ID** - (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.
+ **공식** - 지표 표현식입니다. 지표 표현식은 [집계 함수](expression-aggregation-functions.md)를 사용하여 계층 구조의 모든 관련 자산에 대한 속성 데이터를 입력할 수 있습니다. 입력을 시작하거나 아래쪽 화살표 키를 눌러 자동 완성 기능을 엽니다. 자세한 내용은 [수식 표현식 사용](formula-expressions.md) 단원을 참조하십시오.
**중요**  <a name="metric-input-rules"></a>
지표는 정수, 실수, 부울 또는 문자열 유형의 속성만 입력할 수 있습니다. 부울은 `0`(거짓)와 `1`(참)로 변환됩니다.  
지표의 표현식에서 지표 입력 변수를 정의하는 경우, 이러한 입력의 시간 간격은 출력 지표와 동일해야 합니다.  
<a name="formula-output-rules"></a>공식 표현식은 실수 또는 문자열 값만 출력할 수 있습니다. 중첩 표현식은 문자열과 같은 다른 데이터 유형을 출력할 수 있지만 공식 전체는 숫자나 문자열로 평가되어야 합니다. [jp 함수](expression-string-functions.md#jp-definition)를 사용하여 문자열을 숫자로 변환할 수 있습니다. 부울 값은 1(참) 또는 0(거짓)이어야 합니다. 자세한 내용은 [정의되지 않은 값, 무한 값 및 오버플로우 값](expression-tutorials.md#undefined-values) 단원을 참조하십시오.
+ **시간 간격** - 시간 간격 지표입니다. <a name="metric-window-info"></a>AWS IoT SiteWise 는 다음 연속 창 시간 간격을 지원하며, 여기서 각 간격은 이전 간격이 끝날 때 시작됩니다.
  + **1분** - <a name="metric-window-1m"></a>1분입니다. 1분이 끝날 때마다 계산됩니다(오전 12:00:00, 오전 12:01:00, 오전 12:02:00 등).
  + **5분** - <a name="metric-window-5m"></a>5분입니다. 정각에 시작하여 5분이 끝날 때마다 계산됩니다(오전 12:00:00, 오전 12:05:00, 오전 12:10:00 등).
  + **15분** - <a name="metric-window-15m"></a>15분입니다. 정각에 시작하여 15분이 끝날 때마다 계산됩니다(오전 12:00:00, 오전 12:15:00, 오전 12:30:00 등).
  + **1시간** - <a name="metric-window-1h"></a>1시간(60분)입니다. UTC를 기준으로 한 시간이 끝날 때마다 계산됩니다(오전 12:00:00, 오전 01:00:00, 오전 02:00:00 등).
  + **1일** - <a name="metric-window-1d"></a>1일(24시간)입니다. UTC를 기준으로 하루가 끝날 때마다 계산됩니다(월요일 오전 12:00:00, 화요일 오전 12:00:00 등).
  + **1주** - <a name="metric-window-1w"></a>1주(7일)입니다. UTC를 기준으로 일요일이 끝날 때마다 계산됩니다(매주 월요일 오전 12:00:00).
  + **사용자 지정 간격** - 1분에서 1주 사이의 원하는 시간 간격을 입력할 수 있습니다.
+ **오프셋 날짜** - (선택 사항) 데이터를 집계할 기준 날짜입니다.
+ **오프셋 시간** - (선택 사항) 데이터를 집계할 기준 시간입니다. 오프셋 시간은 00:00:00 에서 23:59:59 사이여야 합니다.
+ **오프셋 시간대** - (선택 사항) 오프셋의 시간대입니다. 지정되지 않은 경우 기본 오프셋 시간대는 협정 세계시(UTC)입니다. 지원되는 다음 시간대를 참조하세요.

### 지원되는 시간대
<a name="supported-time-zones"></a>
+ (UTC\$100:00) 협정 세계시
+ (UTC\$101:00) 유럽 중부 표준시
+ (UTC\$102:00) 동유럽
+ (UTC\$103:00) 동부 아프리카 표준시
+ (UTC\$104:00) 근동 표준시
+ (UTC\$105:00) 파키스탄 라호르 표준시
+ (UTC\$105:30) 인도 표준시
+ (UTC\$106:00) 방글라데시 표준시
+ (UTC\$107:00) 베트남 표준시
+ (UTC\$108:00) 중국 대만 표준시
+ (UTC\$109:00) 일본 표준시
+ (UTC\$109:30) 오스트레일리아 중부 표준시
+ (UTC\$110:00) 오스트레일리아 동부 표준시
+ (UTC\$111:00) 솔로몬 표준시
+ (UTC\$112:00) 뉴질랜드 표준시
+ (UTC-11:00) 미드웨이 제도 표준시
+ (UTC-10:00) 하와이 표준시
+ (UTC-09:00) 알래스카 표준시
+ (UTC-08:00) 태평양 표준시
+ (UTC-07:00) 피닉스 표준시
+ (UTC-06:00) 미국 중부 표준시
+ (UTC-05:00) 미국 동부 표준시
+ (UTC-04:00) 푸에르토리코 및 미국령 버진아일랜드 표준시
+ (UTC-03:00) 아르헨티나 표준시
+ (UTC-02:00) 사우스조지아 표준시
+ (UTC-01:00) 중앙아프리카 표준시

**Example 오프셋 사용 사용자 지정 시간 간격(콘솔)**  
다음 예제는 2021년 2월 20일 오후 6시 30분(PST)에 오프셋을 사용하여 12시간 간격을 정의하는 방법을 보여줍니다.  

**오프셋을 사용하여 사용자 지정 구간을 정의하려면 다음을 수행하세요.**

1. **시간 간격**의 경우 **사용자 지정 간격**을 선택합니다.

1. **시간 간격**의 경우 다음 중 하나를 수행하세요.
   + **12**를 입력한 다음 **시간**을 선택합니다.
   + **720**을 입력한 다음 **분**을 선택합니다.
   + **43200**을 입력한 다음 **초**를 선택합니다.
**중요**  
**시간 간격**은 단위에 관계없이 정수여야 합니다.

1. **오프셋 날짜**로 **2021/02/20**을 선택합니다.

1. **오프셋 시간**에는 **18:30:30**을 입력합니다.

1. **오프셋 시간대**의 경우 **(UTC-08:00) 태평양 표준시**를 선택합니다.
2021년 7월 1일 오후 6시 30분 30초(PST) 이전에 지표를 생성하면 2021년 7월 1일 오후 6시 30분 30초(PST)에 첫 번째 집계 결과를 얻을 수 있습니다. 두 번째 집계 결과는 2021년 7월 2일 오전 6시 30분 30초(PST)이고, 이러한 간격으로 계속 진행됩니다.

## 지표 정의(AWS CLI)
<a name="define-metrics-cli"></a>

 AWS IoT SiteWise API를 사용하여 자산 모델에 대한 지표를 정의할 때 다음 파라미터를 지정합니다.
+ <a name="asset-property-name-cli"></a>`name` - 속성의 이름입니다.
+ `dataType` – 지표의 데이터 유형으로 `DOUBLE` 또는 `STRING`일 수 있습니다.
+ `externalId` – (선택 사항) 이는 사용자 정의 ID입니다. 자세한 내용은AWS IoT SiteWise 사용 설명서**의 [외부 ID가 있는 참조 객체](object-ids.md#external-id-references)를 참조하세요.
+ `expression` – 지표 표현식입니다. 지표 표현식은 [집계 함수](expression-aggregation-functions.md)를 사용하여 계층 구조의 모든 관련 자산에 대한 속성 데이터를 입력할 수 있습니다. 자세한 내용은 [수식 표현식 사용](formula-expressions.md) 단원을 참조하십시오.
+ `window` - 이전 간격이 끝날 때 각 간격이 시작되는 지표의 연속 창에 대한 시간 간격 및 오프셋:
  + `interval` – 연속 창의 시간 간격입니다. 시간 간격은 1분과 1주 사이여야 합니다.
  + `offsets` - 연속 창의 오프셋입니다.

  자세한 내용은 *AWS IoT SiteWise API 참조*의 [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html)를 참조하세요.  
**Example 오프셋이 있는 사용자 지정 시간 간격(AWS CLI)**  

  다음 예제는 2021년 2월 20일 오후 6시 30분(PST)에 오프셋을 사용하여 12시간 간격을 정의하는 방법을 보여줍니다.

  ```
  {
      "window": {
          "tumbling": {
              "interval": "12h",
              "offset": " 2021-07-23T18:30:30-08"
          }
      }
  }
  ```

  2021년 7월 1일 오후 6시 30분 30초(PST) 이전에 지표를 생성하면 2021년 7월 1일 오후 6시 30분 30초(PST)에 첫 번째 집계 결과를 얻을 수 있습니다. 두 번째 집계 결과는 2021년 7월 2일 오전 6시 30분 30초(PST)이고, 이러한 간격으로 계속 진행됩니다.
+ `variables` – 표현식에 사용할 자산 또는 하위 자산의 기타 속성을 정의하는 변수 목록입니다. 각 변수 구조에는 표현식에 사용할 간단한 이름과 해당 변수에 연결할 속성을 지정하는 `value` 구조가 포함되어 있습니다. `value` 구조에는 다음 정보가 포함되어 있습니다.
  + `propertyId` – 값을 가져올 속성의 ID입니다. 속성이 계층의 모델에 정의되어 있지 않고 현재 모델에 정의된 경우 ID 대신 속성 이름을 사용할 수 있습니다.
  + `hierarchyId` – (선택 사항) 속성에 대한 하위 자산을 쿼리할 계층의 ID입니다. ID 대신 계층 정의의 이름을 사용할 수 있습니다. 이 값을 생략하면가 현재 모델에서 속성을 AWS IoT SiteWise 찾습니다.
**중요**  <a name="metric-input-rules"></a>
지표는 정수, 실수, 부울 또는 문자열 유형의 속성만 입력할 수 있습니다. 부울은 `0`(거짓)와 `1`(참)로 변환됩니다.  
지표의 표현식에서 지표 입력 변수를 정의하는 경우, 이러한 입력의 시간 간격은 출력 지표와 동일해야 합니다.  
<a name="formula-output-rules"></a>공식 표현식은 실수 또는 문자열 값만 출력할 수 있습니다. 중첩 표현식은 문자열과 같은 다른 데이터 유형을 출력할 수 있지만 공식 전체는 숫자나 문자열로 평가되어야 합니다. [jp 함수](expression-string-functions.md#jp-definition)를 사용하여 문자열을 숫자로 변환할 수 있습니다. 부울 값은 1(참) 또는 0(거짓)이어야 합니다. 자세한 내용은 [정의되지 않은 값, 무한 값 및 오버플로우 값](expression-tutorials.md#undefined-values) 단원을 참조하십시오.
+ <a name="asset-property-unit-cli"></a>`unit` – (선택 사항) 속성에 대한 과학적 단위(예: mm 또는 섭씨)입니다.

**Example 지표 정의 예**  
다음 예제에서는 자산의 온도 측정 데이터를 집계하여 시간당 최대 화씨 온도를 계산하는 지표 속성을 보여줍니다. 이 객체는 [지표](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html)가 포함된 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)의 예입니다. 이 객체를 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 요청 페이로드의 일부로 지정하여 지표 속성을 생성할 수 있습니다. 자세한 내용은 [자산 모델 생성(AWS CLI)](create-asset-models.md#create-asset-model-cli) 단원을 참조하십시오.  

```
{
      ...
      "assetModelProperties": [
      ...
      {
        "name": "Max temperature",
        "dataType": "DOUBLE",
        "type": {
          "metric": {
            "expression": "max(temp_f)",
            "variables": [
              {
                "name": "temp_f",
                "value": {
                  "propertyId": "Temperature F"
                }
              }
            ],
            "window": {
              "tumbling": {
                "interval": "1h"
              }
            }
          }
        },
        "unit": "Fahrenheit"
      }
    ],
    ...
}
```

**Example 관련 자산에서 데이터를 입력하는 지표 정의 예시**  
다음 예는 여러 풍력 터빈의 평균 전력 데이터를 집계하여 풍력 발전 단지의 총 평균 전력을 계산하는 지표 속성을 보여줍니다. 이 객체는 [지표](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html)가 포함된 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)의 예입니다. 이 객체를 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 요청 페이로드의 일부로 지정하여 지표 속성을 생성할 수 있습니다.  

```
{
      ...
      "assetModelProperties": [
      ...
      {
          "name": "Total Average Power",
          "dataType": "DOUBLE",
          "type": {
            "metric": {
              "expression": "avg(power)",
              "variables": [
                {
                  "name": "power",
                  "value": {
                    "propertyId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
                    "hierarchyId": "Turbine Asset Model"
                  }
                }
              ],
              "window": {
                "tumbling": {
                  "interval": "5m"
                }
              }
            }
        },
        "unit": "kWh"
      }
    ],
    ...
}
```

# 수식 표현식 사용
<a name="formula-expressions"></a>

수식 표현식을 사용하면 수학 함수를 정의하여 원시 산업 데이터를 변형하고 집계함으로써 작업에 대한 통찰력을 얻을 수 있습니다. 수식 표현식은 리터럴, 연산자, 함수 및 변수를 결합하여 데이터를 처리합니다. 공식 표현식을 사용하는 자산 속성을 정의하는 방법에 대한 자세한 내용은 [데이터 변환(변환)](transforms.md) 및 [속성과 기타 자산에서 데이터 집계(지표)](metrics.md) 단원을 참조하세요. 변환과 지표는 공식 속성입니다.

**Topics**
+ [수식 표현식에서 변수 사용](expression-variables.md)
+ [수식 표현식에 리터럴 사용](expression-literals.md)
+ [수식 표현식에 연산자 사용](expression-operators.md)
+ [수식 표현식에 상수 사용](expression-constants.md)
+ [수식 표현식에서 함수 사용](expression-functions.md)
+ [공식 표현식 튜토리얼](expression-tutorials.md)

# 수식 표현식에서 변수 사용
<a name="expression-variables"></a>

변수는 수식 표현식의 AWS IoT SiteWise 자산 속성을 나타냅니다. 변수를 사용하여 표현식에 다른 자산 속성의 값을 입력하면 상수 속성([속성](attributes.md)), 원시 데이터 스트림([측정](measurements.md)) 및 기타 공식 속성의 데이터를 처리할 수 있습니다.

변수는 동일한 자산 모델 또는 관련 하위 자산 모델의 자산 속성을 나타낼 수 있습니다. 지표 공식만 하위 자산 모델의 변수를 입력할 수 있습니다.

콘솔과 API에서 변수를 서로 다른 이름으로 식별할 수 있습니다.
+ **AWS IoT SiteWise 콘솔** - 표현식에서 자산 속성 이름을 변수로 사용합니다.
+ **AWS IoT SiteWise API(AWS CLI, AWS SDKs)** - 변수 이름과 자산 속성에 대한 참조가 필요한 [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html) 구조로 변수를 정의합니다. 변수 이름에는 소문자, 숫자, 밑줄이 포함될 수 있습니다. 그런 다음 변수 이름을 사용하여 표현식의 자산 속성을 참조합니다.

변수 이름은 대소문자를 구분합니다.

자세한 내용은 [변환 정의](transforms.md) 및 [지표 정의](metrics.md)를 참조하세요.

## 변수를 사용하여 속성 참조
<a name="variable-values"></a>

변수의 *값*은 변수가 참조하는 속성을 정의합니다. AWS IoT SiteWise 는 이를 수행하는 다양한 방법을 제공합니다.
+ **속성 ID별:** 속성의 고유 ID(UUID)를 지정하여 식별할 수 있습니다.
+ **이름별:** 속성이 동일한 자산 모델에 있는 경우 속성 ID 필드에 해당 이름을 지정할 수 있습니다.
+ **경로별:** 변수 값은 *경로*별 속성을 참조할 수 있습니다. 자세한 내용은 [경로를 사용하여 사용자 지정 복합 모델 속성 참조](custom-composite-models.md#property-paths) 단원을 참조하십시오.

**참고**  
 변수는 AWS IoT SiteWise 콘솔에서 지원되지 않습니다. AWS Command Line Interface AWS CLI) 및 AWS SDKs를 포함하여 AWS IoT SiteWise API에서 사용됩니다.

 에서 응답으로 수신하는 변수에는 ID와 경로를 포함하여 값에 대한 전체 정보가 AWS IoT SiteWise 포함됩니다.

 그러나 변수를에 전달할 때 AWS IoT SiteWise (예: "생성" 또는 "업데이트" 호출에서)이 중 하나만 지정하면 됩니다. 예를 들어 경로를 지정하는 경우 ID를 제공할 필요가 없습니다.

# 수식 표현식에 리터럴 사용
<a name="expression-literals"></a>

AWS IoT SiteWise 는 표현식 및 수식에서 리터럴 사용을 지원합니다. 리터럴은 특정 데이터 유형을 나타내는 고정 값입니다. 에서는 수식 표현식에서 숫자 및 문자열 리터럴을 정의할 AWS IoT SiteWise수 있습니다. 리터럴은 데이터 변환, 경보 조건 및 시각화 계산을 비롯한 다양한 컨텍스트에서 사용할 수 있습니다.


+ <a name="number-literal-definition"></a>**숫자**

  숫자와 과학 표기법을 사용하여 정수와 실수를 정의합니다. [E 표기법](https://en.wikipedia.org/wiki/Scientific_notation#E_notation)을 사용하여 숫자를 과학적 표기법으로 표현할 수 있습니다.

  예: `1`, `2.0`, `.9`, `-23.1`, `7.89e3`, `3.4E-5` 
+ <a name="string-literal-definition"></a>**문자열**

  `'`(따옴표) 및 `"`(큰따옴표) 문자를 사용하여 문자열을 정의합니다. 시작과 끝의 따옴표 유형은 일치해야 합니다. 문자열을 선언할 때 사용하는 것과 일치하는 따옴표를 이스케이프하려면 해당 따옴표를 두 번 포함시키세요. AWS IoT SiteWise 문자열에서 유일한 이스케이프 문자입니다.

  예: `'active'`, `"inactive"`, `'{"temp": 52}'`, `"{""temp"": ""high""}"` 

# 수식 표현식에 연산자 사용
<a name="expression-operators"></a>

공식 표현식에는 다음과 같은 일반적인 수학 연산자를 사용할 수 있습니다.


| 연산자 | 설명 | 
| --- | --- | 
|  `+`  |  두 피연산자가 모두 숫자인 경우 이 연산자는 왼쪽 및 오른쪽 피연산자를 더합니다. 피연산자 중 하나가 문자열인 경우 이 연산자는 왼쪽 및 오른쪽 피연산자를 문자열로 연결합니다. 예를 들어, 표현식 `1 + 2 + " is three"`은 `"3 is three"`로 평가됩니다. 문자열은 최대 1,024자를 가질 수 있습니다. 문자열이 1,024자를 초과하는 경우 AWS IoT SiteWise 에서는 해당 계산에 대한 데이터 포인트를 출력하지 않습니다.  | 
|  `-`  |  왼쪽 피연산자에서 오른쪽 피연산자를 뺍니다. <a name="operator-numbers-only"></a>이 연산자는 숫자 피연산자에만 사용할 수 있습니다.  | 
|  `/`  |  왼쪽 피연산자를 오른쪽 피연산자로 나눕니다. <a name="operator-numbers-only"></a>이 연산자는 숫자 피연산자에만 사용할 수 있습니다.  | 
|  `*`  |  왼쪽 피연산자와 오른쪽 피연산자를 곱합니다. <a name="operator-numbers-only"></a>이 연산자는 숫자 피연산자에만 사용할 수 있습니다.  | 
|  `^`  |  왼쪽 피연산자를 오른쪽 피연산자의 거듭제곱으로 올립니다(지수). <a name="operator-numbers-only"></a>이 연산자는 숫자 피연산자에만 사용할 수 있습니다.  | 
|  `%`  |  왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 반환합니다. 결과는 왼쪽 피연산자와 동일한 부호를 가집니다. 이 동작은 모듈로 작업과 다릅니다. <a name="operator-numbers-only"></a>이 연산자는 숫자 피연산자에만 사용할 수 있습니다.  | 
|  `x < y`  |  `x`가 `y`보다 작으면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `x > y`  |  `x`가 `y`보다 크면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `x <= y`  |  `x`가 `y`보다 작거나 같으면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `x >= y`  |  `x`가 `y`보다 크거나 같으면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `x == y`  |  `x`가 `y`와 같으면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `x != y`  |  `x`가 `y`와 같지 않으면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다.  | 
|  `!x`  |  `x`가 `0`(거짓)으로 평가되면 `1`를 반환하고, 그렇지 않으면 `0`를 반환합니다. 다음과 같은 경우 `x`는 거짓으로 평가됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  `x`가 `0`(거짓)로 평가되면 `0`을 반환합니다. 그렇지 않으면 `y`의 평가된 결과를 반환합니다. `x` 또는 `y`는 다음과 같은 경우 거짓으로 평가됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  `x`가 `1`(참)로 평가되면 `1`을 반환합니다. 그렇지 않으면 `y`의 평가된 결과를 반환합니다. `x` 또는 `y`는 다음과 같은 경우 거짓으로 평가됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  `x`가 `0`(거짓)으로 평가되면 `1`를 반환하고, 그렇지 않으면 `0`를 반환합니다. 다음과 같은 경우 `x`는 거짓으로 평가됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  문자열 `s`의 인덱스 `index`에 있는 문자를 반환합니다. 이 구문은 Python의 인덱스 구문과 동등합니다. 

**Example 예제**  
+ `"Hello!"[1]`에서 `e`를 반환합니다.
+ `"Hello!"[-2]`에서 `o`를 반환합니다.  | 
|   `[]` `s[start:end:step]`  |  문자열 `s`의 한 조각을 반환합니다. 이 구문은 Python의 조각 구문과 동등합니다. 이 연산자에는 다음과 같은 인수가 사용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-operators.html) `step` 인수를 생략하여 기본값을 사용할 수 있습니다. 예를 들어, `s[1:4:1]`은 `s[1:4]`과 같습니다. 인수는 정수이거나 [없음](expression-constants.md#none-definition) 상수여야 합니다. 를 지정하면 해당 인수의 기본값을 `none` AWS IoT SiteWise 사용합니다. 

**Example 예제**  
+ `"Hello!"[1:4]`에서 `"ell"`를 반환합니다.
+ `"Hello!"[:2]`에서 `"He"`를 반환합니다.
+ `"Hello!"[3:]`에서 `"lo!"`를 반환합니다.
+ `"Hello!"[:-4]`에서 `"He"`를 반환합니다.
+ `"Hello!"[::2]`에서 `"Hlo"`를 반환합니다.
+ `"Hello!"[::-1]`에서 `"!olleH"`를 반환합니다.  | 

# 수식 표현식에 상수 사용
<a name="expression-constants"></a>

에서는 표현식 및 공식에서 상수를 사용하여 고정 값 또는 사전 정의된 파라미터를 나타낼 AWS IoT SiteWise수 있습니다. 상수는 데이터 변환, 경보 조건 또는 시각화 계산과 같은 다양한 컨텍스트에서 사용할 수 있습니다. 상수를 사용하면 표현식을 단순화하고 더 쉽게 읽고 유지 관리할 수 있습니다.

표현식에는 다음과 같은 일반적인 수학 상수를 사용할 수 있습니다. 모든 상수는 대소문자를 구분하지 않습니다.

**참고**  
상수와 이름이 같은 변수를 정의하면 변수가 상수보다 우선합니다.


| 상수 | 설명 | 
| --- | --- | 
|  `pi`  |  숫자 pi(`π`): `3.141592653589793`  | 
|  `e`  |  숫자 e: `2.718281828459045`  | 
|  `true`  |  숫자 1에 해당합니다. 에서 AWS IoT SiteWise부울은 해당 숫자로 변환됩니다.  | 
|  `false`  |  숫자 0에 해당합니다. 에서 AWS IoT SiteWise부울은 해당 숫자로 변환됩니다.  | 
|   `none`  |  값이 없는 것과 같습니다. 이 상수를 사용하여 [조건부 표현식](expression-conditional-functions.md)의 결과로 아무것도 출력하지 않을 수 있습니다.  | 

# 수식 표현식에서 함수 사용
<a name="expression-functions"></a>

다음 함수를 사용하여 공식 표현식의 데이터에 대해 작업할 수 있습니다.

변환과 지표는 서로 다른 함수를 지원합니다. 다음 표에는 각 유형의 공식 속성과 호환되는 함수 유형이 나와 있습니다.

**참고**  
공식 표현식에는 최대 10개의 함수를 포함할 수 있습니다.


| 함수 유형 | 변형 | Metrics | 
| --- | --- | --- | 
|  [수식 표현식에서 공통 함수 사용](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 비교 함수 사용](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 조건부 함수 사용](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 문자열 함수 사용](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 집계 함수 사용](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-no.png) 아니요  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 시간 함수 사용](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 
|  [수식 표현식에서 날짜 및 시간 함수 사용](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/icon-yes.png) 예  | 

## 함수 구문
<a name="expression-function-syntax"></a>

다음 구문을 사용하여 함수를 만들 수 있습니다.

일반 구문  
일반 구문에서는 함수 이름 뒤에 0개 이상의 인수가 포함된 괄호가 옵니다.  
`function_name(argument1, argument2, argument3, ...)`. 예를 들어, 일반 구문을 사용하는 함수는 `log(x)` 및 `contains(s, substring)`와 비슷할 수 있습니다.

UFCS(균일한 함수 호출 구문)  
UFCS를 사용하면 객체 지향 프로그래밍의 메서드 호출 구문을 사용하여 함수를 호출할 수 있습니다. UFCS에서는 첫 번째 인수 다음에 점(`.`), 함수 이름, 나머지 인수(있는 경우) 가 괄호 안에 옵니다.  
`argument1.function_name(argument2, argument3, ...)`. 예를 들어, UFCS를 사용하는 함수는 `x.log()` 및 `s.contains(substring)`와 비슷할 수 있습니다.  
UFCS를 사용하여 후속 함수를 연결할 수도 있습니다.는 현재 함수의 평가 결과를 다음 함수의 첫 번째 인수로 AWS IoT SiteWise 사용합니다.  
예를 들어, `contains(lower(jp(message, '$.status')),'fail')` 대신 `message.jp('$.status').lower().contains('fail')`를 사용할 수 있습니다.  
자세한 내용은 [D 프로그래밍 언어](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs) 웹 사이트를 방문하세요.

**참고**  
모든 AWS IoT SiteWise 함수에 UFCS를 사용할 수 있습니다.  
AWS IoT SiteWise 함수는 대/소문자를 구분하지 않습니다. 예를 들어, `lower(s)` 및 `Lower(s)`를 서로 바꿔서 사용할 수 있습니다.

# 수식 표현식에서 공통 함수 사용
<a name="expression-common-functions"></a>

[변환](transforms.md)과 [지표](metrics.md)에서는 다음 함수를 사용하여 변환과 지표의 일반적인 수학 함수를 계산할 수 있습니다.


| 함수 | 설명 | 
| --- | --- | 
|  `abs(x)`  |  `x`의 절대값을 반환합니다.  | 
|  `acos(x)`  |  `x`의 아크코사인을 반환합니다.  | 
|  `asin(x)`  |  `x`의 아크사인을 반환합니다.  | 
|  `atan(x)`  |  `x`의 아크탄젠트를 반환합니다.  | 
|  `cbrt(x)`  |  `x`의 세제곱근을 반환합니다.  | 
|  `ceil(x)`  |  `x`보다 큰 가장 가까운 정수를 반환합니다.  | 
|  `cos(x)`  |  `x`의 코사인을 반환합니다.  | 
|  `cosh(x)`  |  `x`의 쌍곡코사인을 반환합니다.  | 
|  `cot(x)`  |  `x`의 코탄젠트를 반환합니다.  | 
|  `exp(x)`  |  `e`를 `x`의 거듭제곱으로 반환합니다.  | 
|  `expm1(x)`  |  `exp(x) - 1`을 반환합니다. 이 함수를 사용하면 `x`의 작은 값에 대해 `exp(x) - 1`를 더 정확하게 계산할 수 있습니다.  | 
|  `floor(x)`  |  `x`보다 작은 가장 가까운 정수를 반환합니다.  | 
|  `log(x)`  |  `x`의 `loge`(밑 `e`)반환합니다.  | 
|  `log10(x)`  |  `x`의 `log10`(밑 `10`)반환합니다.  | 
|  `log1p(x)`  |  `log(1 + x)`을 반환합니다. 이 함수를 사용하면 `x`의 작은 값에 대해 `log(1 + x)`를 더 정확하게 계산할 수 있습니다.  | 
|  `log2(x)`  |  `x`의 `log2`(밑 `2`)반환합니다.  | 
|  `pow(x, y)`  |  `x`를 `y`의 거듭제곱으로 반환합니다. 이는 `x ^ y`와 동일합니다.  | 
|  `signum(x)`  |  `x`의 부호를 반환합니다(음수를 입력하면 `-1`, 0을 입력하면 `0`, 양수를 입력하면 `+1`).  | 
|  `sin(x)`  |  `x`의 사인을 반환합니다.  | 
|  `sinh(x)`  |  `x`의 쌍곡사인을 반환합니다.  | 
|  `sqrt(x)`  |  `x`의 제곱근을 반환합니다.  | 
|  `tan(x)`  |  `x`의 탄젠트를 반환합니다.  | 
|  `tanh(x)`  |  `x`의 쌍곡탄젠트를 반환합니다.  | 

# 수식 표현식에서 비교 함수 사용
<a name="expression-comparison-functions"></a>

[변환](transforms.md) 및 [지표](metrics.md)에서 다음 비교 함수를 사용하여 두 값과 출력`1`(true) 또는 `0` (false)을 비교할 수 있습니다.는 [어휘 순서](https://en.wikipedia.org/wiki/Lexicographic_order)별로 문자열을 AWS IoT SiteWise 비교합니다.


| 함수 | 설명 | 
| --- | --- | 
|  `gt(x, y)`  |  `x`가 `y`보다 크면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다(`x > y`). <a name="comparison-function-incompatible-types"></a>이 함수는 `x` 및 `y`가 숫자 및 문자열과 같이 호환되지 않는 유형인 경우 값을 반환하지 않습니다.  | 
|  `gte(x, y)`  |  `x`가 `y`보다 크거나 같으면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다(`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 는 인수가의 상대 허용 오차 내에 있는 경우 인수를 동일하게 간주합니다`1E-9`. 이것은 Python의 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 함수와 비슷하게 동작합니다. <a name="comparison-function-incompatible-types"></a>이 함수는 `x` 및 `y`가 숫자 및 문자열과 같이 호환되지 않는 유형인 경우 값을 반환하지 않습니다.  | 
|  `eq(x, y)`  |  `x`가 `y`와 같으면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다(`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 는 인수가의 상대 허용 오차 내에 있는 경우 인수를 동일하게 간주합니다`1E-9`. 이것은 Python의 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 함수와 비슷하게 동작합니다. <a name="comparison-function-incompatible-types"></a>이 함수는 `x` 및 `y`가 숫자 및 문자열과 같이 호환되지 않는 유형인 경우 값을 반환하지 않습니다.  | 
|  `lt(x, y)`  |  `x`가 `y`보다 작으면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다(`x < y`). <a name="comparison-function-incompatible-types"></a>이 함수는 `x` 및 `y`가 숫자 및 문자열과 같이 호환되지 않는 유형인 경우 값을 반환하지 않습니다.  | 
|  `lte(x, y)`  |  `x`가 `y`보다 작거나 같으면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다(`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 는 인수가의 상대 허용 오차 내에 있는 경우 인수를 동일하게 간주합니다`1E-9`. 이것은 Python의 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 함수와 비슷하게 동작합니다. <a name="comparison-function-incompatible-types"></a>이 함수는 `x` 및 `y`가 숫자 및 문자열과 같이 호환되지 않는 유형인 경우 값을 반환하지 않습니다.  | 
|  `isnan(x)`  |  `x`가 `NaN`와 같으면 `1`을 반환하고, 그렇지 않으면 `0`를 반환합니다. 이 함수는 `x`가 문자열인 경우 값을 반환하지 않습니다.  | 

# 수식 표현식에서 조건부 함수 사용
<a name="expression-conditional-functions"></a>

[변환](transforms.md) 및 [지표](metrics.md)에서 다음 함수를 사용하여 조건을 확인하고 조건이 참으로 평가되는지 거짓으로 평가되는지에 관계없이 다양한 결과를 반환할 수 있습니다.


| 함수 | 설명 | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  `condition`을 평가하고 조건이 참으로 평가되면 `result_if_true`를 반환하고 조건이 `false`로 평가되면 `result_if_false`를 반환합니다. `condition`은 숫자여야 합니다. 이 함수는 `0` 및 빈 문자열을 `false`로 간주하고 그 밖의 모든 것(`NaN` 포함)을 `true`로 간주합니다. 부울은 `0`(거짓)와 `1`(참)로 변환됩니다. 이 함수에서 [none 상수](expression-constants.md#none-definition)를 반환하여 특정 조건에 대한 출력값을 무시할 수 있습니다. 즉, 조건을 충족하지 않는 데이터 포인트를 필터링할 수 있습니다. 자세한 내용은 [데이터 포인트 필터링](expression-tutorials.md#filter-data) 단원을 참조하십시오. 

**Example 예제**  
+ `if(0, x, y)`에서는 변수 `y`를 반환합니다.
+ `if(5, x, y)`에서는 변수 `x`를 반환합니다.
+ `if(gt(temp, 300), x, y)`에서는 변수 `temp`가 `300`보다 크면 변수 `x`를 반환합니다.
+ `if(gt(temp, 300), temp, none)`에서는 `300`보다 크거나 같으면 변수 `temp`를 반환하고, `temp`가 `300`보다 작으면 `none`(값 없음)을 반환합니다. 하나 이상의 인수가 조건 함수인 중첩 조건 함수에는 UFCS를 사용하는 것이 좋습니다. `if(condition, result_if_true)`를 사용하여 조건을 평가하고 `elif(condition, result_if_true, result_if_false)`를 사용하여 추가 조건을 평가할 수 있습니다. 예를 들어, `if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))` 대신 `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)`를 사용할 수 있습니다. 중간 조건 함수를 추가로 연결할 수도 있습니다. 예를 들어, `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)`와 같이 여러 `if` 문을 중첩하는 대신 `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`를 사용할 수 있습니다.  UFCS와 함께 `elif(condition, result_if_true, result_if_false)`를 사용해야 합니다.   | 

# 수식 표현식에서 문자열 함수 사용
<a name="expression-string-functions"></a>

[변환](transforms.md) 및 [지표](metrics.md)에서는 다음 함수를 사용하여 문자열에 대한 작업을 할 수 있습니다. 자세한 내용은 [수식에서 문자열 사용](expression-tutorials.md#use-strings-in-formulas) 단원을 참조하십시오.

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


| 함수 | 설명 | 
| --- | --- | 
|  `len(s)`  |  문자열 `s`의 길이를 반환합니다.  | 
|  `find(s, substring)`  |  문자열 `s`에 있는 문자열 `substring`의 인덱스를 반환합니다.  | 
|  `contains(s, substring)`  |  문자열 `s`에 문자열 `substring`가 포함되어 있으면 `1`를 반환하고, 그렇지 않으면 `0`를 반환합니다.  | 
|  `upper(s)`  |  문자열 `s`를 대문자 형태로 반환합니다.  | 
|  `lower(s)`  |  문자열 `s`를 소문자 형식으로 반환합니다.  | 
|   `jp(s, json_path)`  |  [JSONPath](https://github.com/json-path/JsonPath) 표현식 `json_path`로 문자열 `s`를 평가하고 결과를 반환합니다. 이 함수를 사용하여 다음을 수행합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-string-functions.html) JSON 구조에서 문자열 값을 추출하여 숫자로 반환하려면 여러 중첩 `jp` 함수를 사용해야 합니다. 외부 `jp` 함수는 JSON 구조에서 문자열을 추출하고, 내부 `jp` 함수는 문자열을 숫자로 변환합니다. 문자열 `json_path`는 문자열 리터럴을 포함해야 합니다. 즉, `json_path`는 문자열로 평가되는 표현식일 수 없습니다. 

**Example 예제**  
+ `jp('{"status":"active","value":15}', '$.value')`에서 `15`를 반환합니다.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')`에서 `25`를 반환합니다.
+ `jp('[2,8,23]', '$[2]')`에서 `23`를 반환합니다.
+ `jp('{"values":[3,6,7]}', '$.values[1]')`에서 `6`를 반환합니다.
+ `jp('111', '$')`에서 `111`를 반환합니다.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')`에서 `0.95`를 반환합니다.  | 
|  `join(s0, s1, s2, s3, ...)`  |  구분 기호와 함께 연결된 문자열을 반환합니다. 이 함수는 첫 번째 입력 문자열을 구분 기호로 사용하고 나머지 입력 문자열을 결합합니다. 이는 Java의 [조인(CharSequence 구분 기호, CharSequence... 요소](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-)) 함수와 비슷하게 동작합니다. 

**Example 예제**  
+ `join("-", "aa", "bb", "cc")`에서 `aa-bb-cc` 반환  | 
|  `format(expression: "format")` 또는 `format("format", expression)`  |  지정된 형식의 문자열을 반환합니다. 이 함수는 `expression` 값으로 평가한 다음 지정된 형식으로 값을 반환합니다. 이 함수는 Java의 [형식(문자열 형식, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) 함수와 비슷하게 동작합니다. 지원되는 형식에 대한 자세한 내용은 *Java 플랫폼, Standard Edition 7 API 사양*의 [클래스 포맷터](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)에서 변환을 참조하세요. 

**Example 예제**  
+ `format(100+1: "d")`에서 문자열 `101`을 반환합니다.
+ `format("The result is %d", 100+1)`에서 문자열 `The result is 101`을 반환합니다.  | 
|  `f'expression'`  |  연결된 문자열을 반환합니다. 이 형식이 지정된 함수를 사용하면 간단한 표현식을 사용하여 문자열을 연결하고 서식을 지정할 수 있습니다. 이러한 함수에는 중첩된 표현식이 포함될 수 있습니다. `{}`(중괄호)를 사용하여 표현식을 보간할 수 있습니다. 이것은 Python의 [형식이 지정된 문자열 리터럴](https://docs.python.org/3/reference/lexical_analysis.html#f-strings)과 유사하게 동작합니다. 

**Example 예제**  
+ `f'abc{1+2: "f"}d'`에서 `abc3.000000d`를 반환합니다. 이 예제 표현식을 평가하려면 다음을 수행하세요.

  1. `format(1+2: "f")`에서 부동 소수점 숫자 `3.000000`를 반환합니다.

  1. `join('', "abc", 1+2, 'd')`에서 문자열 `abc3.000000d`을 반환합니다.

  `join('', "abc", format(1+2: "f"), 'd')`와 같은 방법으로 표현식을 작성할 수도 있습니다.  | 

# 수식 표현식에서 집계 함수 사용
<a name="expression-aggregation-functions"></a>

[지표](metrics.md)에 한해, 다음 함수를 사용하여 각 시간 간격 동안 입력 값을 집계하고 단일 출력 값을 계산할 수 있습니다. 집계 함수는 연결된 자산의 데이터를 집계할 수 없습니다.

집계 함수 인수는 [변수](expression-variables.md), [숫자 리터럴](expression-literals.md#number-literal-definition), [시간 함수](expression-temporal-functions.md), 중첩 표현식 또는 집계 함수일 수 있습니다. 이 공식 `max(latest(x), latest(y), latest(z))`는 집계 함수를 인수로 사용하고 `x`, `y`, `z` 속성의 현재 최대 값을 반환합니다.

집계 함수에서 중첩 표현식을 사용할 수 있습니다. 중첩된 표현식을 사용할 때는 다음 규칙이 적용됩니다.
+ 각 인수에는 변수가 하나만 있을 수 있습니다.  
**Example**  

  예를 들어, `avg(x*(x-1))` 및 `sum(x/2 )/avg(y^2 )`가 지원됩니다.

  예를 들어, `min(x/y)`는 지원되지 않습니다.
+ 각 인수에는 다단계 중첩 표현식이 있을 수 있습니다.  
**Example**  

  예를 들어 `sum(avg(x^2 )/2)`은 지원됩니다.
+ 인수마다 변수가 다를 수 있습니다.  
**Example**  

  예를 들어 `sum(x/2, y*2)`은 지원됩니다.

**참고**  
표현식에 측정값이 포함된 경우는 측정값에 대해 현재 시간 간격의 마지막 값을 AWS IoT SiteWise 사용하여 집계를 계산합니다.
표현식에 속성이 포함된 경우는 속성의 최신 값을 AWS IoT SiteWise 사용하여 집계를 계산합니다.


| 함수 | 설명 | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  현재 시간 간격 동안 해당 변수 값의 평균을 반환합니다. <a name="aggregation-function-no-output"></a>이 함수는 지정된 변수에 현재 시간 간격 동안 하나 이상의 데이터 요소가 있는 경우에만 데이터 포인트를 출력합니다.  | 
|   `sum(x0, ..., xn)`  |  현재 시간 간격 동안 해당 변수 값의 합계를 반환합니다. <a name="aggregation-function-no-output"></a>이 함수는 지정된 변수에 현재 시간 간격 동안 하나 이상의 데이터 요소가 있는 경우에만 데이터 포인트를 출력합니다.  | 
|  `min(x0, ..., xn)`  |  현재 시간 간격 동안 해당 변수 값의 최소값을 반환합니다. <a name="aggregation-function-no-output"></a>이 함수는 지정된 변수에 현재 시간 간격 동안 하나 이상의 데이터 요소가 있는 경우에만 데이터 포인트를 출력합니다.  | 
|  `max(x0, ..., xn)`  |  현재 시간 간격 동안 해당 변수 값의 최대값을 반환합니다. <a name="aggregation-function-no-output"></a>이 함수는 지정된 변수에 현재 시간 간격 동안 하나 이상의 데이터 요소가 있는 경우에만 데이터 포인트를 출력합니다.  | 
|  `count(x0, ..., xn)`  |  현재 시간 간격 동안 해당 변수에 대한 총 데이터 포인트 수를 반환합니다. 조건을 충족하는 데이터 포인트 수를 계산하는 방법에 대한 자세한 내용은 [조건과 일치하는 데이터 포인트를 계산하려면 다음을 수행하세요.](expression-tutorials.md#count-filtered-data) 단원을 참조하세요. <a name="aggregation-function-always-output"></a>이 함수는 모든 시간 간격에 대한 데이터 포인트를 계산합니다.  | 
| `stdev(x0, ..., xn)` | 현재 시간 간격 동안 지정된 변수 값의 표준 편차를 반환합니다. 이 함수는 지정된 변수에 현재 시간 간격 동안 하나 이상의 데이터 요소가 있는 경우에만 데이터 포인트를 출력합니다.  | 

# 수식 표현식에서 시간 함수 사용
<a name="expression-temporal-functions"></a>

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

## 지표에서 시간 함수 사용
<a name="temporal-functions-in-metrics"></a>

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

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

시간 함수의 중첩 표현식을 사용할 수 있습니다. 중첩된 표현식을 사용할 때는 다음 규칙이 적용됩니다.
+ 각 인수에는 변수가 하나만 있을 수 있습니다.

  예를 들어 `latest( t*9/5 + 32 )`은 지원됩니다.
+ 인수는 집계 함수일 수 없습니다.

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


| 함수 | 설명 | 
| --- | --- | 
|  `first(x)`  |  현재 시간 간격 동안 해당 변수의 가장 오래된 타임스탬프가 있는 값을 반환합니다.  | 
|   `last(x)` |  현재 시간 간격 동안 해당 변수의 가장 최근 타임스탬프가 있는 값을 반환합니다.  | 
|  `earliest(x)`  |  현재 시간 간격 시작 이전에 해당 변수의 가장 최근 값을 반환합니다. 입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다. 세부 정보는 [time-range-defintion](#time-range-def) 섹션을 참조하세요.  | 
|   `latest(x)` |  현재 시간 간격 종료 이전에 해당 변수의 가장 최근 타임스탬프가 있는 값을 반환합니다. 입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다. 세부 정보는 [time-range-defintion](#time-range-def) 섹션을 참조하세요.  | 
|   `statetime(x)`  |  현재 시간 간격 동안 해당 변수가 양수인 시간(초)을 반환합니다. [비교 함수](expression-comparison-functions.md)를 사용하면 `statetime` 함수가 사용할 변형 속성을 만들 수 있습니다. 예를 들어 `Idle` 속성(`0` 또는 `1`)이 있는 경우, `IdleTime = statetime(Idle)` 표현식을 사용하여 시간 간격당 유휴 시간을 계산할 수 있습니다. 자세한 내용은 [상태 시간 시나리오 예](#statetime-example)를 참조하세요. 이 함수는 지표 속성을 입력 변수로 지원하지 않습니다. 입력 속성의 기록에 데이터 포인트가 하나 이상 있는 경우 이 함수는 1시간 간격으로 데이터 포인트를 계산합니다.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | 포인트 간 시간 간격을 두고 가중치를 적용한 입력 데이터의 평균을 반환합니다.계산 및 간격에 대한 자세한 내용은 [시간 가중 함수 파라미터](#timeweighted-parameter)를 참조하세요.선택적 인수 `interpolaton`는 문자열 상수여야 합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  포인트 간 시간 간격으로 가중치를 적용한 입력 데이터의 표준 편차를 반환합니다. 계산 및 간격에 대한 자세한 내용은 [시간 가중 함수 파라미터](#timeweighted-parameter)를 참조하세요.  계산에서는 데이터 포인트 간 간격에 대해 마지막으로 관찰된 캐리 포워드 계산 알고리즘을 사용합니다. 이 접근 방식에서는 데이터 포인트가 다음 입력 데이터 포인트 타임스탬프까지 마지막으로 관측된 값으로 계산됩니다. 가중치는 데이터 포인트 또는 창 경계 사이의 시간 간격(초)으로 계산됩니다. 선택적 인수 `algo`는 문자열 상수여야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-temporal-functions.html) 다음과 같은 경우 계산에 다음 공식이 사용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-temporal-functions.html) 모집단 표준 편차 방정식: ![\[모집단 표준 편차 방정식입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) 빈도 표준 편차 방정식: ![\[빈도 표준 편차의 방정식입니다.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

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

![\[AWS IoT SiteWise 시간 함수는 타임스탬프를 기반으로 데이터 포인트를 반환합니다.\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**참고**  
`first(x)`, `last(x)`의 시간 범위는 (현재 기간 시작, 현재 기간 종료]입니다.
`latest(x)`의 시간 범위는 (시간 시작, 현재 기간 종료]입니다.
`earliest(x)`의 시간 범위는 (시간 시작, 이전 기간 종료]입니다.

**시간 가중 함수 파라미터**

집계 기간에 대해 계산된 시간 가중 함수는 다음 사항을 고려합니다.
+ 기간 내부의 데이터 포인트
+ 데이터 포인트 간 시간 간격
+ 기간 전의 마지막 데이터 포인트
+ 기간 뒤의 첫 번째 데이터 포인트(일부 알고리즘의 경우)

**용어:**
+ **잘못된 데이터 포인트** - 품질이 좋지 않거나 숫자 값이 아닌 모든 데이터 포인트. 이는 기간 결과 계산에서 고려되지 않습니다.
+ **잘못된 간격** - 잘못된 데이터 지점 이후의 간격입니다. 알려진 첫 번째 데이터 지점 이전의 간격도 잘못된 간격으로 간주됩니다.
+ **양호한 데이터 포인트** - 품질이 우수하고 수치 값이 있는 모든 데이터 포인트.

**참고**  
AWS IoT SiteWise 는 변환 및 지표를 계산할 때만 `GOOD` 품질 데이터를 사용합니다. `UNCERTAIN` 및 `BAD` 데이터 포인트를 무시합니다.
알려진 첫 번째 데이터 포인트 이전의 간격은 **잘못된 간격**으로 간주됩니다. 자세한 정보는 [공식 표현식 튜토리얼](expression-tutorials.md)을 참조하세요.

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

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

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

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

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

**Example 상태 시간 시나리오 예**  
다음 속성을 가진 자산이 있는 예를 고려하세요.  
+ `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 | 해당 사항 없음 | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise 는 1분마다 다음과 같은 계산`Idle Time`을 수행합니다.  
+ 2:00 PM(1:59 PM \$1 2:00 PM)
  + 2:00 PM 이전에는 `Idle`에 대한 데이터가 없으므로 데이터 포인트가 계산되지 않습니다.
+ 2:01 PM(2:00 PM \$1 2:01 PM)
  + 2:00:00 PM에 머신이 활성 상태입니다(`Idle`이 `0`임).
  + 2:00:30 PM에 머신이 유휴 상태입니다(`Idle`가 `1`임).
  + `Idle`은 2:01:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 `Idle Time`은 30초입니다.
+ 2:02 PM(2:01 PM \$1 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 \$1 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 \$1 2:04 PM)
  + 2:03:00 PM에 머신이 유휴 상태입니다(2:02:45 PM의 마지막 데이터 포인트에 따라).
  + `Idle`은 2:04:00 PM에 간격이 끝나기 전에 다시 변경되지 않으므로 `Idle Time`은 0초입니다.

**Example 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 | 없음 | 없음 | 0 | 없음 | 없음 | 
| 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 | 없음 | 0 | 0 | 없음 | 0 | 0 | 

## 변환에서 시간 함수 사용
<a name="temporal-functions-in-transforms"></a>

[변환](transforms.md)의 경우에만 `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 형식으로 반환합니다. 자세한 내용은 [수식 표현식에서 조건부 함수 사용](expression-conditional-functions.md) 및 [timestamp()](expression-date-and-time-functions.md) 함수를 참조하세요.

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

또한 `pretrigger()` 함수를 다변량 변환에서 사용할 수 있습니다. 예를 들어, 이름이 `x` 및 `y`인 측정값 두 개와 `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분에 `z`는 `22 = 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 \$1 2 \$1 1 `pretrigger(y)`는 1과 같습니다.  |  25 = 20 \$1 3 \$1 2 `x`는 새 데이터 포인트를 받지 않습니다. `pretrigger(y)`는 2와 같습니다.  |  36 = 30 \$1 3 \$1 3 `y`는 새 데이터 포인트를 받지 않습니다. 따라서 `pretrigger(y)`는 오전 9시 15분에는 3이 됩니다.  | 

# 수식 표현식에서 날짜 및 시간 함수 사용
<a name="expression-date-and-time-functions"></a>

[변환](transforms.md) 및 [지표](metrics.md)에서 날짜 및 시간 함수를 다음과 같은 방식으로 사용할 수 있습니다.
+ 데이터 포인트의 현재 타임스탬프를 UTC 또는 현지 시간대로 검색합니다.
+ `year`, `month`, `day_of_month`와 같은 인수를 사용하여 타임스탬프를 생성합니다.
+ `unix_time` 인수를 사용하여 연 또는 월과 같은 시간 기간을 추출합니다.


| 함수 | 설명 | 
| --- | --- | 
|  `now()`  |  Unix epoch 형식으로 현재 날짜와 시간을 초 단위로 반환합니다.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  입력 시간을 Unix epoch 형식으로 초 단위로 반환합니다. 이 함수 사용에 적용되는 요구 사항은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 이 함수 사용에는 다음 제한이 적용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 예시: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Unix 시간을 기준으로 지정된 시간대의 연도, 월의 일, 요일, 연도의 일, 시간, 분 또는 초를 반환합니다. 이 함수 사용에 적용되는 요구 사항은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 응답의 예: `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)`은 독립형 함수가 아닙니다. `year()`, `mon()`, `mday`, `wday()`, `yday()`, `hour()`, `minute()`, `sec()` 함수는 `localtime(unix_time, time_zone)`를 인수로 사용합니다. 예시: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  `localtime(unix_time, time_zone)`에서 연도를 반환합니다.  | 
|  `mon(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 월을 반환합니다.  | 
|  `mday(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 일을 반환합니다.  | 
|  `wday(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 요일을 반환합니다.  | 
|  `yday(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 연도의 일을 반환합니다.  | 
|  `hour(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 시를 반환합니다.  | 
|  `minute(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 분을 반환합니다.  | 
|  `sec(localtime(unix_time, time_zone))`  |  `localtime(unix_time, time_zone)`에서 초를 반환합니다.  | 

## 지원되는 시간대 형식
<a name="time-zone-expressions"></a>

다음과 같은 방법으로 시간대 인수를 지정할 수 있습니다.
+ 시간대 오프셋 - UTC 또는 오프셋(`'+2'`또는`'-5'`)에 대해 `'Z'`를 지정합니다.
+ 오프셋 ID - 시간대 약어와 오프셋을 결합합니다. 예: `'GMT+2'` 및 `'UTC-01:00'`. 시간대 약어는 세 글자만 포함해야 합니다.
+ 리전 기반 ID - 예: `'Etc/GMT+12'` 및 `'Pacific/Pago_Pago'`.

### 지원되는 시간대 약어
<a name="spported-time-zones"></a>

날짜 및 시간 함수는 다음과 같은 세 글자로 된 시간대 약어를 지원합니다.
+ EST - -05:00
+ HST - -10:00
+ MST - -07:00
+ ACT - Australia/Darwin
+ AET - Australia/Sydney
+ AGT - America/Argentina/Buenos\$1Aires
+ ART - Africa/Cairo
+ AST - America/Anchorage
+ BET - America/Sao\$1Paulo
+ BST - Asia/Dhaka
+ CAT - Africa/Harare
+ CET - Europe/Paris
+ CNT - America/St\$1Johns
+ CST - America/Chicago
+ CTT - Asia/Shanghai 
+ EAT - Africa/Addis\$1Ababa
+ IET - America/Indiana/Indianapolis
+ IST - Asia/Kolkata
+ JST - Asia/Tokyo
+ MIT - Pacific/Apia
+ NET - Asia/Yerevan
+ NST - Pacific/Auckland
+ PLT - Asia/Karachi
+ PRT - America/Puerto\$1Rico
+ PST - America/Los\$1Angeles
+ SST - Pacific/Guadalcanal
+ VST - Asia/Ho\$1Chi\$1Minh

### 지원되는 리전 기반 ID
<a name="supported-region-based-ids"></a>

날짜 및 시간 함수는 UTC\$100:00과의 관계를 기준으로 구성된 다음 리전 기반 ID를 지원합니다.
+ Etc/GMT\$112(UTC-12:00)
+ Pacific/Pago\$1Pago(UTC-11:00)
+ Pacific/Samoa(UTC-11:00)
+ Pacific/Niue(UTC-11:00)
+ US/Samoa(UTC-11:00)
+ Etc/GMT\$111(UTC-11:00)
+ Pacific/Midway(UTC-11:00)
+ Pacific/Honolulu(UTC-10:00)
+ Pacific/Rarotonga(UTC-10:00)
+ Pacific/Tahiti(UTC-10:00)
+ Pacific/Johnston(UTC-10:00)
+ US/Hawaii(UTC-10:00)
+ SystemV/HST10(UTC-10:00)
+ Etc/GMT\$110(UTC-10:00)
+ Pacific/Marquesas(UTC-09:30)
+ Etc/GMT\$19(UTC-09:00)
+ Pacific/Gambier(UTC-09:00)
+ America/Atka(UTC-09:00)
+ SystemV/YST9(UTC-09:00)
+ America/Adak(UTC-09:00)
+ US/Aleutian(UTC-09:00)
+ Etc/GMT\$18(UTC-08:00)
+ US/Alaska(UTC-08:00)
+ America/Juneau(UTC-08:00)
+ America/Metlakatla(UTC-08:00)
+ America/Yakutat(UTC-08:00)
+ Pacific/Pitcairn(UTC-08:00)
+ America/Sitka(UTC-08:00)
+ America/Anchorage(UTC-08:00)
+ SystemV/PST8(UTC-08:00)
+ America/Nome(UTC-08:00)
+ SystemV/YST9YDT(UTC-08:00)
+ Canada/Yukon(UTC-07:00)
+ US/Pacific-New(UTC-07:00)
+ Etc/GMT\$17(UTC-07:00)
+ US/Arizona(UTC-07:00)
+ America/Dawson\$1Creek(UTC-07:00)
+ Canada/Pacific(UTC-07:00)
+ PST8PDT(UTC-07:00)
+ SystemV/MST7(UTC-07:00)
+ America/Dawson(UTC-07:00)
+ Mexico/BajaNorte(UTC-07:00)
+ America/Tijuana(UTC-07:00)
+ America/Creston(UTC-07:00)
+ America/Hermosillo(UTC-07:00)
+ America/Santa\$1Isabel(UTC-07:00)
+ America/Vancouver(UTC-07:00)
+ America/Ensenada(UTC-07:00)
+ America/Phoenix(UTC-07:00)
+ America/Whitehorse(UTC-07:00)
+ America/Fort\$1Nelson(UTC-07:00)
+ SystemV/PST8PDT(UTC-07:00)
+ America/Los\$1Angele (UTC-07:00)
+ US/Pacific(UTC-07:00)
+ America/El\$1Salvador(UTC-06:00)
+ America/Guatemala(UTC-06:00)
+ America/Belize(UTC-06:00)
+ America/Managua(UTC-06:00)
+ America/Tegucigalpa(UTC-06:00)
+ Etc/GMT\$16(UTC-06:00)
+ Pacific/Easter(UTC-06:00)
+ Mexico/BajaSur(UTC-06:00)
+ America/Regina(UTC-06:00)
+ America/Denver(UTC-06:00)
+ Pacific/Galapagos(UTC-06:00)
+ America/Yellowknife(UTC-06:00)
+ America/Swift\$1Current(UTC-06:00)
+ America/Inuvik(UTC-06:00)
+ America/Mazatlan(UTC-06:00)
+ America/Boise(UTC-06:00)
+ America/Costa\$1Rica(UTC-06:00)
+ MST7MDT(UTC-06:00)
+ SystemV/CST6(UTC-06:00)
+ America/Chihuahua(UTC-06:00)
+ America/Ojinaga(UTC-06:00)
+ Chile/EasterIsland(UTC-06:00)
+ US/Mountain(UTC-06:00)
+ America/Edmonton(UTC-06:00)
+ Canada/Mountain(UTC-06:00)
+ America/Cambridge\$1Bay(UTC-06:00)
+ Navajo(UTC-06:00)
+ SystemV/MST7MDT(UTC-06:00)
+ Canada/Saskatchewan(UTC-06:00)
+ America/Shiprock(UTC-06:00)
+ America/Panama(UTC-05:00)
+ America/Chicago(UTC-05:00)
+ America/Eirunepe(UTC-05:00)
+ Etc/GMT\$15(UTC-05:00)
+ Mexico/General(UTC-05:00)
+ America/Porto\$1Acre(UTC-05:00)
+ America/Guayaquil(UTC-05:00)
+ America/Rankin\$1Inlet(UTC-05:00)
+ US/Central(UTC-05:00)
+ America/Rainy\$1River(UTC-05:00)
+ America/Indiana/Knox(UTC-05:00)
+ America/North\$1Dakota/Beulah(UTC-05:00)
+ America/Monterrey(UTC-05:00)
+ America/Jamaica(UTC-05:00)
+ America/Atikokan(UTC-05:00)
+ America/Coral\$1Harbour(UTC-05:00)
+ America/North\$1Dakota/Center(UTC-05:00)
+ America/Cayman(UTC-05:00)
+ America/Indiana/Tell\$1City(UTC-05:00)
+ America/Mexico\$1City(UTC-05:00)
+ America/Matamoros(UTC-05:00)
+ CST6CDT(UTC-05:00)
+ America/Knox\$1IN(UTC-05:00)
+ America/Bogota(UTC-05:00)
+ America/Menominee(UTC-05:00)
+ America/Resolute(UTC-05:00)
+ SystemV/EST5(UTC-05:00)
+ Canada/Central(UTC-05:00)
+ Brazil/Acre(UTC-05:00)
+ America/Cancun(UTC-05:00)
+ America/Lima(UTC-05:00)
+ America/Bahia\$1Banderas(UTC-05:00)
+ US/Indiana-Starke(UTC-05:00)
+ America/Rio\$1Branco(UTC-05:00)
+ SystemV/CST6CDT(UTC-05:00)
+ Jamaica(UTC-05:00)
+ America/Merida(UTC-05:00)
+ America/North\$1Dakota/New\$1Salem(UTC-05:00)
+ America/Winnipeg(UTC-05:00)
+ America/Cuiaba(UTC-04:00)
+ America/Marigot(UTC-04:00)
+ America/Indiana/Petersburg(UTC-04:00)
+ Chile/Continental(UTC-04:00)
+ America/Grand\$1Turk(UTC-04:00)
+ Cuba(UTC-04:00)
+ Etc/GMT\$14(UTC-04:00)
+ America/Manaus(UTC-04:00)
+ America/Fort\$1Wayne(UTC-04:00)
+ America/St\$1Thomas(UTC-04:00)
+ America/Anguilla(UTC-04:00)
+ America/Havana(UTC-04:00)
+ US/Michigan(UTC-04:00)
+ America/Barbados(UTC-04:00)
+ America/Louisville(UTC-04:00)
+ America/Curacao(UTC-04:00)
+ America/Guyana(UTC-04:00)
+ America/Martinique(UTC-04:00)
+ America/Puerto\$1Rico(UTC-04:00)
+ America/Port\$1of\$1Spain(UTC-04:00)
+ SystemV/AST4(UTC-04:00)
+ America/Indiana/Vevay(UTC-04:00)
+ America/Indiana/Vincennes(UTC-04:00)
+ America/Kralendijk(UTC-04:00)
+ America/Antigua(UTC-04:00)
+ America/Indianapolis(UTC-04:00)
+ America/Iqaluit(UTC-04:00)
+ America/St\$1Vincent(UTC-04:00)
+ America/Kentucky/Louisville(UTC-04:00)
+ America/Dominica(UTC-04:00)
+ America/Asuncion(UTC-04:00)
+ EST5EDT(UTC-04:00)
+ America/Nassa(UTC-04:00)
+ America/Kentucky/Monticello(UTC-04:00)
+ Brazil/West(UTC-04:00)
+ America/Aruba(UTC-04:00)
+ America/Indiana/Indianapolis(UTC-04:00)
+ America/Santiago(UTC-04:00)
+ America/La\$1Paz(UTC-04:00)
+ America/Thunder\$1Bay(UTC-04:00)
+ America/Indiana/Marengo(UTC-04:00)
+ America/Blanc-Sablon(UTC-04:00)
+ America/Santo\$1Domingo(UTC-04:00)
+ US/Eastern(UTC-04:00)
+ Canada/Eastern(UTC-04:00)
+ America/Port-au-Prince(UTC-04:00)
+ America/St\$1Barthelemy(UTC-04:00)
+ America/Nipigon(UTC-04:00)
+ US/East-Indiana(UTC-04:00)
+ America/St\$1Lucia(UTC-04:00)
+ America/Montserrat(UTC-04:00)
+ America/Lower\$1Princes(UTC-04:00)
+ America/Detroit(UTC-04:00)
+ America/Tortola(UTC-04:00)
+ America/Porto\$1Velho(UTC-04:00)
+ America/Campo\$1Grande(UTC-04:00)
+ America/Virgin(UTC-04:00)
+ America/Pangnirtung(UTC-04:00)
+ America/Montreal(UTC-04:00)
+ America/Indiana/Winamac(UTC-04:00)
+ America/Boa\$1Vista(UTC-04:00)
+ America/Grenada(UTC-04:00)
+ America/New\$1York(UTC-04:00)
+ America/St\$1Kitts(UTC-04:00)
+ America/Caracas(UTC-04:00)
+ America/Guadeloupe(UTC-04:00)
+ America/Toronto(UTC-04:00)
+ SystemV/EST5EDT(UTC-04:00)
+ America/Argentina/Catamarca(UTC-03:00)
+ Canada/Atlantic(UTC-03:00)
+ America/Argentina/Cordoba(UTC-03:00)
+ America/Araguaina(UTC-03:00)
+ America/Argentina/Salta(UTC-03:00)
+ Etc/GMT\$13(UTC-03:00)
+ America/Montevideo(UTC-03:00)
+ Brazil/Eas(UTC-03:00)
+ America/Argentina/Mendoza(UTC-03:00)
+ America/Argentina/Rio\$1Gallegos(UTC-03:00)
+ America/Catamarca(UTC-03:00)
+ America/Cordoba(UTC-03:00)
+ America/Sao\$1Paulo(UTC-03:00)
+ America/Argentina/Jujuy(UTC-03:00)
+ America/Cayenne(UTC-03:00)
+ America/Recife(UTC-03:00)
+ America/Buenos\$1Aires(UTC-03:00)
+ America/Paramaribo(UTC-03:00)
+ America/Moncton(UTC-03:00)
+ America/Mendoza(UTC-03:00)
+ America/Santarem(UTC-03:00)
+ Atlantic/Bermuda(UTC-03:00)
+ America/Maceio(UTC-03:00)
+ Atlantic/Stanley(UTC-03:00)
+ America/Halifax(UTC-03:00)
+ Antarctica/Rothera(UTC-03:00)
+ America/Argentina/San\$1Luis(UTC-03:00)
+ America/Argentina/Ushuaia(UTC-03:00)
+ Antarctica/Palmer(UTC-03:00)
+ America/Punta\$1Arenas(UTC-03:00)
+ America/Glace\$1Bay(UTC-03:00)
+ America/Fortaleza(UTC-03:00)
+ America/Thule(UTC-03:00)
+ America/Argentina/La\$1Rioja(UTC-03:00)
+ America/Belem(UTC-03:00)
+ America/Jujuy(UTC-03:00)
+ America/Bahia(UTC-03:00)
+ America/Goose\$1Bay(UTC-03:00)
+ America/Argentina/San\$1Juan(UTC-03:00)
+ America/Argentina/ComodRivadavia(UTC-03:00)
+ America/Argentina/Tucuman(UTC-03:00)
+ America/Rosario(UTC-03:00)
+ SystemV/AST4ADT(UTC-03:00)
+ America/Argentina/Buenos\$1Aires(UTC-03:00)
+ America/St\$1Johns(UTC-02:30)
+ Canada/Newfoundland(UTC-02:30)
+ America/Miquelon(UTC-02:00)
+ Etc/GMT\$12(UTC-02:00)
+ America/Godthab(UTC-02:00)
+ America/Noronha(UTC-02:00)
+ Brazil/DeNoronha(UTC-02:00)
+ Atlantic/South\$1Georgia(UTC-02:00)
+ Etc/GMT\$11(UTC-01:00)
+ Atlantic/Cape\$1Verde(UTC-01:00)
+ Pacific/Kiritimati(UTC\$114:00)
+ Etc/GMT-14(UTC\$114:00)
+ Pacific/Fakaofo(UTC\$113:00)
+ Pacific/Enderbury(UTC\$113:00)
+ Pacific/Apia(UTC\$113:00)
+ Pacific/Tongatapu(UTC\$113:00)
+ Etc/GMT-13(UTC\$113:00)
+ NZ-CHAT(UTC\$112:45)
+ Pacific/Chatham(UTC\$112:45)
+ Pacific/Kwajalein(UTC\$112:00)
+ Antarctica/McMurdo(UTC\$112:00)
+ Pacific/Wallis(UTC\$112:00)
+ Pacific/Fiji(UTC\$112:00)
+ Pacific/Funafuti(UTC\$112:00)
+ Pacific/Nauru(UTC\$112:00)
+ Kwajalein(UTC\$112:00)
+ NZ(UTC\$112:00)
+ Pacific/Wake(UTC\$112:00)
+ Antarctica/South\$1Pole(UTC\$112:00)
+ Pacific/Tarawa(UTC\$112:00)
+ Pacific/Auckland(UTC\$112:00)
+ Asia/Kamchatka(UTC\$112:00)
+ Etc/GMT-12(UTC\$112:00)
+ Asia/Anadyr(UTC\$112:00)
+ Pacific/Majuro(UTC\$112:00)
+ Pacific/Ponape(UTC\$111:00)
+ Pacific/Bougainville(UTC\$111:00)
+ Antarctica/Macquarie(UTC\$111:00)
+ Pacific/Pohnpei(UTC\$111:00)
+ Pacific/Efate(UTC\$111:00)
+ Pacific/Norfolk(UTC\$111:00)
+ Asia/Magadan(UTC\$111:00)
+ Pacific/Kosrae(UTC\$111:00)
+ Asia/Sakhalin(UTC\$111:00)
+ Pacific/Noumea(UTC\$111:00)
+ Etc/GMT-11(UTC\$111:00)
+ Asia/Srednekolymsk(UTC\$111:00)
+ Pacific/Guadalcanal(UTC\$111:00)
+ Australia/Lord\$1Howe(UTC\$110:30)
+ Australia/LHI(UTC\$110:30)
+ Australia/Hobart(UTC\$110:00)
+ Pacific/Yap(UTC\$110:00)
+ Australia/Tasmania(UTC\$110:00)
+ Pacific/Port\$1Moresby(UTC\$110:00)
+ Australia/ACT(UTC\$110:00)
+ Australia/Victoria(UTC\$110:00)
+ Pacific/Chuuk(UTC\$110:00)
+ Australia/Queensland(UTC\$110:00)
+ Australia/Canberra(UTC\$110:00)
+ Australia/Currie(UTC\$110:00)
+ Pacific/Guam(UTC\$110:00)
+ Pacific/Truk(UTC\$110:00)
+ Australia/NSW(UTC\$110:00)
+ Asia/Vladivostok(UTC\$110:00)
+ Pacific/Saipan(UTC\$110:00)
+ Antarctica/DumontDUrville(UTC\$110:00)
+ Australia/Sydney(UTC\$110:00)
+ Australia/Brisbane(UTC\$110:00)
+ Etc/GMT-10(UTC\$110:00)
+ Asia/Ust-Nera(UTC\$110:00)
+ Australia/Melbourne(UTC\$110:00)
+ Australia/Lindeman(UTC\$110:00)
+ Australia/North(UTC\$109:30)
+ Australia/Yancowinna(UTC\$109:30)
+ Australia/Adelaide(UTC\$109:30)
+ Australia/Broken\$1Hill(UTC\$109:30)
+ Australia/South(UTC\$109:30)
+ Australia/Darwin(UTC\$109:30)
+ Etc/GMT-9(UTC\$109:00)
+ Pacific/Palau(UTC\$109:00)
+ Asia/Chita(UTC\$109:00)
+ Asia/Dili(UTC\$109:00)
+ Asia/Jayapura(UTC\$109:00)
+ Asia/Yakutsk(UTC\$109:00)
+ Asia/Pyongyang(UTC\$109:00)
+ ROK(UTC\$109:00)
+ Asia/Seoul(UTC\$109:00)
+ Asia/Khandyga(UTC\$109:00)
+ Japan(UTC\$109:00)
+ Asia/Tokyo(UTC\$109:00)
+ Australia/Eucla(UTC\$108:45)
+ Asia/Kuching(UTC\$108:00)
+ Asia/Chungking(UTC\$108:00)
+ Etc/GMT-8(UTC\$108:00)
+ Australia/Perth(UTC\$108:00)
+ Asia/Macao(UTC\$108:00)
+ Asia/Maca(UTC\$108:00)
+ Asia/Choibalsan(UTC\$108:00)
+ Asia/Shanghai(UTC\$108:00)
+ Antarctica/Casey(UTC\$108:00)
+ Asia/Ulan\$1Bator(UTC\$108:00)
+ Asia/Chongqing(UTC\$108:00)
+ Asia/Ulaanbaatar(UTC\$108:00)
+ Asia/Taipei(UTC\$108:00)
+ Asia/Manila(UTC\$108:00)
+ PRC(UTC\$108:00)
+ Asia/Ujung\$1Pandang(UTC\$108:00)
+ Asia/Harbin(UTC\$108:00)
+ Singapore(UTC\$108:00)
+ Asia/Brunei(UTC\$108:00)
+ Australia/West(UTC\$108:00)
+ Asia/Hong\$1Kong(UTC\$108:00)
+ Asia/Makassar(UTC\$108:00)
+ Hongkong(UTC\$108:00)
+ Asia/Kuala\$1Lumpur(UTC\$108:00)
+ Asia/Irkutsk(UTC\$108:00)
+ Asia/Singapore(UTC\$108:00)
+ Asia/Pontianak(UTC\$107:00)
+ Etc/GMT-7(UTC\$107:00)
+ Asia/Phnom\$1Penh(UTC\$107:00)
+ Asia/Novosibirsk(UTC\$107:00)
+ Antarctica/Davis(UTC\$107:00)
+ Asia/Tomsk(UTC\$107:00)
+ Asia/Jakarta(UTC\$107:00)
+ Asia/Barnaul(UTC\$107:00)
+ Indian/Christmas(UTC\$107:00)
+ Asia/Ho\$1Chi\$1Minh(UTC\$107:00)
+ Asia/Hovd(UTC\$107:00)
+ Asia/Bangkok(UTC\$107:00)
+ Asia/Vientiane(UTC\$107:00)
+ Asia/Novokuznetsk(UTC\$107:00)
+ Asia/Krasnoyarsk(UTC\$107:00)
+ Asia/Saigon(UTC\$107:00)
+ Asia/Yangon(UTC\$106:30)
+ Asia/Rangoon(UTC\$106:30)
+ Indian/Cocos(UTC\$106:30)
+ Asia/Kashgar(UTC\$106:00)
+ Etc/GMT-6(UTC\$106:00)
+ Asia/Almaty(UTC\$106:00)
+ Asia/Dacca(UTC\$106:00)
+ Asia/Omsk(UTC\$106:00)
+ Asia/Dhaka(UTC\$106:00)
+ Indian/Chagos(UTC\$106:00)
+ Asia/Qyzylorda(UTC\$106:00)
+ Asia/Bishkek(UTC\$106:00)
+ Antarctica/Vostok(UTC\$106:00)
+ Asia/Urumqi(UTC\$106:00)
+ Asia/Thimbu(UTC\$106:00)
+ Asia/Thimphu(UTC\$106:00)
+ Asia/Kathmandu(UTC\$105:45)
+ Asia/Katmandu(UTC\$105:45)
+ Asia/Kolkata(UTC\$105:30)
+ Asia/Colombo(UTC\$105:30)
+ Asia/Calcutta(UTC\$105:30)
+ Asia/Aqtau(UTC\$105:00)
+ Etc/GMT-5(UTC\$105:00)
+ Asia/Samarkand(UTC\$105:00)
+ Asia/Karachi(UTC\$105:00)
+ Asia/Yekaterinburg(UTC\$105:00)
+ Asia/Dushanbe(UTC\$105:00)
+ Indian/Maldives(UTC\$105:00)
+ Asia/Oral(UTC\$105:00)
+ Asia/Tashkent(UTC\$105:00)
+ Antarctica/Mawson(UTC\$105:00)
+ Asia/Aqtobe(UTC\$105:00)
+ Asia/Ashkhabad(UTC\$105:00)
+ Asia/Ashgabat(UTC\$105:00)
+ Asia/Atyrau(UTC\$105:00)
+ Indian/Kerguelen(UTC\$105:00)
+ Iran(UTC\$104:30)
+ Asia/Tehran(UTC\$104:30)
+ Asia/Kabul(UTC\$104:30)
+ Asia/Yerevan(UTC\$104:00)
+ Etc/GMT-4(UTC\$104:00)
+ Etc/GMT-4(UTC\$104:00)
+ Asia/Dubai(UTC\$104:00)
+ Indian/Reunion(UTC\$104:00)
+ Europe/Saratov(UTC\$104:00)
+ Europe/Samara(UTC\$104:00)
+ Indian/Mahe(UTC\$104:00)
+ Asia/Baku(UTC\$104:00)
+ Asia/Muscat(UTC\$104:00)
+ Europe/Volgograd(UTC\$104:00)
+ Europe/Astrakhan(UTC\$104:00)
+ Asia/Tbilisi(UTC\$104:00)
+ Europe/Ulyanovsk(UTC\$104:00)
+ Asia/Aden(UTC\$103:00)
+ Africa/Nairobi(UTC\$103:00)
+ Europe/Istanbul(UTC\$103:00)
+ Etc/GMT-3(UTC\$103:00)
+ Europe/Zaporozhye(UTC\$103:00)
+ Israel(UTC\$103:00)
+ Indian/Comoro(UTC\$103:00)
+ Antarctica/Syowa(UTC\$103:00)
+ Africa/Mogadishu(UTC\$103:00)
+ Europe/Bucharest(UTC\$103:00)
+ Africa/Asmera(UTC\$103:00)
+ Europe/Mariehamn(UTC\$103:00)
+ Asia/Istanbul(UTC\$103:00)
+ Europe/Tiraspol(UTC\$103:00)
+ Europe/Moscow(UTC\$103:00)
+ Europe/Chisinau(UTC\$103:00)
+ Europe/Helsinki(UTC\$103:00)
+ Asia/Beirut(UTC\$103:00)
+ Asia/Tel\$1Aviv(UTC\$103:00)
+ Africa/Djibouti(UTC\$103:00)
+ Europe/Simferopol(UTC\$103:00)
+ Europe/Sofia(UTC\$103:00)
+ Asia/Gaza(UTC\$103:00)
+ Africa/Asmara(UTC\$103:00)
+ Europe/Riga(UTC\$103:00)
+ Asia/Baghdad(UTC\$103:00)
+ Asia/Damascus(UTC\$103:00)
+ Africa/Dar\$1es\$1Salaam(UTC\$103:00)
+ Africa/Addis\$1Ababa(UTC\$103:00)
+ Europe/Uzhgorod(UTC\$103:00)
+ Asia/Jerusalem(UTC\$103:00)
+ Asia/Riyadh(UTC\$103:00)
+ Asia/Kuwait(UTC\$103:00)
+ Europe/Kirov(UTC\$103:00)
+ Africa/Kampala(UTC\$103:00)
+ Europe/Minsk(UTC\$103:00)
+ Asia/Qatar UTC\$103:00)
+ Europe/Kiev(UTC\$103:00)
+ Asia/Bahrain(UTC\$103:00)
+ Europe/Vilnius(UTC\$103:00)
+ Indian/Antananarivo(UTC\$103:00)
+ Indian/Mayotte(UTC\$103:00)
+ Europe/Tallinn(UTC\$103:00)
+ Turkey(UTC\$103:00)
+ Africa/Juba(UTC\$103:00)
+ Asia/Nicosia(UTC\$103:00)
+ Asia/Famagusta(UTC\$103:00)
+ W-SU(UTC\$103:00)
+ EET(UTC\$103:00)
+ Asia/Hebron(UTC\$103:00)
+ Asia/Amman(UTC\$103:00)
+ Europe/Nicosia(UTC\$103:00)
+ Europe/Athens(UTC\$103:00)
+ Africa/Cairo(UTC\$102:00)
+ Africa/Mbabane(UTC\$102:00)
+ Europe/Brussels(UTC\$102:00)
+ Europe/Warsaw(UTC\$102:00)
+ CET(UTC\$102:00)
+ Europe/Luxembourg(UTC\$102:00)
+ Etc/GMT-2(UTC\$102:00)
+ Libya(UTC\$102:00)
+ Africa/Kigali(UTC\$102:00)
+ Africa/Tripoli(UTC\$102:00)
+ Europe/Kaliningrad(UTC\$102:00)
+ Africa/Windhoek(UTC\$102:00)
+ Europe/Malta(UTC\$102:00)
+ Europe/Busingen(UTC\$102:00)
+ 
+ Europe/Skopje(UTC\$102:00)
+ Europe/Sarajevo(UTC\$102:00)
+ Europe/Rome(UTC\$102:00)
+ Europe/Zurich(UTC\$102:00)
+ Europe/Gibraltar(UTC\$102:00)
+ Africa/Lubumbashi(UTC\$102:00)
+ Europe/Vaduz(UTC\$102:00)
+ Europe/Ljubljana(UTC\$102:00)
+ Europe/Berlin(UTC\$102:00)
+ Europe/Stockholm(UTC\$102:00)
+ Europe/Budapest(UTC\$102:00)
+ Europe/Zagreb(UTC\$102:00)
+ Europe/Paris(UTC\$102:00)
+ Africa/Ceuta(UTC\$102:00)
+ Europe/Prague(UTC\$102:00)
+ Antarctica/Troll(UTC\$102:00)
+ Africa/Gaborone(UTC\$102:00)
+ Europe/Copenhagen(UTC\$102:00)
+ Europe/Vienna(UTC\$102:00)
+ Europe/Tirane(UTC\$102:00)
+ MET(UTC\$102:00)
+ Europe/Amsterdam(UTC\$102:00)
+ Africa/Maputo(UTC\$102:00)
+ Europe/San\$1Marino(UTC\$102:00)
+ Poland(UTC\$102:00)
+ Europe/Andorra(UTC\$102:00)
+ Europe/Oslo(UTC\$102:00)
+ Europe/Podgorica(UTC\$102:00)
+ Africa/Bujumbura(UTC\$102:00)
+ Atlantic/Jan\$1Mayen(UTC\$102:00)
+ Africa/Maseru(UTC\$102:00)
+ Europe/Madrid(UTC\$102:00)
+ Africa/Blantyre(UTC\$102:00)
+ Africa/Lusaka(UTC\$102:00)
+ Africa/Harare(UTC\$102:00)
+ Africa/Khartoum(UTC\$102:00)
+ Africa/Johannesburg(UTC\$102:00)
+ Europe/Belgrade(UTC\$102:00)
+ Europe/Bratislava(UTC\$102:00)
+ Arctic/Longyearbyen(UTC\$102:00)
+ Egypt(UTC\$102:00)
+ Europe/Vatican(UTC\$102:00)
+ Europe/Monaco(UTC\$102:00)
+ Europe/London(UTC\$101:00)
+ Etc/GMT-1(UTC\$101:00)
+ Europe/Jersey(UTC\$101:00)
+ Europe/Guernsey(UTC\$101:00)
+ Europe/Isle\$1of\$1Man(UTC\$101:00)
+ Africa/Tunis(UTC\$101:00)
+ Africa/Malabo(UTC\$101:00)
+ GB-Eire(UTC\$101:00)
+ Africa/Lagos(UTC\$101:00)
+ Africa/Algiers(UTC\$101:00)
+ GB(UTC\$101:00)
+ Portugal(UTC\$101:00)
+ Africa/Sao\$1Tome(UTC\$101:00)
+ Africa/Ndjamena(UTC\$101:00)
+ Atlantic/Faeroe(UTC\$101:00)
+ Eire(UTC\$101:00)
+ Atlantic/Faroe(UTC\$101:00)
+ Europe/Dublin(UTC\$101:00)
+ Africa/Libreville(UTC\$101:00)
+ Africa/El\$1Aaiun(UTC\$101:00)
+ Africa/El\$1Aaiun(UTC\$101:00)
+ Africa/Douala(UTC\$101:00)
+ Africa/Brazzaville(UTC\$101:00)
+ Africa/Porto-Novo(UTC\$101:00)
+ Atlantic/Madeira(UTC\$101:00)
+ Europe/Lisbon(UTC\$101:00)
+ Atlantic/Canary(UTC\$101:00)
+ Africa/Casablanca(UTC\$101:00)
+ Europe/Belfast(UTC\$101:00)
+ Africa/Luanda(UTC\$101:00)
+ Africa/Kinshasa(UTC\$101:00)
+ Africa/Bangui(UTC\$101:00)
+ WET(UTC\$101:00)
+ Africa/Niamey(UTC\$101:00)
+ GMT(UTC\$100:00)
+ Etc/GMT-0(UTC\$100:00)
+ Atlantic/St\$1Helena(UTC\$100:00)
+ Etc/GMT\$10(UTC\$100:00)
+ Africa/Banjul(UTC\$100:00)
+ Etc/GMT(UTC\$100:00)
+ Africa/Freetown(UTC\$100:00)
+ Africa/Bamako(UTC\$100:00)
+ Africa/Conakry(UTC\$100:00)
+ Universal(UTC\$100:00)
+ Africa/Nouakchott(UTC\$100:00)
+ UTC(UTC\$100:00)
+ Etc/Universal(UTC\$100:00)
+ Atlantic/Azores(UTC\$100:00)
+ Africa/Abidjan(UTC\$100:00)
+ Africa/Accra(UTC\$100:00)
+ Etc/UCT(UTC\$100:00)
+ GMT0(UTC\$100:00)
+ Zulu(UTC\$100:00)Zulu (UTC\$100:00)
+ Africa/Ouagadougou(UTC\$100:00)
+ Atlantic/Reykjavik(UTC\$100:00)
+ Etc/Zulu(UTC\$100:00)
+ Iceland(UTC\$100:00)
+ Africa/Lome(UTC\$100:00)
+ Greenwich(UTC\$100:00)
+ Etc/GMT0(UTC\$100:00)
+ America/Danmarkshavn UTC\$100:00)
+ Africa/Dakar(UTC\$100:00)
+ Africa/Bissau(UTC\$100:00)
+ Etc/Greenwich(UTC\$100:00)
+ Africa/Timbuktu(UTC\$100:00)
+ UCT(UTC\$100:00)
+ Africa/Monrovia(UTC\$100:00)
+ Etc/UTC(UTC\$100:00)

# 공식 표현식 튜토리얼
<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`입니다.