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

2020-03-23 16:39:07 浏览数 (1)

样例表格:

(一)根据值大小提取

1. 返回最小值的行

Table.Min(table as table, comparisonCriteria as any, optional 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 any, optional 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,我们获取最小的值,也就是学科=数学这个的记录。

0 人点赞