Azure 流分析 - 可以查询最近的非空值吗?

标签 azure powerbi powerbi-desktop azure-stream-analytics

我有一个 Azure 流分析作业,其中包含来自 IoT 中心的输入数据,并且我正在将此数据发送到 Power BI。数据使用发布/订阅进行更新,因此每条消息仅更新一个值。因此,我的输入数据看起来像这样(MessageID 5 是最新消息):

<表类=“s-表”> <标题> 消息ID 每分钟转数 温度 压力 <正文> 5 800 空 空 4 空 50 空 3 空 空 4 2 空 23 空 1 900 空 空

我想在 Power bi 仪表板和实时固定到仪表板的报告上显示最新的非空值。在此示例中,我希望卡片或仪表显示每个变量的最新非空值,因此

RPM = 800,
Temperature = 50, and
Pressure = 4.

默认情况下,Power BI 仪表板会读取最新值,因此如果该值不是刚刚更新(并且在表中为 null),仪表板会显示 (Blank)。作为值。

是否可以从我的 Azure 流分析作业写入 SQL 查询来获取每个变量的最新非空值?或者其他一些解决方法?

谢谢

最佳答案

ASA 的好处之一是您可以将事件分组到 time window :

Illustration of a tumbling window

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

假设您应该每 10 秒收到 1 个数据点。然后,您可以编写一个查询,该查询将按该时间窗口上的所有事件进行分组,并输出包含所有 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'

这里我用了LAST ,语法可能看起来有点复杂,但很简单。由于它需要 PARTITION BY,所以我必须将其明确化,如果您想在将来进行扩展,这无论如何都是一个很好的做法。

您可以根据您的要求使用 MAX、MIN 或 AVG 来简化操作。

你可以看看here for other ASA query patterns .

关于Azure 流分析 - 可以查询最近的非空值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67728921/

相关文章:

powerbi - 如何处理 CSV 数据源中标题名称发生变化的情况?

powerbi - 有没有办法在 M (Power BI) 中的文本字符串中添加换行符?

Azure函数发布- "Timed out waiting for SCM to update the Environment Settings"

Azure 云服务扩展支持使用 New-AzCloudService powershell 进行部署。设置可交换云服务

azure - 将 Azure 虚拟机上的 ASP 连接到 Azure Db

graph - 折线图上的线是否可以使用链接到 x 轴上显示的 x 值的输入?

excel - 删除重复项但有异常

azure - 如何查询 cosmos db 中的某些文档、更改其属性并将其保存回来

deployment - 以编程方式将 Power BI 报表部署到 Power BI 报表服务器并更改连接字符串

powerbi - Power BI 中的 Post 方法