我想在 AWS IoT SiteWise 中为具有 10 个以上层次结构的模型配置指标聚合。
解决方法
基于 AWS IoT SiteWise 配额,单个公式的最大属性变量数为 10。要克服此限制,您可以将聚合划分为较小的分段。
要划分聚合,请完成以下步骤:
- 分别计算 9-10 层次结构的部分结果。有关详细信息,请参阅聚合来自属性和其他资产(指标)的数据。
- 合并这些中间结果以获得最终的聚合结果。有关详细信息,请参阅在公式表达式中使用聚合函数。
**注意:**对于要求精度的应用程序,请注意,这些方法可能会导致计算精度轻微损失。
以下是两个如何计算 40 个层次结构的平均值的示例。在这些示例中,层次结构命名为 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。在此示例中,TotalAvg 使用 9 个聚合作为参数:
TotalAvg = sum(count1_10 / totalCount * avg1_10, count11_20 * totalCount * avg11_20, count21_30 / totalCount * avg21_30, count31_40 / totalCount * avg31_40)