使用事件處理器編輯器處理事件資料
事件處理器編輯器是一種無程式碼體驗,可讓您拖放以設計事件資料處理邏輯。 本文說明如何使用編輯器來設計您的處理邏輯。
注意
當您立即建立 Eventstream 時,預設會啟用增強功能。 如果您有使用標準功能建立的事件串流,這些事件串流將會繼續運作。 您仍然可以像往常一樣編輯並使用它們。 建議您建立新的 Eventstream 來取代標準事件串流,以便利用增強事件串流的其他功能和優點。
必要條件
開始之前,您必須完成下列先決條件:
- 在 Fabric 容量授權模式中存取工作區,或具有參與者或更高許可權的試用版授權模式。
使用編輯器設計事件處理
若要使用無程式碼編輯器在資料流上執行串流處理作業,請遵循下列步驟:
如果您尚未處於編輯模式,請 選取功能區上的 [編輯 ]。 請確定已連線之作業的上游節點具有架構。
若要在編輯模式中於資料流節點和目的地之間插入事件處理運算子,您可以使用下列兩種方法之一:
選取管理欄位運算子節點。 在管理欄位設定面板中,選擇您想要輸出的欄位。 如果您想要新增所有欄位,請選取新增所有欄位。 您也可以使用內建函數新增欄位,從上游彙總資料。 (目前,我們支援的內建函數是 字串函數、日期和時間函數、數學函數 中的一些函數。若要尋找它們,請搜尋
built-in
。)設定管理欄位運算子之後,請選取重新整理來驗證此運算子所產生的測試結果。
如果您有任何設定錯誤,它們會出現在 底部窗格的 [編寫錯誤 ] 索引標籤中。
如果您的測試結果看起來是正確的,請選取發佈事件處理邏輯並退回 [即時] 檢視。
完成這些步驟之後,您可以將 Eventstream 如何在即時檢視中開始串流和處理資料的過程視覺化。
事件處理編輯器
事件處理器編輯器(編輯模式中的創作區)可讓您將資料轉換成各種目的地。 輸入編輯模式,以設計資料流的串流處理作業。
編輯模式包含創作區和下方窗格,您可以在其中:
- 使用拖放來建置事件資料轉換邏輯。
- 從頭到尾預覽每個處理節點的測試結果。
- 探索處理節點內的任何編寫錯誤。
編輯器配置
- 功能區功能表和創作區 (影像中的編號為 1):在此窗格中,您可以選取運算子 (從「轉換事件」功能表),並透過新建立的運算子節點來連接資料流和目的地節點,藉此設計資料轉換邏輯。 您可以拖放連接線,或選取和刪除連線。
- 右編輯 窗格(影像中有兩個):此窗格可讓您設定選取的節點或檢視資料流名稱。
- 具有資料預覽和編寫錯誤索引卷標的 底部窗格(影像中有三個):在此窗格中,使用 [測試結果] 索引標籤,在選取的節點中預覽測試結果。[編寫錯誤] 索引標籤會列出作業節點中任何不完整或不正確的設定。
支援的節點類型和範例
以下是支援在擷取之前新增運算子的目的地類型:
- Lakehouse
- Eventhouse(擷取前的事件處理)
- 衍生串流
- 活化劑
注意
對於不支持預先擷取運算元新增的目的地,您可以先新增衍生資料流作為運算子的輸出。 然後,將您預期的目的地附加至這個衍生資料流。
Lakehouse 和 KQL Database 中的事件處理器(擷取前的事件處理)可讓您在將資料內嵌至目的地之前處理資料。
必要條件
開始之前,您必須完成下列先決條件:
- 在 Fabric 容量授權模式中存取工作區,或具有參與者或更高許可權的試用版授權模式。
- 取得具有您 Lakehouse 或 KQL Database 所在位置之參與者或更高許可權的工作區存取權。
使用編輯器設計事件處理
若要使用事件處理器編輯器設計事件處理:
新增 Lakehouse 目的地,並在右側窗格輸入必要參數。 (請參閱在 Eventstream 中新增及管理目的地,以取得詳細指示。)
選取 [ 開啟事件處理器]。 [ 事件處理編輯器] 畫面隨即出現。
在事件處理編輯器創作區中,選取 eventstream 節點。 您可以預覽資料架構,或變更右側 Eventstream 窗格中的資料類型。
若要在事件處理器編輯器中插入此 Eventstream 與目的地之間的事件處理運算子,您可以使用下列兩種方法之一:
選取管理欄位運算子節點。 在管理欄位設定面板中,選擇您想要輸出的欄位。 如果您想要新增所有欄位,請選取新增所有欄位。 您也可以使用內建函數新增欄位,從上游彙總資料。 (目前,我們支援的內建函數是 字串函數、日期和時間函數、數學函數 中的一些函數。若要尋找它們,請搜尋「內建」。)
設定管理欄位運算子之後,請選取重新整理靜態預覽來預覽此運算子所產生的資料。
如果您有任何設定錯誤,它們會出現在 底部窗格的 [編寫錯誤 ] 索引標籤中。
如果您的預覽資料看起來正確,請選取 [完成 ] 以儲存事件處理邏輯,並返回Lakehouse目的地設定畫面。
選取 [新增 ] 以完成 Lakehouse 目的地的建立。
事件處理器編輯器
事件處理器可讓您轉換您內嵌至 Lakehouse 目的地的資料。 當您設定 Lakehouse 目的地時,您會在 Lakehouse 目的地設定畫面中間找到 [開啟事件處理器] 選項。
選取 [ 開啟事件處理器 ] 會 啟動 [事件處理編輯器] 畫面,您可以在其中定義資料轉換邏輯。
事件處理器編輯器包含創作區和下方窗格,您可以在其中:
- 使用拖放來建置事件資料轉換邏輯。
- 從頭到尾預覽每個處理節點中的資料。
- 探索處理節點內的任何編寫錯誤。
螢幕配置就像主編輯器一樣。 其中包含三個區段,如下圖所示:
具有圖表檢視的創作區:在此窗格,您可以透過選取運算子(從操作功能表)來選取運算子,並透過新建立的運算子節點連接 Eventstream 和目的地節點來設計資料轉換邏輯。 您可以拖放連接線,或選取和刪除連線。
右側編輯窗格:此窗格可讓您設定選取的作業節點,或檢視 Eventstream 和目的地的結構描述。
具有資料預覽和編寫錯誤索引卷標的底部窗格:在此窗格中,使用 [資料預覽] 索引卷標預覽 所選節點中的資料。[ 編寫錯誤] 索引 標籤會列出作業節點中任何不完整或不正確的設定。
撰寫錯誤
編寫錯誤是指事件處理器編輯器中因作業節點設定不完整或不正確而發生的錯誤,協助您找出並修正事件處理器中的潛在問題。
您可以在事件處理器編輯器的底部面板中檢視編寫錯誤。 底部面板會列出所有編寫錯誤,每個編寫錯誤都有四個資料行:
- 節點標識碼:指出發生編寫錯誤的作業節點標識碼。
- 節點類型:指出發生編寫錯誤的作業節點類型。
- 層級:指出編寫錯誤的嚴重性,有兩個層級: 嚴重 和 資訊。 嚴重層級編寫錯誤表示您的事件處理器發生嚴重問題,且無法儲存或執行。 資訊層級編寫錯誤表示您的事件處理器有一些提示或建議,可協助您優化或改善事件處理器。
- 錯誤:指出編寫錯誤的特定資訊,簡要描述編寫錯誤的原因和影響。 您可以選擇 [ 顯示詳細資料 ] 索引標籤來檢視詳細資料。
由於 Eventstream 和 Eventhouse 支援不同的數據類型,因此數據類型轉換的程式可能會產生撰寫錯誤。
下表顯示從 Eventstream 轉換成 Eventhouse 的數據類型結果。 數據行代表 Eventstream 支援的數據類型,而數據列則代表 Eventhouse 支援的數據類型。 儲存格會指出轉換結果,這可以是下列三個結果之一:
✔️ 表示成功轉換、不會產生任何錯誤或警告。
❌表示無法轉換,會產生嚴重編寫錯誤。 錯誤訊息類似於:資料行 "{1}" 的資料類型 "{0}" 不符合所選 KQL 資料表中預期的類型 "{2}",且無法自動轉換。
⚠️ 表示可能但不正確的轉換,會產生資訊編寫錯誤。 錯誤訊息類似於:資料行 "{1}" 的資料類型 "{0}" 不完全符合所選 KQL 資料表中預期的類型 "{2}"。 它會自動轉換成」。{2}
字串 | bool | Datetime | dynamic | guid | int | long | real | 時間範圍 | decimal | |
---|---|---|---|---|---|---|---|---|---|---|
Int64 | ❌ | ❌ | ❌ | ✔️ | ❌ | ⚠️ | ✔️ | ⚠️ | ❌ | ✔️ |
Double | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ⚠️ |
String | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Datetime | ⚠️ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
錄製 | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Array | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
如您在資料表中看到,某些資料類型轉換成功,例如字串到字元串。 這些轉換不會產生任何編寫錯誤,而且不會影響事件處理器的作業。
某些資料類型轉換是不可能的,例如 int 到字串。 這些轉換會產生嚴重層級的編寫錯誤,導致事件處理器無法儲存。 您必須在 Eventstream 或 KQL 資料表中變更資料類型,以避免這些錯誤。
某些資料類型轉換是可能的,但並非精確,例如 int 到 real。 這些轉換會產生資訊層級編寫錯誤,指出資料類型與自動轉換結果不符。 這些轉換可能會導致您的資料失去精確度或結構。 您可以選擇忽略這些錯誤,或修改 Eventstream 或 KQL 資料表中的資料類型,以將事件處理器優化。
轉換運算元
事件處理器提供六個運算子,可讓您根據業務需求來轉換事件資料。
彙總
每次在一段時間內發生新事件時,您可以使用彙總轉換來計算彙總 (Sum、Minimum、Maximum 或 Average)。 這項作業也可讓您重新命名這些計算結果欄,並根據資料中的其他維度來篩選或切割彙總。 您可以在相同的轉換中具有一或多個彙總。
- 運算子名稱:指定匯總作業的名稱。
- 新增聚合函數:在匯總作業中新增一或多個匯總。
- 類型:選擇匯總類型: Sum、 Minimum、 Maximum 或 Average。
- 欄位:選取要處理的數據行。
- 名稱:定義此聚合函數的名稱。
- 分割依據:選取要分組匯總的數據行。
- 最後一個匯總值:指定匯總的時間範圍(預設值為 5 秒)。
展開
使用 展開陣列 轉換針對陣列內的每個值建立新的資料列。 您可以選擇為遺漏/空白陣列建立資料列,或不要為遺漏/空白陣列建立數據列。
篩選器
使用篩選轉換,根據輸入中的欄位值篩選事件。 根據資料型態 (數字或文字),轉換會保留符合所選取條件的值,例如為 null 或不為 null。
分組依據
使用群組依據轉換來計算特定時間範圍內所有事件的彙總。 您可以依一或多個欄位中的值進行分組。 其和彙總轉換一樣可讓您重新命名計算結果欄,但提供更多彙總選項,且包含更複雜的時間範圍選項。 也像彙總一樣,您可以為每個轉換新增多個彙總。
轉換中可用的彙總如下:
- 平均值
- 計數
- 最大值
- 最低
- Percentile (連續和離散)
- 標準差
- Sum
- Variance
在時間串流案例中,對時態時間範圍中包含的資料執行作業是常見的模式。 事件處理器支援視窗函式,此函式已整合至 Group by 運算子。 您可以在此運算子的設定中加以定義。
管理欄位
管理欄位:此轉換可讓您新增、移除、變更資料類型,或重新命名來自輸入或其他轉換的欄位。 側邊窗格上的設定可讓您選擇新增一個欄位,方法是選取 新增欄位 新增多個欄位或一次新增所有欄位。
此外,您也可以使用 [內建函數] 來新增欄位,以彙總上游的資料。 (目前,我們支援的內建函數是 字串函數、日期和時間函數、數學函數 中的一些函數。若要尋找它們,請搜尋「內建」。)
下表顯示使用管理欄位變更資料類型的結果。 資料行代表原始資料類型,而資料列則代表目標資料類型。
- ✔️ 如果儲存格中有 ,表示可以直接轉換它,且目標資料類型選項會顯示在下拉式清單中。
- ❌如果儲存格中有 ,表示無法轉換,且目標資料類型選項不會顯示在下拉式清單中。
- 如果儲存格中有 ⚠,表示它可以轉換,但必須符合特定條件,例如字串格式必須符合目標資料類型的需求。 例如,從字串轉換成 int 時,字串必須是有效的整數形式,例如
123
, 而非abc
。
Int64 | 雙重 | String | Datetime | 錄製 | 陣列 | |
---|---|---|---|---|---|---|
Int64 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Double | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
String | ⚠️ | ⚠️ | ✔️ | ⚠️ | ❌ | ❌ |
Datetime | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
錄製 | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ |
Array | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
Union
使用聯合轉換來連接兩個或多個節點,以及將具有共用欄位 (名稱與資料類型相同) 的事件新增到一個資料表中。 不相符的欄位將會卸除,且不會包含在輸出中。
聯結
使用聯結轉換,根據您選取的欄位組,結合來自兩個輸入的事件。 如果您未選取欄位組,則聯結會預設為以時間為基礎。 預設值是讓此轉換與批次轉換不同的項目。
如同一般聯結,您會有聯結邏輯選項:
- 內部聯結:只包含來自這兩個資料表與欄位組符合的記錄。
- 左方外部聯結:包含來自左方 (第一個) 資料表的所有記錄,而且只包含來自第二個資料列且符合欄位組的記錄。 如果沒有相符項目,則來自第二個輸入的欄位為空白。