抱歉这么晚才回复。不知道这是否仍然相关。
这是一个示例,其中索引用于为传感器读数的每个连续块分配递增的索引号。可以通过在您希望描述的任何时期对该指数进行不同的计数来获得读数计数。
在这里,我模拟了每 3 秒读取数十万个读数,传感器“开启”5 个读数,“关闭”5 个读数。
请注意,细化数字和汇总数字之间存在一些滑动,这是跨越多个周期中断的周期的结果。
这是我供您参考的 M Query。希望对你有帮助。
let
Source = Excel.Workbook(File.Contents("C:\Users\*****\Desktop\Book2.xlsx"), null, true),
Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Table1_Table,{{"Date", type date}, {"Time", type time}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Date", Order.Ascending},{"Time", Order.Ascending}}),
#"ShiftList" = {""} & List.RemoveLastN(Table.Column(#"Sorted Rows","Sensor Reading"),1),
#"ColumnsAndShift" = Table.ToColumns(#"Sorted Rows") & {ShiftList},
#"ResultSet" = Table.FromColumns(#"ColumnsAndShift", Table.ColumnNames(#"Sorted Rows") & {"Previous Reading"}),
#"Filtered Rows" = Table.SelectRows(ResultSet, each ([Previous Reading] = "")),
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [Sensor Reading] <> ""),
#"Added Index" = Table.AddIndexColumn(#"Filtered Rows1", "Index", 1, 1),
#"Merged Queries" = Table.NestedJoin(#"ResultSet",{"Date", "Time"},#"Added Index",{"Date", "Time"},"Added Index",JoinKind.LeftOuter),
#"Expanded Added Index" = Table.ExpandTableColumn(#"Merged Queries", "Added Index", {"Index"}, {"Added Index.Index"}),
#"Sorted Rows1" = Table.Sort(#"Expanded Added Index",{{"Date", Order.Ascending}, {"Time", Order.Ascending}}),
#"Filled Down" = Table.FillDown(#"Sorted Rows1",{"Added Index.Index"}),
#"Added Conditional Column" = Table.AddColumn(#"Filled Down", "Cycle Index", each if [Sensor Reading] <> "" then [Added Index.Index] else ""),
#"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"Previous Reading", "Added Index.Index"})
in
#"Removed Columns"