

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 数式表現チュートリアル
<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 function]](expression-string-functions.md#jp-definition) (jp関数) を使うと、文字列を数値に変換することができます。ブール値は 1 (true) または 0 (false) でなければならない。詳細については、「[未定義の値、無限の値、およびオーバーフロー値](#undefined-values)」を参照してください。

AWS IoT SiteWise には、文字列の操作に使用できる次の式機能が用意されています。
+ [[String literals]](expression-literals.md#string-literal-definition) (文字列リテラル) 
+ [[index operator]](expression-operators.md#index-operator-definition) (インデックス演算子) (`s[index]`) 
+ [[slice operator]](expression-operators.md#slice-operator-definition) (スライス演算子) (`s[start:end:step]`) 
+ [[Comparison functions]](expression-comparison-functions.md)比較関数: 文字列を[[lexicographic order]](https://en.wikipedia.org/wiki/Lexicographic_order) (辞書式順序) に比較する関数です。
+ シリアル化された JSON オブジェクトをパースし、文字列を数値に変換できる `jp` 関数を含む[文字列関数](expression-string-functions.md)

## データポイントをフィルタリングする
<a name="filter-data"></a>

[[if function]](expression-conditional-functions.md#if-definition) (if関数) を使用すると、条件を満たさないデータポイントをフィルタリングすることができます。`if` 関数は条件を評価し、`true`、`false` の結果に対して異なる値を返す。`if` 関数の 1 ケースの出力として[[none constant]](expression-constants.md#none-definition) (無し定数) を使用すると、そのケースのデータポイントを破棄することができます。

**条件に合致するデータポイントをフィルタリングする場合。**
+ `if` 関数を使用して、ある条件を満たすかどうかをチェックする条件を定義し、`none` を `result_if_true` または `result_if_false` の値として返す変換を作成します。

**Example 例: 水が沸騰していないデータポイントをフィルタリングする。**  
ある機械の中の水の温度 (摂氏) を測定する測定器 `temp_c` があるとしましょう。次のような変換を定義することで、水が沸騰していないデータポイントをフィルタリングすることができます。  
+ 変換: `boiling_temps = if(gte(temp_c, 100), temp_c, none)` - 100℃以上であれば温度を返し、そうでなければデータポイントを返さない。

## 条件に一致するデータポイントをカウントする
<a name="count-filtered-data"></a>

[[comparison functions]](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`、、 など`log(0)`) は`sqrt(-1)`、実数システムで定義されていない値、無限、または でサポートされている範囲外の値を計算します AWS IoT SiteWise。アセットプロパティの式が未定義、無限、またはオーバーフロー値を計算した場合、その計算のデータポイントは出力 AWS IoT SiteWise されません。

AWS IoT SiteWise 式の結果として数値以外の値を計算しても、 はデータポイントを出力しません。つまり、文字列、配列、[[none constant]](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')` は配列です。
+ `if(gte(temp, 300), temp, none)` が `none` より小さいとき、`temp` は `300` です。