在 Azure 数据资源管理器中使用 Kusto 查询中的先前值填充空字段

如何解决在 Azure 数据资源管理器中使用 Kusto 查询中的先前值填充空字段

背景

我们在 Azure 数据资源管理器中有一个具有以下格式的数据集。

sensorid 时间戳 价值
阀门 1 24-03-2021 123
阀门 1 23-03-2021 234
汽缸速度 23-03-2021 1.2
阀门状态 23-03-2021 打开
阀门状态 24-03-2021 关闭
汽缸速度 25-03-2021 2

不同的传感器有不同的报告间隔,有些每秒报告一次,有些每天报告几次。

通过使用此查询

datatable (sourcetimestamp: datetime,sensorid:string,value:dynamic)
    [datetime(2021-03-23),"valve1",123,datetime(2021-03-24),234,datetime(2021-03-23),"cylinderspeed",1.2,"valvestatus","open","closed",datetime(2021-03-25),2]
| summarize average=any(value) by bin(sourcetimestamp,1s),sensorid
| evaluate pivot(sensorid,any(average))

我可以生成这张表

时间戳 valve1 汽缸速度 阀门状态
23-03-2021 123 1,2 打开
24-03-2021 234 关闭
25-03-2021 2

问题

如何继续执行上述查询,以便使用该列中的先前值填充空单元格?

解决方法

您可以使用 series_fill 函数之一,例如 series_fill_forward。请注意,填充数组的最简单方法是使用 make-series 运算符

因为 timeseries 需要系列中的数值,所以我将 Valvestatus 的枚举转换为两倍。

datatable (sourcetimestamp: datetime,sensorid:string,value:dynamic)
[datetime(2021-03-23),"valve1",123,datetime(2021-03-24),234,datetime(2021-03-23),"valvestatus","open","closed","cylinderspeed",1.2,2]
| extend value = case(value=="open",double(1),value=="closed",double(0),value)
| make-series values = any(value) default=double(null) on sourcetimestamp from(datetime(2021-03-23 00:00:00.0000000)) to(datetime(2021-03-24 00:00:00.0000000)) step 1h by sensorid
| extend values = series_fill_forward(values)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?