如何在Power Query中获取数据——表格篇(4)

样例表格:


(一)根据值大小提取

1.     返回最小值的行

Table.Min(table as table, comparisonCriteria as anyoptional default as any) as any

第1参数是需要操作的表;第2参数是需要取值的字段名;第3参数是如果为空返回赋予的值;如果不为空则返回的是一个record格式,如果为空则返回赋予的值的格式。

例:

Table.Min(数据,"成绩")=[姓名="王五",成绩=80,学科="英语"]


Table.Min(数据,"姓名")=[姓名="张三",成绩=100,学科="数学"]

解释:排序大小是根据Unicode编码来确定的,张的Unicode为5f20,李的Unicode为674e,王的Unicode为738b,所以张最小,返回的就是姓名="张三"这条记录。


=Table.Min(Table.FromValue({}),"Value",{"空表"})={"空表"}

解释:空表代表没有记录的表,但是可以有标题字段名。Table.FromValue({})生成的就是一个标题字段为Value的空表;因为第2条件是必选的,所以至少要有一个字段名才能做匹配,因为Table.FromValue({})返回的是字段名为Value的空表,所以返回指定值。Table.FromRecords({}),Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一样的,生成的是不具备标题字段的空表。



Table.Min(数据,List.Last(Table.ColumnNames(数据)))= [姓名="张三",成绩=100,学科="数学"]

解释:返回最后一个字段标题的最小值的记录。Table.ColumnNames获取表的标题生成一个list,也就是{"姓名","成绩","学科"}的列表,我们又用List.Last去获取最后一项也就获得"学科"的字段名文本,最后通过学科进行比较,语的Unicode编码是8bed,数的Unicode编码是6570,英的编码是82f1,我们获取最小的值,也就是学科=数学这个的记录。


2.     返回最大值的行

Table.Max(table as table, comparisonCriteria as anyoptional default as any) as any

第1参数是需要操作的表;第2参数是需要取值的字段名;第3参数是如果为空返回赋予的值;如果不为空则返回的是一个record格式,如果为空则返回赋予的值的格式。

例:

Table.Max(数据,"成绩")=[姓名="张三",成绩=100,学科="数学"]


Table.Max(数据,"姓名")=[姓名="王五",成绩=80,学科="英语"]

解释:排序大小是根据Unicode编码来确定的,张的Unicode为5f20,李的Unicode为674e,王的Unicode为738b,所以王最大,返回的就是姓名="王五"这条记录。


Table.Max(Table.FromValue({}),"Value",{"空表"})={"空表"}

解释:空表代表没有记录的表,但是可以有标题字段名。Table.FromValue({})生成的就是一个标题字段为Value的空表;因为第2条件是必选的,所以至少要有一个字段名才能做匹配,因为Table.FromValue({})返回的是字段名为Value的空表,所以返回指定值。Table.FromRecords({}),Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一样的,生成的是不具备标题字段的空表。


Table.Max(数据,List.Last(Table.ColumnNames(数据)))= [姓名="张三",成绩=100,学科="数学"]

解释:返回最后一个字段标题的最小值的记录。Table.ColumnNames获取表的标题生成一个list,也就是{"姓名","成绩","学科"}的列表,我们又用List.Last去获取最后一项也就获得"学科"的字段名文本,最后通过学科进行比较,语的Unicode编码是8bed,数的Unicode编码是6570,英的编码是82f1,我们获取最小的值,也就是学科=数学这个的记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容