Table.Sort()可以抽象地概括为function(table as table, comparisonCriteria as any) as table,大概的意思为该函数的第一个参数为需要进行以行为单位进行排序的表格,第二个参数对数据的类型没有限制,可以为"排序所依据的字段名称",也可以为{"排序所依据的字段名称", Order.Ascending(Order.Descending)},甚至可以是自变量为第一个参数按行分解得到的记录的函数。
如上图所示,表格(DB)记录了10个人的身高与体重信息(数字都是随机的),现在需要为表格以体重为依据进行降序排序。代码如下:
let Source = Table.Sort( DB, { "Weight", Order.Descending } ) in Source
如果需要按照BMI指数的大小(体重/身高的平方)进行升序排序,则需要如下代码(为验证排序的正确性在排序后添加了计算BMI指数的计算列):
let Source= Table.Sort( DB, { each Value.Divide( [Weight], Number.Power( [Height], 2 ) ), Order.Ascending } ), AddCol= Table.AddColumn( Source, "BMI", each Value.Divide( [Weight], Number.Power( [Height], 2 ) ), type number ) in AddCol
从上图的BMI计算列的结果来看,排序的结果是正确。在Source步骤中each依次传入DB按行分解的记录,然后[Weight]和[Height]分别取出这些记录中Weight字段和Height字段对应的值,最后Table.Sort()以这些值代入BMI指数公式的结果为依据进行升序排序。
可不可以开一个专栏讲讲值函数?