使用數據流擴充數據
重要
此頁面包含使用 Kubernetes 部署指令清單來管理 Azure IoT Operations 元件的指示,其處於預覽狀態。 這項功能隨附 數個限制,不應用於生產工作負載。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
您可以使用內容化數據集函式來擴充數據。 處理傳入記錄時,您可以根據與傳入記錄欄位相關的條件來查詢這些資料集。 此功能允許動態互動。 來自這些數據集的數據可用來補充輸出欄位中的資訊,並在對應程式期間參與複雜的計算。
若要將範例數據載入狀態存放區,請使用 狀態存放區 CLI。
例如,假設下列資料集有一些記錄,以 JSON 記錄表示:
{
"Position": "Analyst",
"BaseSalary": 70000,
"WorkingHours": "Regular"
},
{
"Position": "Receptionist",
"BaseSalary": 43000,
"WorkingHours": "Regular"
}
對應程式會根據對應組態中指定的條件,使用索引鍵值來存取儲存在 Azure IoT Operations 狀態存放區中的參考數據集。 狀態存放區中的索引鍵名稱會對應至數據流組態中的數據集。
datasets: [
{
key: 'position',
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
正在處理新記錄時,對應工具會執行下列步驟:
- 數據要求: 對應程式會將要求傳送至狀態存放區,以擷取儲存在索引鍵
Position
底下的數據集。 - 記錄比對:對應程式接著會查詢此數據集,以尋找數據集中欄位符合
Position
傳入記錄欄位的第一Position
筆記錄。
{
inputs: [
'$context(position).WorkingHours' // - $1
]
output: 'WorkingHours'
}
{
inputs: [
'BaseSalary' // - - - - - - - - - - - - $1
'$context(position).BaseSalary' // - - $2
]
output: 'BaseSalary'
expression: 'if($1 == (), $2, $1)'
}
在此範例中, WorkingHours
欄位會新增至輸出記錄,而 BaseSalary
只有在傳入記錄不包含 BaseSalary
欄位時,才會有條件地使用 字段(如果它是可為 Null 的欄位,則為值 null
)。 內容化資料的要求不會隨著每個傳入記錄發生。 對應程式會要求數據集,然後從狀態存放區收到有關變更的通知,同時會使用數據集的快取版本。
您可使用多個資料集:
datasets: [
{
key: 'position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
{
key: 'permissions'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
然後使用混合的參考:
inputs: [
'$context(position).WorkingHours' // - $1
'$context(permissions).NightShift' // - $2
]
輸入參考會使用 資料集的索引鍵,例如 position
或 permission
。 如果狀態存放區中的索引鍵不方便使用,您可以定義別名:
datasets: [
{
key: 'datasets.parag10.rule42 as position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
組態會將數據集重新命名為 position
索引鍵datasets.parag10.rule42
。