共用方式為


將數據從事件中樞內嵌到 Azure Synapse 數據總管

記錄和遙測資料時,Azure Synapse 資料總管是快速且調整彈性高的資料探索服務。 Azure Synapse 資料總管提供事件中樞、IoT 中樞的擷取 (資料載入),及在 blob 容器寫入 blob。

Azure Synapse 數據總管提供從事件中樞擷取(數據載入)、巨量數據串流平臺和事件擷取服務。 事件中 樞可以近乎即時地每秒處理數百萬個事件。 在本文中,您會建立事件中樞、從 Azure Synapse 數據總管連線到該事件中樞,並查看數據流通過系統。

必要條件

  • Azure 訂用帳戶。 建立免費的 Azure 帳戶

  • 使用 Synapse StudioAzure 入口網站建立資料總管集區

  • 建立資料總管資料庫。

    1. 在 Synapse Studio 的左側窗格上,選取 [資料]

    2. 選取 + (新增資源) >[資料總管集區],並使用下列資訊:

      設定 建議的值 描述
      集區名稱 contosodataexplorer 要使用的資料總管集區名稱
      名稱 TestDatabase 資料庫名稱在叢集內必須是唯一而不重複。
      預設保留期限 365 保證資料持續可供查詢的時間範圍 (天)。 系統會從內嵌資料的時間開始測量時間範圍。
      預設快取期間 31 在 SSD 儲存裝置或 RAM 中 (而非長期儲存裝置),讓受到頻繁查詢的資料維持可用狀態的時間範圍 (天)。
    3. 選取 [建立] 以建立資料庫。 建立時間通常不到一分鐘。

  • 建立事件中樞將傳送數據的目標數據表

    1. 在 Synapse Studio 的左側窗格上,選取 [開發]

    2. KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。

    3. 在 [連線至] 功能表中,選取 [contosodataexplorer]

    4. 在 [使用資料庫] 功能表中,選取 [TestDatabase]

    5. 貼上下列命令,並選取 [執行] 以建立資料表。

      .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
      

      提示

      確認資料表已成功建立。 在左側窗格上,選取 [資料]、[contosodataexplorer 其他功能表] 後,選取 [重新整理]。 在 contosodataexplorer 下方,展開資料表並確定 TestTable 資料表出現在清單中。

    6. 將下列命令複製到視窗中,然後選取 [執行] 以將傳入的 JSON 資料對應至資料表 (TestTable) 的資料行名稱與資料類型。

      .create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
      
  • 我們建議針對數據連線使用 使用者指派的受控識別系統指派的受控識別 (選擇性)。

  • 產生數據的範例應用程式 ,並將其傳送至事件中樞。 將範例應用程式下載到您的系統。

  • Visual Studio 2019 以執行範例應用程式。

登入 Azure 入口網站

登入 Azure 入口網站

建立事件中樞

在 Azure 入口網站 中使用 Azure Resource Manager 範本建立事件中樞。

  1. 若要建立事件中樞,請使用下列按鈕來啟動部署。 以滑鼠右鍵按兩下並選取 [在新視窗中開啟],讓您可以遵循本文的其餘步驟。

    將 Resource Manager 範本部署至 Azure 的按鈕。

    [部署至 Azure] 按鈕會帶您前往 Azure 入口網站。

  2. 選取您要在其中建立事件中樞的訂用帳戶,然後建立名為 test-hub-rg的資源群組。

    建立資源群組

  3. 在表單中填寫以下資訊。

    針對下表中未列出的任何設定使用預設值。

    設定 建議的值 欄位描述
    訂用帳戶 您的訂用帳戶 選取您想要用於事件中樞的 Azure 訂用帳戶。
    資源群組 test-hub-rg 建立新的資源群組。
    Location 美國西部 選取本文的 [美國西部]。 針對生產系統,選取最符合您需求的區域。 在與 Azure Synapse 數據總管叢集相同的位置中建立事件中樞命名空間,以獲得最佳效能(對於具有高輸送量的事件中樞命名空間而言最為重要)。
    命名空間名稱 唯一的命名空間名稱 選擇可識別命名空間的唯一名稱。 例如, mytestnamespace。 功能變數名稱 servicebus.windows.net 會附加至您提供的名稱。 名稱只能包含字母、數字和連字號。 名稱必須以字母開頭,而且必須以字母或數字結尾。 值長度必須介於 6 到 50 個字元之間。
    事件中樞名稱 test-hub 事件中樞位於 命名空間底下,可提供唯一的範圍容器。 事件中樞名稱在命名空間內必須是唯一的。
    取用者群組名稱 test-group 取用者群組可讓多個取用應用程式各自擁有事件數據流的個別檢視。
  4. 選取 [檢閱 + 建立]。

  5. 檢閱 所建立資源的摘要 。 選取 [建立],確認您要在訂用帳戶中建立資源。

    檢閱和建立事件中樞命名空間、事件中樞和取用者群組的 Azure 入口網站 螢幕快照。

  6. 選取 工具列上的 [通知 ] 以監視布建程式。 部署可能需要幾分鐘的時間才能成功,但您現在可以繼續下一個步驟。

    通知圖示

驗證考慮

根據身分識別的類型,您使用 來向事件中樞進行驗證,您可能需要一些其他設定。

  • 如果您使用使用者指派的受控識別向事件中樞進行驗證,請移至您的事件中樞>網路,然後在 [允許存取來源] 底下,選取 [所有網络] 並儲存變更。

    [事件中樞網络] 頁面的螢幕快照,其中顯示允許存取所有網路的選取專案。

  • 如果您使用系統指派的受控識別向事件中樞進行驗證,請移至您的事件>中樞網路,然後在 [允許從所有網络存取] 或 [允許存取] 底下選取 [選取的網络],選取 [允許受信任的 Microsoft 服務 略過此防火牆並儲存變更。

    [事件中樞網络] 頁面的螢幕快照,其中顯示允許存取受信任服務的選取專案。

聯機到事件中樞

現在,您可以從數據總管集區連線到事件中樞。 當此連線就緒時,流入事件中樞的數據會串流至您稍早在本文中建立的測試數據表。

  1. 選取 工具列上的 [通知 ],以確認事件中樞部署是否成功。

  2. 在您建立的資料總管集區下方,選取 [資料庫] >[TestDatabase]

    測試資料庫集區的螢幕快照,其中顯示選取測試資料庫。

  3. 選取 [資料連線] 與 [新增資料連線]

    選取 [數據擷取] 和 [新增數據連線]。

建立資料連線 (預覽)

使用下列資訊填寫窗體,然後選取 [ 建立]。

事件中樞內數據連線窗格的螢幕快照。

設定 建議的值 欄位描述
資料連線名稱 test-hub-connection 您想要在 Azure Synapse 資料總管中建立的連接名稱。
訂用帳戶 事件中樞資源所在的訂用帳戶標識碼。 此欄位會自動填入。
事件中樞命名空間 唯一的命名空間名稱 您稍早選擇用來識別命名空間的名稱。
事件中樞 test-hub 您建立的事件中樞。
取用者群組 test-group 您在事件中樞中定義的取用者群組。
事件系統屬性 選取相關的屬性 事件中 樞系統屬性。 如果每個事件訊息有多個記錄,系統會將系統屬性新增至第一筆記錄。 新增系統屬性時, 請建立更新 數據表架構,並 對應 以包含選取的屬性。
壓縮 None 事件中樞訊息承載的壓縮類型。 支援的壓縮類型: None、Gzip
受控識別 系統指派 數據總管叢集用來存取從事件中樞讀取的受控識別。

注意
建立資料連線時:
- 如果系統指派的 身分識別不存在,系統指派的身分識別會自動建立
- 受控識別會自動指派 Azure 事件中樞 數據接收者角色,並新增至數據總管叢集。 建議您確認已指派角色,並將身分識別新增至叢集。

目標資料表

路由擷取的數據有兩個選項: 靜態動態。 在本文中,您會使用靜態路由,其中您會將數據表名稱、數據格式和對應指定為預設值。 如果事件中樞訊息包含數據路由資訊,此路由資訊將會覆寫預設設定。

  1. 填寫下列路由設定:

    將數據內嵌至事件中樞的預設路由設定 - Azure Synapse 數據總管。

    設定 建議的值 欄位描述
    資料表名稱 TestTable 您在 TestDatabase 中建立的資料表。
    資料格式 JSON 支援的格式包括 Avro、CSV、JSON、MULTILINE JSON、ORC、PARQUET、PSV、SCSV、SOHSV、TSV、TXT、TSVE、APACHEAVRO 和 W3CLOG。
    對應 TestMapping 您在 TestDatabase建立的對應,會將傳入的數據對應至 TestTable 的數據行名稱和數據類型。 JSON、MULTILINE JSON 和 AVRO 的必要專案,以及其他格式的選擇性專案。

    注意

    • 您不必指定所有預設路由設定。 也會接受部分設定。
    • 只有在您建立數據連線之後才會加入佇列的事件才會內嵌。
  2. 選取 建立

事件系統屬性對應

注意

  • 系統屬性支援 json 和表格式格式 (csvtsv等等),而且不支援壓縮的數據。 使用不支援的格式時,數據仍會內嵌,但會忽略屬性。
  • 針對表格式數據,系統屬性僅支援單一記錄事件訊息。
  • 針對 JSON 數據,系統屬性也支援多重記錄事件訊息。 在這種情況下,系統屬性只會新增至事件訊息的第一筆記錄。
  • 針對 csv 對應,屬性會以 [系統屬性] 資料表中 所列的順序,在記錄開頭新增屬性
  • 針對json對應,屬性會根據 [系統屬性] 資料表中的屬性名稱新增。

如果您在資料表的 [資料來源] 區段中選取 [事件系統屬性],則必須在資料表架構和對應中包含系統屬性

複製連接字串

當您執行必要條件中列出的範例應用程式時,您需要事件中樞命名空間的 連接字串。

  1. 在您建立的事件中樞命名空間底下,選取 [共用存取原則],然後選取 [RootManageSharedAccessKey]。

    共用存取原則。

  2. 複製 連接字串 - 主鍵。 您會將它貼到下一節。

    連接字串。

產生範例資料

使用您下載的 範例應用程式 來產生資料。

警告

此範例會使用 連接字串 驗證來連線到事件中樞,以簡化範例。 不過,將 連接字串 硬式編碼到您的腳本時,需要高度信任應用程式,並帶來安全性風險。

針對長期且安全的解決方案,請使用下列其中一個選項:

  1. 在 Visual Studio 中開啟範例應用程式方案。

  2. 在program.cs檔案中,將eventHubName常數更新為事件中樞的名稱,並將常數更新connectionString為您從事件中樞命名空間複製的 連接字串。

    const string eventHubName = "test-hub";
    // Copy the connection string ("Connection string-primary key") from your Event Hub namespace.
    const string connectionString = @"<YourConnectionString>";
    
  3. 建置並執行應用程式。 應用程式會將訊息傳送至事件中樞,並每隔 10 秒列印其狀態。

  4. 應用程式傳送一些訊息之後,請移至下一個步驟:檢閱數據流到事件中樞和測試數據表。

檢閱資料流程

透過應用程式產生數據,您現在可以看到該數據從事件中樞流向叢集中數據表的流程。

  1. 在 Azure 入口網站 事件中樞底下,您會在應用程式執行時看到活動尖峰。

    事件中樞圖表。

  2. 若要檢查目前為止已有多少則訊息成功進入資料庫,請在測試資料庫中執行下列查詢。

    TestTable
    | count
    
  3. 若要查看訊息的內容,請執行下列查詢:

    TestTable
    

    結果集應顯示下列圖片:

    訊息結果集。

    注意

    • Azure Synapse 數據總管具有數據擷取的匯總(批處理)原則,其設計目的是優化擷取程式。 默認批處理原則設定為一旦批次符合下列其中一個條件,即為封存批次:延遲時間上限為 5 分鐘、大小總計 1G 或 1000 個 Blob。 因此,您可能會遇到延遲。 如需詳細資訊,請參閱 批處理原則
    • 事件中樞擷取包含 10 秒或 1 MB 的事件中樞響應時間。
    • 若要減少回應時間延遲,請將數據表設定為支援串流。 請參閱 串流原則

清除資源

如果您不打算再次使用事件中樞,請 清除test-hub-rg,以避免產生成本。

  1. 在 Azure 入口網站中選取最左側的 [資源群組],然後選取您所建立的資源群組。

    如果左側功能表已折疊,請選取 [展開] 按鈕。 以展開它。

    選取要刪除的資源群組。

  2. 在 test-resource-group 底下,選取 [刪除資源群組]。

  3. 在新視窗中,輸入要刪除的資源群組名稱(test-hub-rg),然後選取 [ 刪除]。

下一步