教學課程:使用串流分析來分析詐騙通話資料,並在 Power BI 儀表板中以視覺方式呈現結果
本教學課程說明如何使用 Azure 串流分析來分析通話數據。 用戶端應用程式所產生的通話數據包含串流分析作業偵測到的詐騙電話。 您可以使用本教學課程中的技術進行其他類型的詐騙偵測,例如信用卡詐騙或身分識別竊取。
在本教學課程中,您會執行下列工作:
- 產生範例通話數據,並將其傳送至 Azure 事件中樞。
- 建立串流分析作業。
- 設定作業輸入和輸出。
- 定義查詢以篩選詐騙電話。
- 測試並啟動作業。
- 在 Power BI 中將結果可視化。
必要條件
開始之前,請確定您已完成下列步驟:
- 如果您沒有 Azure 訂用帳戶,請建立 免費帳戶。
- 從 Microsoft 下載中心下載電話事件產生器應用程式、TelcoGenerator.zip,或從 GitHub 取得原始程式碼。
- 您需要 Power BI 帳戶。
登入 Azure
登入 Azure 入口網站。
建立事件中樞
您需要先將一些範例數據傳送至事件中樞,串流分析才能分析詐騙通話數據流。 在本教學課程中,您會使用 Azure 事件中樞 將數據傳送至 Azure。
使用下列步驟建立事件中樞,並將呼叫數據傳送至該事件中樞:
登入 Azure 入口網站。
選取 左側功能表上的 [所有服務 ]、選取 [物聯網]、將滑鼠停留 在 [事件中樞] 上,然後選取 [+ [新增] 按鈕。
在 [ 建立命名空間] 頁面上,遵循下列步驟:
選取您想要在其中建立事件中樞的 Azure 訂用帳戶。
針對 [ 資源群組],選取 [ 新建 ],然後輸入資源群組的名稱。 事件中樞命名空間會在此資源群組中建立。
針對 [命名空間名稱],輸入事件中樞命名空間的唯一名稱。
針對 [ 位置],選取您要在其中建立命名空間的區域。
針對 [ 定價層],選取 [ 標準]。
選取頁面底部的 [檢閱 + 建立] 。
在命名空間建立精靈的 [ 檢閱 + 建立 ] 頁面上,選取 頁面底部的 [建立 ],然後檢閱所有設定。
成功部署命名空間之後,請選取 [移至資源 ] 以流覽至 [事件中 樞命名空間] 頁面。
在 [事件中 樞命名空間] 頁面上,選取 命令行上的 [+事件中樞 ]。
在 [建立事件中樞] 頁面上,輸入事件中樞的名稱。 將 [ 數據分割計數 ] 設定為 2。 使用其餘設定中的預設選項,然後選取 [ 檢閱 + 建立]。
在 [檢閱 + 建立] 頁面上,選取頁面底部的 [建立]。 然後等候部署成功。
授與事件中樞的存取權,並取得 連接字串
應用程式必須先有允許存取的原則,應用程式才能將數據傳送至 Azure 事件中樞。 存取原則會產生包含授權資訊的 連接字串。
在 [事件中 樞命名空間] 頁面上,選取 左側功能表上的 [共用存取原則 ]。
從原則清單中選取 [RootManageSharedAccessKey ]。
然後,選取 連線 ion 字串 - 主鍵旁的 [複製] 按鈕。
將 連接字串 貼到文字編輯器中。 在下一節中,您需要此 連接字串。
連接字串 如下所示:
Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>
請注意,連接字串 包含以分號分隔的多個索引鍵/值組:Endpoint、SharedAccessKeyName 和 SharedAccessKey。
啟動事件產生器應用程式
啟動 TelcoGenerator 應用程式之前,您應該將其設定為將數據傳送至您稍早建立的 Azure 事件中樞。
擷取TelcoGenerator.zip檔案的內容。
TelcoGenerator\TelcoGenerator\telcodatagen.exe.config
在您選擇的文本編輯器中開啟檔案 有一個.config
以上的檔案,因此請務必開啟正確的檔案。<appSettings>
使用下列詳細資料更新組態檔中的專案:- 將 EventHubName 索引鍵的值設定為 連接字串 結尾的 EntityPath 值。
- 設定 Microsoft.ServiceBus.連線 的值namespace 之 連接字串 的 ionString 索引鍵。 如果您使用 連接字串 至事件中樞,而不是命名空間,請在結尾移除
EntityPath
值 (;EntityPath=myeventhub
)。 別忘 了移除 EntityPath 值前面的分號。
儲存檔案。
接下來開啟命令視窗,並變更為您解壓縮 TelcoGenerator 應用程式的資料夾。 輸入下列命令:
.\telcodatagen.exe 1000 0.2 2
此指令會採用下列參數:
- 每小時的通話數據記錄數目。
- 詐騙機率的百分比,也就是應用程式應該模擬詐騙電話的頻率。 值 0.2 表示大約 20% 的通話記錄看起來是詐騙的。
- 以小時為單位的持續時間,這是應用程式應該執行的時數。 您也可以在命令行結束程式 (Ctrl+C) 以隨時停止應用程式。
幾秒鐘后,應用程式就會開始在螢幕上顯示通話記錄,因為它會將記錄傳送至事件中樞。 通話資料包含下列欄位:
錄製 [定義] CallrecTime 呼叫開始時間的時間戳。 SwitchNum 用來連接通話的電話交換器。 在此範例中,參數是代表來源國家/地區的字串串(美國、中國、英國、德國或澳大利亞)。 CallingNum 來電者的電話號碼。 CallingIMSI 國際移動訂閱者身份(IMSI)。 這是呼叫端的唯一標識碼。 CalledNum 通話收件者的電話號碼。 CalledIMSI 國際行動使用者身分識別(IMSI)。 這是通話收件者的唯一標識符。
建立串流分析作業
既然您已擁有呼叫事件的數據流,您可以建立串流分析作業,以從事件中樞讀取數據。
- 若要建立串流分析作業,請流覽至 Azure 入口網站。
- 選取 [建立資源 ],然後搜尋 串流分析作業。 選取 [ 串流分析作業 ] 圖格,然後選取 [ 建立]。
- 在 [新增串流分析作業] 頁面上,遵循下列步驟:
針對 [ 訂用帳戶],選取包含事件中樞命名空間的訂用帳戶。
針對 [ 資源群組],選取您稍早建立的資源群組。
在 [實例詳細數據] 區段中,針對 [名稱] 輸入串流分析作業的唯一名稱。
針對 [ 區域],選取您要在其中建立串流分析作業的區域。 建議您將作業和事件中樞放在相同區域中,以獲得最佳效能,因此您不需要支付在區域之間傳輸數據的費用。
若尚未選取 [裝載環境<],請選取 [雲端]。 串流分析作業可以部署到雲端或邊緣裝置。 雲端 可讓您部署至 Azure 雲端,而 Edge 可讓您部署至 IoT Edge 裝置。
針對 [串流單位],選取 [1]。 串流單位代表執行作業所需的計算資源。 根據預設,此值會設定為1。 若要瞭解如何調整串流單位,請參閱 瞭解和調整串流單位 一文。
選取頁面底部的 [檢閱 + 建立] 。
- 在 [ 檢閱 + 建立] 頁面上,檢閱設定,然後選取 [建立 ] 以建立串流分析作業。
- 部署作業之後,選取 [移至資源 ] 以流覽至 [ 串流分析作業 ] 頁面。
設定作業輸入
下一個步驟是定義作業的輸入來源,以使用您在上一節中建立的事件中樞來讀取數據。
在 [ 串流分析作業 ] 頁面上,於 左側功能表中的 [作業拓撲 ] 區段中,選取 [ 輸入]。
在 [ 輸入] 頁面上,選取 [+ 新增輸入 ] 和 [事件中樞]。
在 [事件中 樞 ] 頁面上,遵循下列步驟:
針對 [ 輸入別名],輸入 CallStream。 輸入別名是用來識別輸入的易記名稱。 輸入別名只能包含英數位元、連字元和底線,且長度必須為 3-63 個字元。
針對 [ 訂用帳戶],選取您建立事件中樞的 Azure 訂用帳戶。 事件中樞可以和串流分析作業位於相同或不同的訂用帳戶中。
針對 事件中樞命名空間,選取您在上一節中建立的事件中樞命名空間。 您目前訂用帳戶中可用的所有命名空間都會列在下拉式清單中。
針對 [ 事件中樞名稱],選取您在上一節中建立的事件中樞。 所選命名空間中可用的所有事件中樞都會列在下拉式清單中。
針對 事件中樞取用者群組,保留已選取 [ 建立新 ] 選項,以便在事件中樞上建立新的取用者群組。 建議讓每一個串流分析作業使用不同的取用者群組。 若未指定取用者群組,串流分析作業會使用
$Default
取用者群組。 當作業包含自我聯結或有多個輸入時,某些輸入稍後可能會由多個讀取器讀取。 這種情況會影響單一取用者群組中的讀取器數目。針對 [驗證模式],選取 [連接字串]。 使用此選項更容易測試教學課程。
針對 [ 事件中樞原則名稱],選取 [ 使用現有的],然後選取您稍早建立的原則。
選取頁面底部的 [儲存]。
設定作業輸出
最後一個步驟是定義輸出接收,其中作業可以寫入轉換的數據。 在本教學課程中,您會使用Power BI 輸出資料並將其可視化。
從 Azure 入口網站 開啟 [所有資源],然後選取 ASATutorial 串流分析作業。
在串流分析作業的 [ 作業拓撲 ] 區段中,選取 [ 輸出 ] 選項。
選取 [+ 新增]>[Power BI]。
以下欄詳細資料填入輸出表單:
設定 建議的值 輸出別名 MyPBIoutput 群組工作區 我的工作區 資料集名稱 ASAdataset 資料表名稱 ASATable 驗證模式 使用者權杖 選取 [ 授權 ],然後遵循提示來驗證 Power BI。
選取 Power BI 頁面底部的 [儲存]。
本教學課程使用 使用者令牌 驗證模式。 若要使用受控識別,請參閱 使用受控識別向 Power BI 驗證 Azure 串流分析作業。
建立查詢以轉換實時數據
此時,您已設定串流分析作業來讀取傳入數據流。 下一個步驟是建立可即時分析數據的查詢。 查詢會使用類似 SQL 的語言,其具有串流分析特定的一些擴充功能。
在本教學課程的這一節中,您會建立和測試數個查詢,以學習幾種方式,以轉換輸入數據流進行分析。
您在這裡建立的查詢只會顯示已轉換的數據到畫面。 在稍後的章節中,您會將轉換的數據寫入 Power BI。
若要深入了解語言,請參閱 Azure 串流分析查詢語言參考。
使用傳遞查詢進行測試
如果您想要封存每個事件,您可以使用傳遞查詢來讀取事件承載中的所有欄位。
流覽至 Azure 入口網站 中的串流分析作業,然後選取左側功能表上的 [作業拓撲] 底下的 [查詢]。
在查詢視窗中,輸入此查詢:
SELECT * FROM CallStream
注意
如同 SQL,關鍵詞不區分大小寫,且空格符不重要。
在此查詢中,
CallStream
是您在建立輸入時指定的別名。 如果您使用不同的別名,請改用該名稱。選取 [ 測試查詢]。
串流分析作業會針對輸入中的範例數據執行查詢,並在視窗底部顯示輸出。 結果表示事件中樞和串流分析作業已正確設定。
您看到的記錄確切數目取決於範例中擷取的記錄數目。
使用數據行投影減少欄位數目
在許多情況下,您的分析不需要輸入數據流中的所有數據行。 您可以使用查詢來投影比傳遞查詢中傳回的欄位較小的一組字段。
執行下列查詢並注意輸出。
SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum
INTO
[MyPBIoutput]
FROM
CallStream
依區域計算來電:具有匯總的輪轉視窗
假設您想要計算每個區域的來電數目。 在串流數據中,當您想要執行聚合函數,例如計數時,您需要將數據流分割成時態單位,因為數據流本身實際上無休止。 您可以使用串流分析 視窗函式來執行此動作。 然後,您可以將該視窗內的數據當做一個單位來處理。
針對此轉換,您想要一連串不會重疊的時態視窗,每個視窗都有一組您可以分組和匯總的離散數據。 這種類型的視窗稱為 輪轉視窗。 在輪轉視窗中,您可以取得依 分組 SwitchNum
的來電計數,代表呼叫產生所在的國家/地區。
在查詢編輯器中貼上下列查詢:
SELECT System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount FROM CallStream TIMESTAMP BY CallRecTime GROUP BY TUMBLINGWINDOW(s, 5), SwitchNum
此查詢會
Timestamp By
使用 子句中的FROM
關鍵詞來指定輸入數據流中要用來定義輪轉視窗的時間戳字段。 在此情況下,視窗會將數據分割成每個記錄中的欄位區段CallRecTime
。 (如果未指定欄位,則視窗化作業會使用每個事件到達事件中樞的時間。 請參閱串流分析查詢語言參考中的 「抵達時間與應用程式時間」。投影包含
System.Timestamp
,其會傳回每個窗口結尾的時間戳。若要指定您想要使用輪轉視窗,請使用 子句中的
GROUP BY
TUMBLINGWINDOW 函式。 在函式中,您可以指定時間單位(從毫秒到一天的任何位置),以及視窗大小(單位數目)。 在此範例中,輪轉視窗是由5秒間隔所組成,因此每5秒的通話次數會依國家/地區取得計數。選取 [ 測試查詢]。 在結果中,請注意 WindowEnd 底下的時間戳會以 5 秒為單位遞增。
使用自我聯結偵測 SIM 詐騙
在此範例中,請考慮詐騙使用量是來自相同使用者,但在彼此 5 秒內位於不同位置的通話。 例如,相同的使用者無法同時從美國和澳大利亞撥打電話。
若要檢查這些情況,您可以使用串流數據的自我聯結,根據 CallRecTime
值將數據流聯結至本身。 然後,您可以尋找呼叫記錄, CallingIMSI
其中值(原始號碼)相同,但 SwitchNum
值(國家/地區來源)不同。
當您搭配串流數據使用聯結時,聯結必須提供一些限制,以時間分隔相符的數據列。 如先前所述,串流數據實際上無休止。 關聯性的時間界限是在聯結的 子句內 ON
,使用 DATEDIFF
函式來指定。 在此情況下,聯結是以 5 秒的呼叫數據間隔為基礎。
在查詢編輯器中貼上下列查詢:
SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls INTO "MyPBIoutput" FROM "CallStream" CS1 TIMESTAMP BY CallRecTime JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5 WHERE CS1.SwitchNum != CS2.SwitchNum GROUP BY TumblingWindow(Duration(second, 1))
此查詢就像聯結中的函式以外的
DATEDIFF
任何 SQL 聯結。 此版本的DATEDIFF
專屬於串流分析,而且必須出現在 子句中ON...BETWEEN
。 參數是時間單位(在此範例中為秒),以及聯結之兩個來源的別名。 此函式與標準 SQLDATEDIFF
函式不同。子
WHERE
句包含標幟詐騙電話的條件:原始參數不相同。選取 [ 測試查詢]。 檢閱輸出,然後選取 [ 儲存查詢]。
啟動作業並將輸出可視化
若要啟動作業,請流覽至作業 [概觀 ],然後選取 [ 開始]。
選取 [ 立即 ] 以取得作業輸出開始時間,然後選取 [ 開始]。 您可以在通知列中檢視作業狀態。
作業成功之後,流覽至 Power BI 並使用您的公司或學校帳戶登入。 如果串流分析作業查詢輸出結果, 您建立的 ASAdataset 數據集會存在於 [ 數據集] 索引 標籤底下。
從 Power BI 工作區中,選取 [+ 建立 ] 以建立名為 [詐騙電話] 的新儀錶板。
在視窗頂端,選取 [編輯] 和 [新增] 圖格。 然後選取 [自定義串流數據 ] 和 [下一步]。 選擇數據集底下的 ASAdataset。 從 [視覺效果類型] 下拉式清單中選取 [卡片],然後將詐騙電話新增至 [欄位]。 選取 [ 下一步 ] 以輸入磚的名稱,然後選取 [ 套用 ] 以建立磚。
使用下列選項再次遵循步驟 5:
- 在 [視覺效果類型] 中,選取 [折線圖]。
- 新增軸並選取 [windowend]。
- 新增值並選取 詐騙電話。
- 在 [要顯示的時間範圍] 中,選取過去 10 分鐘。
一旦新增這兩個磚,您的儀錶板看起來應該會像下面範例一樣。 請注意,如果您的事件中樞傳送者應用程式和串流分析應用程式正在執行,Power BI 儀錶板會隨著新數據送達而定期更新。
將 Power BI 儀錶板內嵌在 Web 應用程式中
在本教學課程的這個部分中,您會使用Power BI小組所建立的範例 ASP.NET Web 應用程式來內嵌您的儀錶板。 如需內嵌儀錶板的詳細資訊,請參閱 使用PowerBI 內嵌一文。
若要設定應用程式,請移至 PowerBI-Developer-Samples GitHub 存放庫,並遵循 [使用者擁有數據] 區段底下的指示(使用 integrate-web-app 子區段下的重新導向和首頁 URL)。 因為我們使用儀錶板範例,因此請使用位於 GitHub 存放庫中的 integrate-web-app 範例程序代碼。 在瀏覽器中執行應用程式之後,請遵循下列步驟,將您稍早建立的儀錶板內嵌至網頁:
選取 [登入 Power BI],以授與應用程式對 Power BI 帳戶中儀錶板的存取權。
選取 [ 取得儀錶板] 按鈕,以在數據表中顯示您帳戶的 [儀錶板]。 尋找您稍早建立的儀錶板名稱、 powerbi-embedded-dashboard,然後複製對應的 EmbedUrl。
最後,將 EmbedUrl 貼到對應的文字欄位中,然後選取 [ 內嵌儀錶板]。 您現在可以檢視內嵌在 Web 應用程式中的相同儀錶板。
下一步
在本教學課程中,您已建立簡單的串流分析作業、分析傳入的數據,並在 Power BI 儀錶板中呈現結果。 若要深入瞭解串流分析作業,請繼續進行下一個教學課程:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應