Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 stream analytics-您可以查询最新的非空值吗?_Azure_Powerbi_Powerbi Desktop_Azure Stream Analytics - Fatal编程技术网

Azure stream analytics-您可以查询最新的非空值吗?

Azure stream analytics-您可以查询最新的非空值吗?,azure,powerbi,powerbi-desktop,azure-stream-analytics,Azure,Powerbi,Powerbi Desktop,Azure Stream Analytics,我有一份Azure stream analytics工作,其中包含来自物联网中心的输入数据,我正在将这些数据发送给Power BI。使用pub/sub更新数据,因此每个消息只更新一个值。因此,我的输入数据如下所示(MessageID 5是最新的消息): 消息ID 转速 温度 压力 5. 800 无效的 无效的 4. 无效的 50 无效的 3. 无效的 无效的 4. 2. 无效的 23 无效的 1. 900 无效的 无效的 在这种情况下,可以使用Coalesce。它按顺序计算参数,并返回最初不计算

我有一份Azure stream analytics工作,其中包含来自物联网中心的输入数据,我正在将这些数据发送给Power BI。使用pub/sub更新数据,因此每个消息只更新一个值。因此,我的输入数据如下所示(MessageID 5是最新的消息):

消息ID 转速 温度 压力 5. 800 无效的 无效的 4. 无效的 50 无效的 3. 无效的 无效的 4. 2. 无效的 23 无效的 1. 900 无效的 无效的
在这种情况下,可以使用Coalesce。它按顺序计算参数,并返回最初不计算为NULL的第一个表达式的值

请参阅下面的链接-


ASA的好处之一是,您可以在以下位置对事件进行分组:

这里,如果我理解正确,当你们一次看一个事件时,你们只得到一个数据点。解决此问题的方法是查看时间窗口,并将所有数据点投影到单个输出事件中

假设您每10秒应收到一个数据点。然后,您可以编写一个查询,该查询将按该时间窗口上的所有事件进行分组,并输出一个包含所有4个事件的结果:


WITH dataPrep AS (
SELECT
    CAST(GetMetadataPropertyValue(IoTHub, 'IoTHub.EnqueuedTime') AS datetime) AS eventDateTime,
    GetMetadataPropertyValue(IoTHub, 'IoTHub.ConnectionDeviceId')  AS DeviceId,
    *
FROM IoTHub
)

SELECT 
    System.Timestamp() AS DateTime,
    DeviceId,
    LAST(RPM) OVER (PARTITION BY DeviceId LIMIT DURATION(second, 20) WHEN RPM IS NOT NULL),
    LAST(FuelRate) OVER (PARTITION BY DeviceId LIMIT DURATION(second, 20) WHEN FuelRate IS NOT NULL),
    LAST(DischargePressure) OVER (PARTITION BY DeviceId LIMIT DURATION(second, 20) WHEN DischargePressureIS NOT NULL),  
    LAST(SystemPressure) OVER (PARTITION BY DeviceId LIMIT DURATION(second, 20) WHEN SystemPressure IS NOT NULL)   

INTO
    powerbioutput
FROM
    dataPrep TIMESTAMP BY eventDateTime
GROUP BY
    DeviceId,
    TumblingWindow(second,10)
WHERE
    DeviceId = 'rpi1'
在这里,我使用的语法可能看起来有点复杂,但它很简单。因为它需要分区,所以我必须将其显式化,这是一个很好的实践,不管怎样,如果您将来想要扩展的话

根据您的要求,您可以使用MAX、MIN或AVG来简化此过程


您可以查看。

流分析的一些功能可以帮助您解决这一需求,主要围绕时间管理。您当前是否在查询中使用时间窗口?您能否确定一个时间窗口,在该时间窗口内,3个传感器都以可靠的方式获取值?此外,您是否仅从单个物联网集线器读取数据,有效负载会发生变化,并且可以忽略传感器。或者您正在加入查询的多个物联网中心流?@FlorianEiden请参阅下面链接的相关帖子,了解我正在使用的查询。我总共有三台设备向单个物联网中心发送消息。每个设备将数据输出到单独的功率Bi表。我不确定您在查询中所说的时间窗口是什么意思,但我希望这能回答您的问题。请让我知道,如果有任何进一步的信息,我可以提供,以帮助您更好地了解这个问题。嗨,Neeraj,如果所有值都出现在单个事件或事件窗口中,这将起作用。我猜每个事件只有1个数据点,而不是全部3个。