原文地址:Power BI之power query多条件排序
博主首页:莫里_Katie
三种排序要求:
①按照销售额,员工销售额排序;——优先级:销售额
②根据销售额,员工在部门中的排序;——优先级:部门、销售额
③根据销售额,员工在部门、级别中的排序;——优先级:部门、级别、销售额
实际操作:
①销售额排序
先对销售额降序排列—添加索引。
= Table.Sort(删除的列,{{"销售额", Order.Descending}})
= Table.AddIndexColumn(排序的行, "销售额排名", 1, 1, Int64.Type)
②部门-销售额排序:
分组降序排:选中部门,对所有行分组,同时按照销售额降序排。
= Table.Group(已添加索引, {"部门"}, {{"组合", each Table.Sort(_,{{"销售额", Order.Descending}}), type table [员工=nullable text, 部门=nullable text, 级别=nullable text, 销售额=nullable number, 销售额排名=number]}})
添加自定义列-部门销售额排名,并添加索引。
= Table.AddColumn(分组的行, "部门销售额排名", each Table.AddIndexColumn([组合], "部门销售额排名", 1, 1))
删除其他列,只保留“部门销售额排名”,展开表
= Table.SelectColumns(已添加自定义,{"部门销售额排名"})
= Table.ExpandTableColumn(删除的其他列, "部门销售额排名", {"员工", "部门", "级别", "销售额", "销售额排名", "部门销售额排名"}, {"员工", "部门", "级别", "销售额", "销售额排名", "部门销售额排名"})
展开后如下图:
③部门-级别-销售额排序:
同上面的操作,分组是对部门、级别组合
分组降序排:选中部门,级别,对所有行分组,同时按照销售额降序排。
= Table.Group(#"展开的“部门销售额排名”", {"部门", "级别"}, {{"组合", each _, type table [员工=text, 部门=text, 级别=text, 销售额=number, 销售额排名=number, 部门销售额排名=number]}})
添加自定义列-部门级别销售额排名,并添加索引。
= Table.AddColumn(分组的行1, "部门级别销售额排名", each Table.AddIndexColumn([组合], "部门级别销售额排名", 1, 1))
删除其他列,只保留“部门销售额排名”,展开表
= Table.SelectColumns(已添加自定义1,{"部门级别销售额排名"})
= Table.ExpandTableColumn(删除的其他列1, "部门级别销售额排名", {"员工", "部门", "级别", "销售额", "销售额排名", "部门销售额排名", "部门级别销售额排名"}, {"员工", "部门", "级别", "销售额", "销售额排名", "部门销售额排名", "部门级别销售额排名"})
加载到表格中,最终的排名如下:
总结:
当数据量很大时,该排序方式可以快速生成。如果直接在表中输入公式排序,数据量大时,表格会很卡。