データの変換 (変換) - AWS IoT SiteWise

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

データの変換 (変換)

変換は、アセットプロパティのデータポイントを別のフォームにマッピングする数式です。変換式は、アセットプロパティ変数、リテラル、演算子、関数で構成されます。変換されたデータポイントは、入力データポイント 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増加する整数。

また、メーカーは Quality_Monitor に等しい変換 if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal") を作成します。

この変換は、特定の部品型で生産された不良部品の割合をモニタリングします。部品番号がBLT123で、不良部品の割合が10% (0.1) を超える場合、変換は "Caution" を返します。そうでない場合は、変換は "Normal" を返します。

注記
  • Part_Number が他の測定値より先に新しいデータポイントを受信した場合、NQuality_Monitor変換は新しい Part_Number 値と最新の Good_Count および Bad_Count 値を使用します。エラーを回避するため、次の製造の前に Good_CountBad_Count をリセットしてください。

  • すべての変数が新しいデータポイントを受け取った後にのみ式を評価したい場合は、[metrics] (メトリクス) を使用します。

変換の定義 (コンソール)

AWS IoT SiteWise コンソールでアセットモデルの変換を定義するときは、次のパラメータを指定します。

  • [Name] (名前) - プロパティの名前。

  • [Unit] (単位) - プロパティの科学単位 (mm、摂氏など)。

  • [Data type] (データ型) - 変換のデータ型で、[Double] (倍) または [String] (文字列) です。

  • 外部 ID – (オプション) これはユーザー定義 ID です。詳細については、AWS IoT SiteWise  ユーザーガイドの 外部 IDs参照を参照してください。

  • [Formula] (コンピューティング式) – 変換式。変換式では、集計関数や一時関数は使用できません。自動完了機能を開くには、入力を開始するか、下矢印キーを押します。詳細については、「数式の使用」を参照してください。

    重要

    変換は、整数、倍、ブール値、文字列型のプロパティを入力することができます。ブール値は、0 (false) 、1 (true) に変換されます。

    変換には、属性でないプロパティを1つ以上、任意の数だけ入力する必要があります。 AWS IoT SiteWise は、属性でない入力プロパティが新しいデータポイントを受け取るたびに、新しい変換後のデータポイントをコンピューティングする。新しい属性値は変換の更新を起動しません。アセットプロパティデータの API オペレーションのリクエストレートは、変換計算の結果にも適用されます。

    数式では、倍値または文字列値のみを出力できます。入れ子になった式は、文字列など他のデータ型を出力することができますが、式全体としては、数値または文字列として評価されなければなりません。[jp function] (jp関数) を使うと、文字列を数値に変換することができます。ブール値は 1 (true) または 0 (false) でなければならない。詳細については、「未定義の値、無限の値、およびオーバーフロー値」を参照してください。

詳細については、「アセットモデルを作成する (コンソール) 」を参照してください。

変換の定義 (AWS CLI)

AWS IoT SiteWise API を使用してアセットモデルの変換を定義するときは、以下のパラメータを指定します。

  • name - プロパティの名前。

  • unit –(オプション) プロパティの科学単位 (mm、摂氏など)。

  • dataType - 変換のデータ型は、DOUBLE または STRING である必要があります。

  • externalId — (オプション) これはユーザー定義 ID です。詳細については、AWS IoT SiteWise  ユーザーガイドの 外部 IDs参照を参照してください。

  • expression - 変換式。変換式では、集計関数や一時関数は使用できません。詳細については、「数式の使用」を参照してください。

  • variables - 式で使用するアセットの他のプロパティを定義する変数のリスト。各変数構造には、式で使用する単純な名前と、その変数にリンクされるプロパティを定義する value 構造が含まれます。value 構造体には、以下の情報が含まれています。

    • propertyId - 値を入力するプロパティの ID。ID の代わりにプロパティの名前を使用できます。

    重要

    変換は、整数、倍、ブール値、文字列型のプロパティを入力することができます。ブール値は、0 (false) 、1 (true) に変換されます。

    変換には、属性でないプロパティを1つ以上、任意の数だけ入力する必要があります。 AWS IoT SiteWise は、属性でない入力プロパティが新しいデータポイントを受け取るたびに、新しい変換後のデータポイントをコンピューティングする。新しい属性値は変換の更新を起動しません。アセットプロパティデータの API オペレーションのリクエストレートは、変換計算の結果にも適用されます。

    数式では、倍値または文字列値のみを出力できます。入れ子になった式は、文字列など他のデータ型を出力することができますが、式全体としては、数値または文字列として評価されなければなりません。[jp function] (jp関数) を使うと、文字列を数値に変換することができます。ブール値は 1 (true) または 0 (false) でなければならない。詳細については、「未定義の値、無限の値、およびオーバーフロー値」を参照してください。

例 [Transform job definition] (変換定義)

次の例は、アセットの温度測定データを摂氏から華氏に変換する変換プロパティを示しています。このオブジェクトは、変換 AssetModelProperty を含む の例です。 https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.htmlこのオブジェクトを CreateAssetModel リクエストペイロードの一部として指定して、変換プロパティを作成できます。詳細については、「アセットモデルの作成 (AWS 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" } ], ... }
例 3つの変数を含む変換定義。

次の例では、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" } } ] } } } ... }