azure-data-explorer - 在 Azure 数据资源管理器中使用 Kusto 查询中的先前值填充空字段
问题描述
背景
我们在 Azure 数据资源管理器中有一个具有以下格式的数据集。
感应器 | 时间戳 | 价值 |
---|---|---|
阀门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), "valve1", 234,
datetime(2021-03-23), "cylinderspeed", 1.2,
datetime(2021-03-23), "valvestatus", "open",
datetime(2021-03-24), "valvestatus", "closed",
datetime(2021-03-25), "cylinderspeed", 2]
| summarize average=any(value) by bin(sourcetimestamp, 1s), sensorid
| evaluate pivot(sensorid, any(average))
我可以生成这张表
时间戳 | 阀门1 | 气缸速度 | 阀门状态 |
---|---|---|---|
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), "valve1", 234,
datetime(2021-03-23), "valvestatus", "open",
datetime(2021-03-24), "valvestatus", "closed",
datetime(2021-03-23), "cylinderspeed", 1.2,
datetime(2021-03-24), "cylinderspeed", 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)
推荐阅读
- arcgis - 将 json 数据 arcgis 桌面转换为 javascript api FeatureLayer 和图形
- javascript - 量角器:chromeDriver 78 版抛出错误,它只支持 chrome 79 版
- swift - 如何在 Swift 中使用选择器视图值?
- sql-server - % 在 MS SQL Server 中是什么意思
- crash - 尝试打开现有应用程序时 Xcode 10 和 Xcode 11 不断崩溃
- c# - 在 C# 中,如何根据某些条件将导出的 Excel 文件的背景颜色单元格设置为特定颜色?
- c# - Unity ARCore 无法提取 IL2CPP 所需的资源
- java - Lucene 从索引中的文档更新字段,没有松散的信息
- python - 发送 HTTP 请求 python
- mysql - 根据另一列值选择MIN、MAX对应列