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