簡體   English   中英

Azure Stream 具有多個輸入的分析查詢

[英]Azure Stream Analytics query with multiple inputs

問題

我有一個 Azure IoT-Hub 向 Azure Stream 分析作業發送消息。

每條消息都包含一個“NodeName”。 我有一個表“plcnext_nodes”,每個節點都有一個唯一的“NodeId”及其對應的“NodeName”。

如何使用“plcnext_nodes”表中的輸入和 IoT-Hub 消息來使用“NodeId”將事件數據存儲在另一個 SQL 表中?

我想使用“NodeId”而不是“NodeName”,因為某些名稱可能會變得很長,並且在每條消息中一遍又一遍地保存它們會浪費存儲空間。


所需的解決方案

我想解析來自 IoT 中心的以下消息

{
    "NodeName": "ns=5;s=Arp.Plc.Eclr/DI2",
    "NodeDataType": "Boolean",
    "EventValue": 0,
    "EventMeasuredUtcTime": "2019-11-11T12:15:22.4830000Z",
    "EventProcessedUtcTime": "2019-11-11T12:41:57.1706596Z",
    "EventEnqueuedUtcTime": "2019-11-11T12:15:32.1260000Z",
    "IoTHub": {
        ...
    }
}

將“NodeName”與plcnext_nodes表中的那些進行比較以獲得適當的“NodeId”:

NodeId  NodeName                 NodeDataType
---------------------------------------------
1       ns=5;s=Arp.Plc.Eclr/DI1  Boolean
2       ns=5;s=Arp.Plc.Eclr/DI2  Boolean
...

要獲取以下 output 並插入到plcnext_events表中:

NodeId  EventValue  EventMeasured
-----------------------------------------------
1       0           2019-11-11 12:15:22.4830000

詢問

我在 Azure Stream Analytics 上嘗試了以下查詢:

SELECT
    NodeId,
    EventValue,
    EventMeasuredUtcTime,
    EventEnqueuedUtcTime,
    EventProcessedUtcTime
INTO
    [plcnext_events]
FROM
    [plcnext_nodes],
    [iot_hub]
WHERE
    [iot_hub].NodeName = [plcnext-nodes].NodeName

但是 FROM 不支持 JOIN 並且我無法使用 JOIN 子句,因為它有 DATEDIFF 限制(plcnext_nodes 表沒有時間戳)

有沒有辦法做到這一點?

您可以使用 Stream Analytics 中的參考數據聯接來聯接表。

在 Stream Analytics 中使用參考數據進行查找

參考數據(也稱為查找表)是一個有限數據集,即 static 或性質緩慢變化的數據集,用於執行查找或擴充數據流。

在您的情況下,go 在 Stream 分析作業的輸入部分下,並添加參考輸入。 您可以將 select Blob StorageSQL 數據庫作為您的源。 添加參考輸入

然后,您可以定義您的 SQL 查詢以返回您需要的參考數據。 對於您的情況,您的參考數據查詢將如下所示:

SELECT NodeId, NodeName, NodeDataType
FROM dbo.plcnext-nodes

在 SA 中定義參考數據聯接后,go 到 Stream Analytics 中的查詢部分並更新您的查詢。 對於您的場景,您的查詢將如下所示(使用 JOIN):

SELECT
   pn.NodeId,
   hub.EventValue,
   hub.EventMeasuredUtcTime,
   hub.EventEnqueuedUtcTime,
   hub.EventProcessedUtcTime
   INTO [plcnext_events]
FROM [iot_hub] hub
JOIN [plcnext-nodes] pn ON pn.NodeName = hub.NodeName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM