如下图所示。如何将左侧的时间按连续与非连续进行分组。M怎么写,思路是怎么样的。各位大佬不吝赐教。
文件已上传到网盘
链接:https://pan.baidu.com/s/1KzlFZKM2ZL_NHMPR5Gncqg
提取码:4l5y
Excel和PowerBI聚焦:小必
如下图所示。如何将左侧的时间按连续与非连续进行分组。M怎么写,思路是怎么样的。各位大佬不吝赐教。
文件已上传到网盘
链接:https://pan.baidu.com/s/1KzlFZKM2ZL_NHMPR5Gncqg
提取码:4l5y
Excel和PowerBI聚焦:小必
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
类型 = Table.TransformColumnTypes(源,{"停机日期", type date}),
分组 = Table.Group(类型,
{"车队","自编号"},
{
"m",
each
Table.Group(
Table.SelectColumns(
[
a=Table.AddIndexColumn(_,"index",0,1),
b=Table.AddColumn(a,"n",each _[停机日期]-#duration(_[index],0,0,0))
]
[b],
{"停机日期","n"}),
"n",
{
"s",
(x)=>
[
开始停机时间=List.Min(x[停机日期]),
结束停机时间=List.Max(x[停机日期])
]
}
)
[s]
}
),
展开list = Table.ExpandListColumn(分组, "m"),
展开Record = Table.ExpandRecordColumn(展开list, "m", {"开始停机时间", "结束停机时间"})
in
展开Record
自己卡在那个索引那里了,感谢1楼的点拨,这个点子实在不错~
Table.ExpandTableColumn(Table.Group(源,{"车队","自编号"},{"a",each Table.Group(_,"停机日期",{"结束停机日期",each List.Last([停机日期])},0,(x,y)=>Number.From(x-#duration(List.PositionOf([停机日期],x),0,0,0)<>y-#duration(List.PositionOf([停机日期],y),0,0,0)))}),"a",{"停机日期","结束停机日期"},{"开始停机日期","结束停机日期"})
改成record应该也行,有空试试:
改成Record: