我有一张包含以下记录的表
ab
cd
start
ef
gh
stop
io
start
as
stop
kl
我只希望返回“开始”和“停止”行之间的记录。记录按时间戳顺序排列。在给出的示例中,结果将是 ef、gh 和 as。
非常感谢任何帮助。我一直在为此苦苦挣扎。
我有一张包含以下记录的表
ab
cd
start
ef
gh
stop
io
start
as
stop
kl
我只希望返回“开始”和“停止”行之间的记录。记录按时间戳顺序排列。在给出的示例中,结果将是 ef、gh 和 as。
非常感谢任何帮助。我一直在为此苦苦挣扎。
你可以使用scan
运算符。
例如:
let _start = "start";
let _stop = "stop";
datatable(dt:datetime, ab:string)
[
datetime(2021-01-01 10:00), 'cd',
datetime(2021-01-01 10:01), 'start',
datetime(2021-01-01 10:02), 'ef',
datetime(2021-01-01 10:03), 'gh',
datetime(2021-01-01 10:04), 'stop',
datetime(2021-01-01 10:05), 'io',
datetime(2021-01-01 10:06), 'start',
datetime(2021-01-01 10:07), 'as',
datetime(2021-01-01 10:08), 'stop',
datetime(2021-01-01 10:09), 'kl',
]
| order by dt asc
| scan with
(
step s1: ab == _start;
step s2: ab !in(_start, _stop);
step s3: ab == _stop;
)
| where ab !in(_start, _stop)
dt | 抗体 |
---|---|
2021-01-01 10:02:00.0000000 | 英夫 |
2021-01-01 10:03:00.0000000 | gh |
2021-01-01 10:07:00.0000000 | 作为 |
更新,根据您评论中的问题:
start
and stop
,只需删除最后一行 ( | where ab !in(_start, _stop)
)