本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
公式表達式教學課程
您可以遵循這些教學課程來使用 中的公式表達式 AWS IoT SiteWise。
在公式中使用字串
您可以在公式表達式中的字串上操作 。您也可以從參考屬性和測量屬性的變數輸入字串。
重要
公式表達式只能輸出雙數或字串值。巢狀運算式可以輸出其他資料類型,例如字串,但整體公式必須評估為數字或字串。您可以使用 jp 函數將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊,請參閱未定義、無限和溢出值。
AWS IoT SiteWise 提供下列公式表達式功能,可用於在字串上操作:
篩選資料點
如果函數篩選不符合條件的資料點,您可以使用 。if
函數會評估條件,並傳回 true
和 false
結果的不同值。您可以使用無常數作為函數一個案例的輸出if
,以捨棄該案例的資料點。
篩選符合條件的資料點
-
建立使用
if
函數的轉換,以定義條件,檢查是否符合條件,並傳回none
result_if_true
或result_if_false
值。
範例:篩選水未沸騰的資料點
假設您有一個測量 temp_c
,可提供機器中水溫 (攝氏) 的案例。您可以定義下列轉換,以篩選水未沸騰的資料點:
-
轉換:
boiling_temps = if(gte(temp_c, 100), temp_c, none)
– 如果大於或等於攝氏 100 度,則傳回溫度,否則不會傳回資料點。
計數符合條件的資料點
您可以使用比較函數和 sum() 來計算條件為 true 的資料點數目。
計算符合條件的資料點
-
建立使用比較函數在另一個屬性上定義篩選條件的轉換。
-
建立可加總符合該條件之資料點的指標。
範例:計算水沸騰的資料點數量
假設您有一個測量 temp_c
,可提供機器中水溫 (攝氏) 的案例。您可以定義下列轉換和指標屬性,以計算水沸騰的資料點數量:
-
轉換:
is_boiling = gte(temp_c, 100)
–1
如果溫度大於或等於攝氏 100 度,則傳回 ,否則傳回0
。 -
指標:
boiling_count = sum(is_boiling)
– 傳回水沸騰的資料點數目。
公式中的延遲資料
AWS IoT SiteWise 支援延遲擷取長達 7 天的資料。當 AWS IoT SiteWise 收到延遲資料時,它會重新計算過去時段內輸入延遲資料的任何指標的現有值。這些重新計算會產生資料處理費用。
注意
當 AWS IoT SiteWise 運算輸入延遲資料的屬性時,它會使用每個屬性目前的公式表達式。
AWS IoT SiteWise 重新計算指標的過去時段之後,它會取代該時段的先前值。如果您啟用該指標的通知, AWS IoT SiteWise 也會發出屬性值通知。這表示您可以針對先前收到通知的相同屬性和時間戳記,接收新的屬性值更新通知。如果您的應用程式或資料湖使用屬性值通知,您必須使用新的值來更新之前的值,使其資料正確無誤。
公式中的資料品質
在 中 AWS IoT SiteWise,每個資料點都有一個品質碼,可以是下列其中一項:
-
GOOD
– 資料不會受到任何問題的影響。 -
BAD
– 資料會受到感應器故障等問題的影響。 -
UNCERTAIN
– 資料受到感應器不準確等問題的影響。
AWS IoT SiteWise 只會在運算轉換和指標時耗用GOOD
品質資料。 AWS IoT SiteWise 輸出只會為成功的運算輸出GOOD
品質資料。如果運算不成功,則 AWS IoT SiteWise 不會輸出該運算的資料點。如果計算導致未定義、無限或溢出值,則可能會發生這種情況。
如需如何查詢資料及依資料品質篩選的詳細資訊,請參閱 來自 的查詢資料 AWS IoT SiteWise。
未定義、無限和溢出值
有些公式表達式 (例如 x / 0
、 sqrt(-1)
或 log(0)
) 會計算在實數系統中、無限或超出 支援範圍時未定義的值 AWS IoT SiteWise。當資產屬性的表達式運算未定義、無限或溢位值時, AWS IoT SiteWise 不會輸出該運算的資料點。
AWS IoT SiteWise 如果資料點運算非數值作為公式表達式的結果,也不會輸出資料點。這表示如果您定義計算字串、陣列或無常數的公式,則 AWS IoT SiteWise 不會輸出該運算的資料點。
範例
下列每個公式表達式都會產生 AWS IoT SiteWise 無法表示為 number 的值。當計算這些公式表達式時, 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
。