本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在公式運算式中使用時間函數
使用時間函數根據資料點的時間戳記傳回值。
在指標中使用時間函數
僅在指標中,您可以使用下列函數,這些函數會根據資料點的時間戳記傳回值。
臨時函數引數必須是本地資產模型或嵌套表達式的屬性。這意味著您不能在臨時函數中使用子資產模型的屬性。
您可以在時間函數中使用嵌套表達式。當您使用巢狀運算式時,會套用下列規則:
-
每個引數只能有一個變數。
例如,
latest( t*9/5 + 32 )
支援。 -
參數不能是聚合函數。
例如,
first( sum(x) )
不支援。
函式 | 描述 |
---|---|
|
傳回目前時間間隔指定變數值中時間戳記最早的值。 |
|
傳回目前時間間隔指定變數值中時間戳記最晚的值。 |
|
返回當前時間間隔開始之前給定變量的最後一個值。 如果輸入屬性在其歷史記錄中至少有一個資料點,此函數會計算每個時間間隔的資料點。如需詳細資訊,請參閱 time-range-defintion。 |
|
返回給定變量的最後一個值與當前時間間隔結束之前的最新時間戳。 如果輸入屬性在其歷史記錄中至少有一個資料點,此函數會計算每個時間間隔的資料點。如需詳細資訊,請參閱 time-range-defintion。 |
|
傳回目前時間間隔中指定變數為正 (positive) 的秒數。您可以使用比較函數來建立要使用之 例如,如果您有一個為 此函數不支援使用指標屬性做為輸入變數。 如果輸入屬性在其歷史記錄中至少有一個資料點,此函數會計算每個時間間隔的資料點。 |
|
傳回以點之間的時間間隔加權的輸入資料的平均值。 有關計算和間隔詳細信息,請參閱時間加權函數參數可選參數
|
|
返回與點之間的時間間隔加權的輸入數據的標準差。 有關計算和間隔詳細信息,請參閱時間加權函數參數 計算使用「上次觀察到的遞進」計算演算法來表示資料點之間的間隔。在這種方法中,資料點被計算為最後一個觀測值,直到下一個輸入資料點時間戳記為止。權重計算為資料點或視窗邊界之間的時間間隔 (以秒為單位)。 可選參數
以下公式用於計算,其中:
總體標準差的方程式: 頻率標準差的方程式: |
下圖顯示了如何 AWS IoT SiteWise 計算時間函數first
,,和 last
earliest
latest
,相對於當前時間間隔。
注意
的時間範圍
last(x)
是 (目前視窗開始、目前視窗結束時間]。first(x)
的時間範圍
latest(x)
為 (時間的開始、目前視窗結束)。的時間範圍
earliest(x)
是 (時間的開始,上一個視窗結束]。
時間加權函數參數
針對彙總視窗計算的時間加權函數會考慮下列事項:
-
視窗內的資料點
-
資料點之間的時間間隔
-
視窗前的最後一個資料點
-
視窗後的第一個資料點 (針對某些演算法)
條款:
-
錯誤的資料點 — 任何品質不良或非數值的資料點。在窗口結果計算中不考慮這一點。
-
錯誤的間隔 — 錯誤資料點之後的間隔。第一個已知資料點之前的間隔也被視為錯誤的間隔。
-
良好的資料點 — 任何具有良好品質和數值的資料點。
注意
-
AWS IoT SiteWise 只有在計算轉換和指標時才會消耗
GOOD
品質資料。它忽略UNCERTAIN
和BAD
數據點。 -
第一個已知資料點之前的間隔被視為錯誤的間隔。如需詳細資訊,請參閱公式運算式教學。
最後一個已知資料點之後的間隔會無限期繼續,影響所有後續視窗。當新資料點到達時,函數會重新計算間隔。
遵循上述規則,系統會計算彙總視窗結果,並僅限於視窗邊界。默認情況下,只有當整個窗口是一個良好的間隔時,函數才會發送窗口結果。
如果視窗良好間隔小於視窗長度,則函數不會傳送視窗。
當影響視窗結果的資料點發生變更時,即使資料點位於視窗外,函數也會重新計算視窗。
如果 input 屬性在其歷史記錄中至少有一個資料點,且已啟動計算,則函數會計算每個時間間隔的時間加權彙總函數。
範例 狀態時間案例範例
假設您具有以下屬性的資產:
-
Idle
— 為0
或的度量1
。值為1
時,機器處於閒置狀態。 -
Idle Time
— 使用公式計算機器閒置時間 (statetime(Idle)
以秒為單位) 的度量 (每 1 分鐘間隔)。
該 Idle
屬性具有以下資料點。
Timestamp | 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 每分鐘從的值計算一次Idle Time
性質Idle
。此計算完成之後,Idle Time
屬性會具有下列資料點。
Timestamp | 2:00:00 PM | 2:01:00 PM | 2:02:00 PM | 2:03:00 PM | 2:04:00 PM |
Idle Time | N/A | 30 | 60 | 45 | 0 |
AWS IoT SiteWise 在每分鐘結束Idle Time
時執行下列計算。
-
下午 2:00 (下午 1:59 至下午 2:00)
-
下午 2:00 之前
Idle
沒有資料,因此不會計算任何資料點。
-
-
下午 2:01 (下午 2:00 至下午 2:01)
-
下午 2:00:00,機器處於作用中狀態 (
Idle
為0
)。 -
下午 2:00:30,機器處於閒置狀態 (
Idle
為1
)。 -
在下午 2:01:00 的間隔結束之前
Idle
不會再次改變,所以Idle Time
是 30 秒。
-
-
下午 2:02 (下午 2:01 至下午 2:02)
-
下午 2:01:00,機器處於閒置狀態 (即最後一個資料點位於下午 2:00:30)。
-
下午 2:01:15,機器仍處於閒置狀態。
-
在下午 2:02:00 的間隔結束之前
Idle
不會再次改變,所以Idle Time
是 60 秒。
-
-
下午 2:03 (下午 2:02至下午 2:03)
-
下午 2:02:00,機器處於閒置狀態 (即最後一個資料點位於下午 2:01:15)。
-
下午 2:02:45,機器處於作用中狀態。
-
在下午 2:03:00 的間隔結束之前
Idle
不會再次改變,所以Idle Time
是 45 秒。
-
-
下午 2:04 (下午 2:03 至下午 2:04 )
-
下午 2:03:00,機器處於作用中狀態 (即最後一個資料點位於下午 2:02:45)。
-
在下午 2:04:00 的間隔結束之前
Idle
不會再次改變,所以Idle Time
是 0 秒。
-
範例 TimeWeightedAvg 和 TimeWeightedStDev 案例
下表提供這些一分鐘時段量度的範例輸入和輸出:Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x),
timeWeightedStDev(x, 'p')
一分鐘彙總視窗的範例輸入:
注意
這些數據點都具有GOOD
質量。
03:00:00 | 4.0 |
03:01 | 2.0 |
03:01:10 | 8.0 |
03:01:50 | 20.0 |
03:02 | 14.0 |
03:02:05 | 10.0 |
03:02:10 | 3.0 |
03:02:30 | 20.0 |
03:03:30 | 0.0 |
匯總結果輸出:
注意
無 — 未針對此視窗產生結果。
時間 | 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:5 | 無 | 0 | 0 | 無 | 0 | 0 |
在轉換中使用時間函數
僅在轉換中,您可以在啟動目前轉換計算的屬性更新之前,使用pretrigger()
函數擷取變數的GOOD
品質值。
假設製造商用 AWS IoT SiteWise 來監視機器狀態的範例。製造商使用以下測量和轉換來表示過程:
-
測量值
current_state
,可以是 0 或 1。-
如果本機處於清潔狀態,則
current_state
等於 1。 -
如果機器處於製造狀態,則
current_state
等於 0。
-
-
轉換
cleaning_state_duration
,等於if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)
。此轉換以 Unix 時代格式返回機器處於清理狀態的時間(以秒為單位)。如需詳細資訊,請參閱在公式運算式中使用條件函數和 timestamp () 函數。
如果本機處於清潔狀態的時間超過預期,製造商可能會調查本機。
您也可以在多變數轉pretrigger()
換中使用此函數。例如,您有兩個名x
為 AND 的度量y
,以及一個轉換z
,即等於x + y +
pretrigger(y)
。下表顯示x
、y
以及z
從上午 9:00 到上午 9:15 的值。
注意
-
此範例假設量測值會按時間順序到達。例如,上午 09:00
x
的值會在上午 09:05 的x
值之前抵達。 -
如果上午 9:05 的資料點在上午 9:00 的資料點之前到達,則
z
不會在上午 9:05 計算。 -
如果上午 9:05
x
的值22 = 20 + 1 + 1
在 09:00 AM 的x
值之前到達,並且按時間順序到y
達的值,則z
等於上午 9:05。
上午 9 時 | 上午九時零五分 | 上午九時十分 | 上午九時十五分 | |
---|---|---|---|---|
|
10 |
20 |
30 |
|
|
1 |
2 |
3 |
|
|
|
23 = 20 + 2 + 1
|
25 = 20 + 3 + 2
|
三
|