階層が 10 個を超えるモデルのメトリクス集計を AWS IoT SiteWise で設定したいです。。
解決策
AWS IoT SiteWise クォータに基づき、数式あたり、プロパティ変数を最大 10 個持つことができます。集計をより小さなセグメントに分割することで、この制約に対処することができます。
集計を分割するには、次の手順を実行します。
- 9~10 階層の部分的な結果を個別に計算します。詳細については、「プロパティやその他のアセット (メトリクス) からデータを集約する」を参照してください。
- これらの中間結果をマージすると、最終的な集計結果を取得できます。詳細については、「数式で集計関数を使用する」を参照してください。
注: 精度を必要とする用途では、これらの方法では計算精度が若干低下する可能性があることに注意してください。
40 階層の平均を計算する方法の 2 通りの例を次に示します。これらの例では、階層には h1 から h40 までの名前が付けられています。
合計と総件数の例
次の例では、各式には 10 階層があります。
まず、各階層の合計を求めます。
- sum1_10 = sum(h1,.. h10)
sum11_20 = sum(h11,.. h20)
sum21_30 = sum(h21,.. h30)
sum31_40 = sum(h31,.. h40)
次に、各階層の総件数を計算します。
- count1_10 = count(h1,.. h10)
count11_20 = count(h11,.. h20)
count21_30 = count(h21,.. h30)
count31_40 = count(h31,.. h40)
最後に、合計と総件数を使用して平均を求めます。この例では、TotalAvg には引数として 8 つの集計があります。
TotalAvg = sum(sum1_10, sum11_20, sum21_30, sum31_40) / sum(count1_10, count11_20, count21_30, count31_40)
加重平均の例
平均を計算するには、加重平均法を使用し、複数の計算された平均値を、それぞれの件数に基づく重みと組み合わせます。次の例では、各数式の引数には 10 階層があります。
まず、各階層の平均を求めます。
- avg1_10 = avg(h1,.. h10)
avg11_20 = avg(h11,.. h20)
avg21_30 = avg(h21,.. h30)
avg31_40 = avg(h31,.. h40)
次に、各階層の総件数を計算します。
- count1_10 = count(h1,.. h10)
count11_20 = count(h11,.. h20)
count21_30 = count(h21,.. h30)
count31_40 = count(h31,.. h40)
次に、階層の合計を求めます。この例では、TotalCount には引数として 4 つの集計があります。
totalCount = sum(count1_10, count11_20, count21_30, count31_40)
最後に、合計平均を求めます。この例では、TotalAvg には引数として 9 つの集計があります。
TotalAvg = sum(count1_10 / totalCount * avg1_10, count11_20 * totalCount * avg11_20, count21_30 / totalCount * avg21_30, count31_40 / totalCount * avg31_40)