如何在 Azure Cosmos DB for PostgreSQL 中使用串流分析來內嵌資料

適用於: Azure Cosmos DB for PostgreSQL (由 Citus 資料庫延伸模組支援 PostgreSQL)

Azure 串流分析是即時分析與事件處理引擎,設計來處理大量來自裝置、感應器與網站的快速串流資料。 也可以在 Azure IoT Edge 執行階段使用,在 IoT 裝置上啟用資料處理。

Diagram that shows Stream Analytics architecture with Azure Cosmos DB for PostgreSQL.

Azure Cosmos DB for PostgreSQL 最適合搭配 IoT 之類的即時工作負載使用。 針對這些工作負載,串流分析可作為非程式碼、高效能且可調整的替代方案,以從 Azure 事件中樞、Azure IoT 中樞與 Azure Blob 儲存體預先處理資料並將其串流到 Azure Cosmos DB for PostgreSQL。

設定串流分析的步驟

注意

此文章使用 Azure IoT 中樞作為範例資料來源,但此技術適用於串流分析支援的任何其他來源。 此外,下列示範資料是來自 Azure IoT 裝置遙測模擬器 (英文)。 本文範圍未涵蓋模擬器的設定作業。

  1. 在 Azure 入口網站中,展開左上方的入口網站功能表,然後選取 [建立資源]

  2. 從結果清單中選取 [分析]>[串流分析作業]

  3. 填寫 [新的串流分析工作] 頁面,並提供下列資訊:

    • 訂閱:選取您要用於此作業的 Azure 訂閱。
    • 資源群組:選取與您的 IoT 中樞相同的資源群組。
    • 名稱:輸入用來識別您串流分析作業的名稱。
    • 區域:選取要裝載資料流分析工作的 Azure 區域。 使用最接近您使用者的地理位置以提升效能並減少資料傳輸成本。
    • 主控環境:選取 [雲端] 以部署至 Azure 雲端,或選取 [Edge] 以部署至 IoT Edge 裝置。
    • 資料流單位:選取您需要執行工作之計算資源的資料流單位數目。
  4. 選取 [檢閱 + 建立],然後選取 [建立]。 您應該會在右上方看到 [正在部署] 通知。

    Screenshot that shows the create Stream Analytics job form.

  5. 設定作業輸入。

    Screenshot that shows configuring job input in Stream Analytics.

    1. 資源部署完成後,請瀏覽至您的串流分析作業。 選取 [輸入]>[新增資料流輸入]>[IoT 中樞]

    2. 使用下列值填寫 [IoT 中樞] 頁面:

      • 輸入別名:輸入名稱以識別作業輸入。
      • 訂用帳戶:選取具有您 IoT 中樞帳戶的 Azure 訂用帳戶。
      • IoT 中樞:選取您 IoT 中樞的名稱。
    3. 選取 [儲存]。

    4. 新增輸入資料流之後,您也可以驗證或下載傳入的資料集。 下列程式碼顯示範例事件的資料:

      {
         "deviceId": "sim000001",
         "time": "2022-04-25T13:49:11.6892185Z",
         "counter": 1,
         "EventProcessedUtcTime": "2022-04-25T13:49:41.4791613Z",
         "PartitionId": 3,
         "EventEnqueuedUtcTime": "2022-04-25T13:49:12.1820000Z",
         "IoTHub": {
           "MessageId": null,
           "CorrelationId": "990407b8-4332-4cb6-a8f4-d47f304397d8",
           "ConnectionDeviceId": "sim000001",
           "ConnectionDeviceGenerationId": "637842405470327268",
           "EnqueuedTime": "2022-04-25T13:49:11.7060000Z"
         }
      }
      
  6. 設定作業輸出。

    1. 在 [串流分析作業] 頁面上,選取 [輸出]>[新增]>[PostgreSQL 資料庫 (預覽)]

      Screenshot that shows selecting PostgreSQL database output.

    2. 使用下列值填寫 Azure PostgreSQL 頁面:

      • 輸出別名:輸入名稱以識別作業輸出。
      • 選取 [手動提供 PostgreSQL 資料庫設定],然後輸入 [伺服器完整網域名稱]、[資料庫]、[資料表]、[使用者名稱] 與 [密碼]。 從範例資料集中,使用資料表 device_data
    3. 選取 [儲存]。

    Configure job output in Azure Stream Analytics.

  7. 定義轉換查詢。

    Transformation query in Azure Stream Analytics.

    1. 在 [串流分析作業] 頁面上,從左側功能表中選取 [查詢]

    2. 針對此教學課程,您只會將 IoT 中樞的替代事件擷取到 Azure Cosmos DB for PostgreSQL,以減少整體資料大小。 複製下列查詢並貼入查詢窗格中:

      select
         counter,
         iothub.connectiondeviceid,
         iothub.correlationid,
         iothub.connectiondevicegenerationid,
         iothub.enqueuedtime
      from
         [src-iot-hub]
      where counter%2 = 0;
      
    3. 選取 [儲存佇列]

      注意

      您不僅會使用查詢來對資料進行取樣,也會從資料流擷取所需的屬性。 搭配串流分析使用自訂查詢選項,有助於在將資料擷取至資料庫前預先處理/轉換資料。

  8. 啟動串流分析作業並驗證輸出。

    1. 回到作業概觀頁面,然後選取 [啟動]

    2. 在 [啟動作業] 頁面上,針對 [工作輸出開始時間] 選取 [現在],然後選取 [啟動]

    3. 作業首次啟動時需要花一些時間,但觸發後即會在資料送達時繼續執行。 幾分鐘後,您就可以查詢叢集以驗證資料是否已載入。

      citus=> SELECT * FROM public.device_data LIMIT 10;
      
       counter | connectiondeviceid |            correlationid             | connectiondevicegenerationid |         enqueuedtime
      ---------+--------------------+--------------------------------------+------------------------------+------------------------------
             2 | sim000001          | 7745c600-5663-44bc-a70b-3e249f6fc302 | 637842405470327268           | 2022-05-25T18:24:03.4600000Z
             4 | sim000001          | 389abfde-5bec-445c-a387-18c0ed7af227 | 637842405470327268           | 2022-05-25T18:24:05.4600000Z
             6 | sim000001          | 3932ce3a-4616-470d-967f-903c45f71d0f | 637842405470327268           | 2022-05-25T18:24:07.4600000Z
             8 | sim000001          | 4bd8ecb0-7ee1-4238-b034-4e03cb50f11a | 637842405470327268           | 2022-05-25T18:24:09.4600000Z
            10 | sim000001          | 26cebc68-934e-4e26-80db-e07ade3775c0 | 637842405470327268           | 2022-05-25T18:24:11.4600000Z
            12 | sim000001          | 067af85c-a01c-4da0-b208-e4d31a24a9db | 637842405470327268           | 2022-05-25T18:24:13.4600000Z
            14 | sim000001          | 740e5002-4bb9-4547-8796-9d130f73532d | 637842405470327268           | 2022-05-25T18:24:15.4600000Z
            16 | sim000001          | 343ed04f-0cc0-4189-b04a-68e300637f0e | 637842405470327268           | 2022-05-25T18:24:17.4610000Z
            18 | sim000001          | 54157941-2405-407d-9da6-f142fc8825bb | 637842405470327268           | 2022-05-25T18:24:19.4610000Z
            20 | sim000001          | 219488e5-c48a-4f04-93f6-12c11ed00a30 | 637842405470327268           | 2022-05-25T18:24:21.4610000Z
      (10 rows)
      

注意

[測試連線] 功能目前不支援 Azure Cosmos DB for PostgreSQL 且可能會擲回錯誤,即使連線正常運作也一樣。

下一步

了解如何使用 Azure Cosmos DB for PostgreSQL 建立即時儀表板