Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure流分析查询_Azure_Azure Stream Analytics - Fatal编程技术网

Azure流分析查询

Azure流分析查询,azure,azure-stream-analytics,Azure,Azure Stream Analytics,我想每分钟将以下带有流分析的json字符串写入SQL数据库 { "time": "2018-06-05T11:00:00Z", "deviceId": 10, "val": [ 200, 250, 300, 201, 501, 250, 890 ] } 数据库有“时间”、“设备ID”列,7列为值 我的问题是: WITH seperate AS( SELECT EventEnqueuedUtcTime AS Time, deviceId, AVG(GetArr

我想每分钟将以下带有流分析的json字符串写入SQL数据库

{
  "time": "2018-06-05T11:00:00Z",
  "deviceId": 10,
  "val": [ 200, 250, 300, 201, 501, 250, 890 ]
}
数据库有“时间”、“设备ID”列,7列为值

我的问题是:

WITH seperate AS(
SELECT
    EventEnqueuedUtcTime AS Time,
    deviceId,
    AVG(GetArrayElement(val, 0)) AS '0',
    AVG(GetArrayElement(val, 1)) AS '1'
FROM
    Input
GROUP BY 
    EventEnqueuedUtcTime,
    deviceId,
    TumblingWindow(minute, 1)
)
SELECT * INTO Output1 FROM seperate WHERE deviceId = 1
SELECT * INTO Output2 FROM seperate WHERE deviceId = 2
SELECT * INTO Output3 FROM seperate WHERE deviceId = 3
SELECT * INTO Output4 FROM seperate WHERE deviceId = 4
SELECT * INTO Output5 FROM seperate WHERE deviceId = 5
在这里,我遇到了一个问题,即用所有值(每10瑞典克朗6个值)每分钟更新一次数据库 我要每分钟一行

第二件事是有另一种方法将数组值(不使用write AVG(GetArrayElement(val,0))写入为“0”, 平均值(GetArrayElement(val,1))为“1”,
..

GetArrayElement
是您的朋友。请参阅

您指出数据每10秒来自物联网中心,存储的数据应为“原始”数据。但您也希望数据每分钟写入数据库。然后您必须聚合数据或直接存储在数据库中

您不能使用Azure Stream Analytics缓冲传入数据,然后每分钟向数据库写入6条记录

您可以每分钟应用一次,但随后将在窗口期间聚合数据。例如, 您可以每分钟存储阵列的平均值

如果需要原始值,则无法应用窗口,并且必须在数据进入时将其写入数据库(每10秒一次)

windows查询可能类似于

SELECT
    deviceId,
    AVG(GetArrayElement(val, 0)) AS AvgFirstElement,
    AVG(GetArrayElement(val, 1)) AS AvgSecondElement
    … and so on
INTO
    Output
FROM
    IotHub
GROUP BY 
    deviceId, 
    TumblingWindow(minute, 1)

谢谢,通过这个查询,我可以成为第一个元素,但我希望每分钟都有所有元素。你当然可以添加更多。你希望它们在sql中的一行不是吗?@MarkusWimmer你希望查询每分钟发送一次吗?所以我可以假设输入流在一分钟内发送更多事件?你想对数据做什么,求和?Also、 当每分钟有一个以上的事件进入,但您希望每分钟写入数据时,在查询中包含
时间
有什么意义?@MarkusWimmer您希望每设备ID每分钟写入一次数据吗?是的,它是一行,每10秒来自物联网中心的事件,数据应该是“原始”数据数据。每个设备都有一个数据库,或者为什么要使用多个输出?根据我的回答,如果不写出所有GetArrayElement语句,就没有办法做你想做的事情。如果你想将它们放在一个数据库行中,就没有办法了。我有一个数据库,但每个设备都有一个单独的表。好的,然后我用GetArrayElement来做。)你能告诉我每分钟6个数值吗?我想要一个
SELECT
    deviceId,
    AVG(GetArrayElement(val, 0)) AS AvgFirstElement,
    AVG(GetArrayElement(val, 1)) AS AvgSecondElement
    … and so on
INTO
    Output
FROM
    IotHub
GROUP BY 
    deviceId, 
    TumblingWindow(minute, 1)