DAX:使用LATEST条目创建表

时间:2016-10-01 10:18:58

标签: iot powerbi dax azure-table-storage temperature

我家里有很多传感器,我想用PowerBI显示不同房间的温度图表,并测量当前/最近的值。

我在dax中写这篇文章最难:

数据来自名为" DeviceReadings"的Azure表的PowerBI。在表格上:

  • 位置(文字,分区键)
  • RowKey(基于存储,未使用的日期的数值)
  • 日期(DateTime,TimeStamp)
  • 温度(十进制)
  • 湿度(十进制)

我想要的是:(PSEUDOCODE)

Select Location, Last(Date), Temperature, Humidity FROM DeviceReadings 
GROUP BY Location

预期/通缉的结果是:

"Mediaroom", "01.10.2017 09:00", 26, 17
"Office", "01.10.2017 09:03", 28, 23
"Livingroom", "01.10.2017 09:13", 22, 32

显然,我试图根据这些读数创建一个计算的DAX表。我们的想法是创建一个计算表格,该表格始终包含最新的温度/湿度,以便我可以用标准样式的视觉效果显示这些值。

我一直在尝试设置table = SUMMARIZECOLUMNS ,按位置分组,然后添加命名列" LastSampled" as" MAX(DeviceReadings [Date])然后" Temperature&#34 ;; LASTNONBLANK(DeviceReadings [Temperature]; DeviceReadings [Temperature]); 但是那样做没有得到连接的温度读数,而是其他东西。

理想情况下,我想按位置分组,然后按最大日期pr位置分组,然后显示原始温度+湿度值

我只想要一个"最近的温度读数"按我的PowerBI仪表板上显示的位置。 (我使用PowerBI桌面编写所有查询并生成报告,尚未上传到PowerBI门户网站)

我的DAX技能相当低,所以在编写计算查询时我需要帮助。

1 个答案:

答案 0 :(得分:1)

尝试使用此表达式:

Table = SELECTCOLUMNS (
    FILTER (
        CROSSJOIN (
            SELECTCOLUMNS (
                GROUPBY (
                    DeviceReadings,
                    DeviceReadings[Location],
                    "LASTDATE", MAXX ( CURRENTGROUP (), DeviceReadings[Date] )
                ),
                "Location", DeviceReadings[Location],
                "Date", [LASTDATE]
            ),
            SELECTCOLUMNS (
                DeviceReadings,
                "DateJoin", DeviceReadings[Date],
                "LocationJoin", DeviceReadings[Location],
                "Humidity", DeviceReadings[Humidity],
                "Temperature", DeviceReadings[Temperature]
            )
        ),
        [Date] = [DateJoin]
            && [Location] = [LocationJoin]
    ),
    "Location", [Location],
    "LastDate", [Date],
    "Temperature", [Temperature],
    "Humidity", [Humidity]
)

我很确定有一种更简单的方法来实现你的目标,但我现在无法理解。

如果有帮助,请告诉我。

相关问题