从ASA到Power BI Map的实时位置数据

时间:2018-01-19 15:54:58

标签: powerbi azure-stream-analytics

我有一个ASA输出,它将某些设备设备的GPS坐标发送到Power BI Live数据流。

从ASA到Power BI的数据看起来像这样:

Device    Lat        Lon        Time
1         1,12345    2,34567    19-1-2018 11:48:00
2         1,34567    2,66666    19-1-2018 11:49:01
1         1,67890    2,55555    19-1-2018 11:49:13
2         1,33333    2,33333    19-1-2018 11:50:23
2         1,23222    2,44444    19-1-2018 11:50:54

我想在地图上显示设备的最新位置。 我可以使用一个度量来显示特定设备的最新Lat和Lon,如下所示:

GpsLonLast = CALCULATE(MAX('PowerBI'[lon]);FILTER('PowerBi';PowerBI[time]=[LastTime]))

其中LastTime是接收设备发送消息的最新时间的度量。

这可以在表格中显示,但是我无法将这些度量映射到Power BI中的地图控件,它不支持度量或聚合。

如果我在地图控件上使用普通的Lat / Lon和Device字段作为位置和名称,我将获得设备所在的所有位置。但那不是我想要的,我只想要设备的最后位置。

请注意,我使用Azure Stream Analytics将实时数据发送到Power BI,在Power BI中,这是作为推送数据集接收的,因此我无法在Power BI中使用自定义建模。

4 个答案:

答案 0 :(得分:1)

我建议创建一个计算表,该表只包含每个设备的最后位置,并使用该表作为地图的数据集。

这可以为您提供所需的表格:

= ADDCOLUMNS(SUMMARIZECOLUMNS(PowerBI[Device], "LastTime", MAX(PowerBI[Time])),
             "Lat", CALCULATE(MAX(PowerBI[Lat]),
                        FILTER(PowerBI, PowerBI[Time] = [LastTime])),
             "Lon", CALCULATE(MAX(PowerBI[Lon]),
                        FILTER(PowerBI, PowerBI[Time] = [LastTime])))

现在,每次实时数据更新时,此计算表格也应更新,并为您提供最新的GPS坐标,以便在地图上显示。

答案 1 :(得分:1)

我不认为你想做什么。

但是,您可以将Power BI API直接用于推送数据集而不是Azure Stream Analytics,并将自己的GPS坐标发布到API。
您可以事先清除表格,这样您最终只会得到最新的值。遗憾的是,您无法删除或更新单行,因此您每次都必须发布完整的表格。这有点麻烦,但它确实有效。如果地图上有一些项目,删除表格中的所有行并再次添加它们的性能影响不是很大的问题。
我们在某些项目中使用这种技术,它的工作速度非常快。我们每隔几分钟才更新一次GPS坐标,并且仅在更改时发布到API。

您可以使用https://github.com/Microsoft/PowerBI-CSharp C#API库来简化向API的发布。

答案 2 :(得分:0)

我会首先计算一个"帮助"用于测试最新的每设备时间的列,例如

Latest Time per Device =
IF (
    [Time]
        = CALCULATE (
            MAX ( 'PowerBI'[Time] ),
            FILTER ( 'PowerBI', 'PowerBI'[Device] = EARLIER ( [Device] ) )
        ),
    "Is Latest Time per Device",
    "Other"
)

然后我会将该列用作过滤器,例如添加到可视级别过滤器,然后选择"每个设备的最新时间"条目。然后,您可以在过滤后的视觉效果中使用Lat和Lon列。

答案 3 :(得分:0)

这可能不是您正在寻找的答案,但我建议您解决几个问题:

  • 使用按日期排序的前N个过滤器(您可以使用其中一个实时数据集)。您的地图只会显示最后一个点或短路径。
  • 修改RoutMap自定义视觉效果以仅绘制最后一个值。我认为如果你有代码:) https://github.com/weiweicui/PowerBI-Routemap
  • 应该很容易