因此,此示例适用于任何交互式仪表板,如Kibana或PowerBI。
假设我的车队中有一辆556辆车。在08:41:50,所述车辆发出警报(发动机过热)
2021-04-21T08:41:50 Priority 2 alarm - Vehicle 556 - Engine overheating
然后,我希望能够单击此警报,并获得一个仪表板,它将显示事件发生时车辆的已知状态。例如,车辆速度、加速百分比、制动百分比和来自其他数据源的偏离路线数据,如天气信息、驾驶员等。
因此,从仪表板上,我预计会根据以下日志看到以下内容:
Vehicle: 556
Datetime: 2021-04-21 08:41:50
Speed: 42mph
Accelaration: 70%
Braking: 65%
Weather: Sunny, 80 deg
Other alarms: Engine fan stalled2021-04-21T06:35:50 info - Weather - Sunny 75 deg
2021-04-21T07:35:50 info - Weather - Sunny 78 deg
2021-04-21T08:34:23 Priority 1 alarm - Vehicle 556 - Engine fan stalled
2021-04-21T08:35:50 info - Weather - Sunny 80 deg
2021-04-21T08:41:38 info - Vehicle 556 - Acceleration: 100%
2021-04-21T08:41:38 info - Vehicle 556 - Braking: 40%
2021-04-21T08:41:38 info - Vehicle 556 - Speed 24 mph
2021-04-21T08:41:42 info - Vehicle 556 - Acceleration: 97%
2021-04-21T08:41:42 info - Vehicle 556 - Braking: 50%
2021-04-21T08:41:42 info - Vehicle 556 - Speed 38 mph
2021-04-21T08:41:45 info - Vehicle 556 - Acceleration: 70%
2021-04-21T08:41:45 info - Vehicle 556 - Braking: 65%
2021-04-21T08:41:45 info - Vehicle 556 - Speed 42 mph
2021-04-21T08:41:50 Priority 2 alarm - Vehicle 556 - Engine overheating对于“奖励积分”,能够点击最后一次已知的速度,并查看显示最后10个关于车辆速度的日志也很好。
但这是在任何数据库中,还是在powerbi或elasticsearch/kibana中,或者这需要自定义创建的应用程序仪表板。或者仅仅是因为我不知道正确的搜索词
发布于 2021-04-26 19:51:36
对于Power BI,有一个有用的函数LASTNONBLANKVALUE可以处理这个问题。最好的文档来源(DAX指南)如下所示,它包括产品文档和一个实时沙坑:
https://dax.guide/lastnonblankvalue/
对于您的场景,我设想将时间戳用于第一个参数(ColumnName),然后将日志文本的第三段(例如,具有类似"Speed 42 mph“的值的派生列)用于第二个参数。
我将构建一组DAX列来准备数据,使用CALCULATE来限制所考虑的行集。DAX度量可能更灵活和动态,但开发起来要抽象得多,如果它们太复杂,查询性能可能会受到影响。
下面是获取每个非info日志行的Last Speed的示例。我假设进行一些数据转换,以获得Vehicle等的helper列。
Last Speed =
VAR v_Timestamp_Max = LogTable[Timestamp]
VAR v_Vehicle = LogTable[Vehicle]
RETURN
IF ( LogTable[Level] <> "info" ,
CALCULATE (
LASTNONBLANKVALUE ( LogTable[Timestamp], MAX ( LogTable[Value] ) ),
ALL ( LogTable ),
LogTable[Timestamp] < v_Timestamp_Max,
LogTable[Vehicle] = v_Vehicle,
LogTable[Value Type] = "Speed"
)
) https://stackoverflow.com/questions/67219904
复制相似问题