如何在Power Query中提取数据——列表篇(1)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Power Query中提取数据——列表篇(1)相关的知识,希望对你有一定的参考价值。

参考技术A 表名为列表,第一步骤名称为源

(一)从头开始提取

1.    获取列表第一个

List.First (list as  list ,  optional defaultValue as  any )as  any

返回列表的第1个值,参数2代表如果列表为空,可以指定返回一个值。

例:

List.First(1..10)=1

List.First(,"a")="a"

List.First(源[数字])=1

List.First(列表[数字])=1

2.    获取列表前N个

List.FirstN (list as  list , countOrCoundition as  any ) as  any

获取列表的前N个数据,第2参数可以为数字也可以为条件。如果为指定条件,则提取的数据为直到不满足条件前的数据。

例:

List.FirstN(1..10, 2)=1,2

List.FirstN(源[数字], each _<4)=1,2,3

解释: 源[数字] 这个是在原查询中引用列表的格式。此外涉及到列表,所以在进行操作比较的时候需要用到each,_代表的是列表中的每一个值,所以用列表中从头开始的每一个值去和<4进行比较,直到不满足并返回匹配条件的几个值。

List.FirstN(列表[数字], each _=2)=

解释: 列表[数字] 这个是在其他查询中引用列表的格式。因为数字是从1开始,1<>2,获取的是第一个不满足条件之前的数据,第一个就不满足,所以结果为空列表

(二)从尾开始提取

1.    获取列表最后一个

List.Last (list as  list ,  optional defaultValue as  any ) as  any

返回列表的最后1个值,参数2代表如果列表为空,可以指定返回一个值。

List.Last(1..10)=10

List.Last(,"a")="a"

List.Last(源[数字])=10

List.Last(列表[数字])=10

 

2.    获取列表最后N个

List.LastN (list as  list , countOrCoundition as  any ) as  any

获取列表的最后N个数据,第2参数可以为数字也可以为条件。如果为指定条件,则提取的数据为直到不满足条件后的数据。

例:

List.LastN(1..10, 2)=9,10

List.LastN(源[数字], each _>7)=8,9,10

解释: 源[数字] 这个是在其他查询中引用列表的格式。此外涉及到列表,所以在进行操作比较的时候需要用到each,_代表的是列表中的每一个值,所以用列表中末尾开始的每一个值去和>7进行比较,直到不满足并返回匹配条件的值。

List.LastN(列表[数字], each _=9)=

解释: 列表[数字] 这个是在其他查询中引用列表的格式。因为末尾数字是从10开始,不满足条件,获取的是第一个不满足条件之前的数据,第一个就不满足,所以结果为空列表。

(三)根据值提取

1.    获取列表中最大的数据

List.Max (list as  list ,  optional default as  any , optional  comparisonCriteria as  any ,  optional  includeNulls  as nullable logical )as  any

返回最大的值,这个值时以Unicode来做比较;第2参数代表如果列表为空,可以指定返回一个值;第3参数代表相反性的排序比较,1代表相反,0代表正常,默认正常;第4参数代表代表返回值是否包含空值,是一个逻辑值true or false。

例:

List.Max(1..10)=10

List.Max(,"空值")="空值"

解释:第2参数是在第1参数为空的时候的返回值,因为第1参数是空值,所以返回第2参数的值。

List.Max(1,"a",2,"z","一")="一"

解释:根据Unicode值,1<2<"a"<"z"<"一",所以最大值返回中文的"一"。

List.Max(1..10,null,1)=1

解释:有第3参数,第3参数代表的是排序。0代表正常,1代表相反,所以返回相反的取值,正常最大值是10,相反则是1,因为第3参数是1代表相反,所以返回的结果是1。

List.Max(null,"空值",null,true)=null

解释:有第4参数,第4参数代表空值的处理,true返回null,false返回第2参数值。这里第4参数是true,所以返回的结果是null。

List.Max(null,"空值",null,false)="空值"

解释:有第4参数,第4参数是false,所以返回第2参数的值。

2.    返回列表中最小的数据

List.Min (list as  list ,  optional default as  any , optional  comparisonCriteria as  any ,  optional  includeNulls  as nullable logical )as  any

返回最小的值,这个值时以Unicode来做比较;第2参数代表如果列表为空,可以指定返回一个值;第3参数代表相反性的排序比较,1代表相反,0代表正常。默认正常;第4参数代表代表返回值是否包含空值计算,是一个逻辑值true or false。

例:

List.Min(1..10)=1

List.Min(,"空值")="空值"

List.Min(1,"a",2,"z","一")=1

解释:因为根据Unicode排序1<2<"a"<"z"<"一",所以最小值为1。

List.Min(1..10,null,1)=10

解释:因为第3参数为1代表相反,最小的值相反计算就是最大的值,所以结果是10。

List.Min(null,"空值",null,true)=null

解释:第1参数是空值,第2参数是空值返回的值,第3参数是默认值,第4参数是true,代表null作为计算并返回。

List.Min(null,"空值",null,false)="空值"

解释:第1参数是空值,第2参数是空值返回的值,第3参数是默认值,第4参数是false,代表null不作为计算返回,所以返回值为第2参数的"空值"。

3.    返回列表中最大的前几项数据

List.MaxN (list as  list , countOrCondition as any, optional  comparisonCriteria as  any ,  optional  includeNulls as  nullable logical )as  any

返回Unicode值最大的前几项;第2参数可以为数字也可以为条件,如果为指定条件,则提取的数据为直到不满足条件前的数据;第3参数代表排序,1代表从小到大,0代从大到小,默认从大到小;第4参数代表返回值是否包含空值计算,是一个逻辑值true or false。

例:

List.MaxN(1..10,3)=10,9,8

解释:因为第2参数是数字,所以按第2参数数量提取最大值。

List.MaxN(1..10, each _>6)=10,9,8,7

解释:因为第2参数是条件,因为第3参数默认是从大到小排序,也就是把第1参数重新排序后成为10,9,8,7,6,5,4,3,2,1。所以排序后的每一个值和第2参数的条件比,直到不满足为止,这样比较的话到第5个数6不满足条件,所以终止后返回的结果就是10,9,8,7。

List.MaxN(1..10, each _>7,1)=

解释:第2参数是条件,第3参数是1代表从小到大排序,所以在第一个数值1不满足条件的时候就结束,所以结果为空列表。

List.MaxN(1..10,3,1)=1,2,3

解释:第2参数是数字,第3参数1表示的是从小到大排序的意思,所以提取的是最小的3项数值,也就是1,2,3。

List.MaxN(1,null,"a",3,null,true)="a",1,null

解释:第2参数是数字,第3参数默认值是从大到小,第4参数代表null值也做比较返回,Unicode字符排序顺序是英文字符>数字>null,所以排序是按从大到小返回结果也就是"a",1,null

List.MaxN(1,null,"a",3,1,false)=1,"a"

解释:第2参数是数字,第3参数是1代表从小到大排序,第4参数是false,代表返回值不包含null,Unicode字符排序顺序是英文字符>数字>null,所以除去null返回从小到大的前3位排序1,"a"。

List.MaxN(1,3,2,null,5, each _<2,1,true)=Error

解释:第2参数是条件,第3参数是1代表从小到大排序,第4参数是true代表null值计算并做返回。null,1,2,3,5和第3参数条件比,但是null无法进行数字表达式比较,所以返回错误。

List.MaxN(1,3,2,null,5, each _<3,1,false)=1,2

解释:第2参数是条件,第3参数是1代表从小到大排序,第4参数是false代表null值不做计算返回。null,1,2,3,5和第3参数条件比,因为null不做比较,所以实际比较的值时1,2,3,5和第2参数比较,直到数字3不满足条件返回,结果就是1,2。

4.    返回列表中最小的前几项数据

List.MinN (list as  list , countOrCondition as any, optional  comparisonCriteria as  any ,  optional  includeNulls  as nullable logical )as  any

返回Unicode值最小的前几项;第2参数可以为数字也可以为条件,如果为指定条件,则提取的数据为直到不满足条件前的数据;第3参数代表排序后的比较,1代表从大到小排序,0代表从小到大排序,默认从小到大排序;第4参数代表代表返回值是否包含空值计算,是一个逻辑值true or false。

例:

List.MinN(1..10,3)=1,2,3

解释:因为第2参数是数字,所以返回的是最小的3个值,第3参数默认值是从小到大排序,所以返回1,2,3。

List.MinN(1..10, each _ <4)=1,2,3

解释:因为第2参数是条件,所以比较直到不满足为止返回,第3参数默认值是从小到大排序,所以在第4个数字4的时候不满住,所以返回1,2,3。

List.MinN(1..10, each _>7,1)=10,9,8

解释:因为第2参数是条件,第3参数是1代表从大到小排序,排序后的列表是10,9,8,7,6,5,4,3,2,1,所以在7不满足条件的时候就结束,所以结果为7之前的数据10,9,8。

List.MinN(1..10,3,1)=10,9,8

解释:第2参数是数字,所以直接返回最小的3个值。第3参数是1代表从大到小排序,所以结果是10,9,8。

List.MinN(1,null,"a",3,null,true)=null,1,"a"

解释:第2参数是数字,代表返回最小的3个值。第3参数是默认值代表从小到大排序,第4参数是true代表null计算并返回。因为Unicode值排序大小是null<1<"a",所以返回的值时null,1,"a"。

List.MinN(1,null,"a",3,1,false)="a",1

解释:第2参数是数字,则返回最小的3项值,第3参数是1代表从大到小排序,第4参数是false,所以null不做比较返回。因为Unicode值排序大小是null<1<"a",所以从大到小排序的结果是"a",1,null,因为null不做比较返回,所以返回结果是"a",1。

List.MinN(1,null,"a", each_>0, 0,false)=Error

解释:第2参数是条件,第3参数是0代表从小到大排序,第4参数是false,所以null不做比较返回。Unicode大小为 null<1<"a",实际上需要和第2参数比较的值为1,"a",因为里面有"a",所以不能用于数字表达式计算,所以返回错误。

List.MinN(1,null,"a", each _=1,1,false)=

解释:第2参数是条件,第3参数是1代表从大到小排序,第4参数是false,所以null不进行计算返回。Unicode大小为 null<1<"a",实际需要比较的值为"a",1,因为第一个值"a"不符合第2参数的条件,所以结束匹配,返回的是空值列表。

5.    返回列表中的中位数

List.Median (list as  list ,  optional comparisonCriteria as  any ) as  an y

是对Unicode进行大小比较,返回list的中位数,如果列表包含null值,则在计算时忽略;如果null是唯一值,则返回null;如果列表数据为偶数,则返回较小值;如果列表为偶数,而且都是数值(包括时间日期等可转换数值),则返回2个的平均值。

例:

List.Median(1,2,3)=2

List.Median()=null

List.Median(1,"a","一")="a"

解释:根据Unicode值大小1<"a"<"一",中值为"a"。

List.Median(1,"a",null,2,"b")=2

解释:因为null不是唯一值,所以计算是忽略,此时中位数有2位,分别是2和"a",返回较小值,所以是2。

List.Median(1,2,3,4)=2.5

解释:因为列表中都是数值,此时中位数有2位,分别是2和3,所以去平均值为2.5

List.Median(#datetime(2018,11,11,12,0,0),#datetime(2018,11,11,13,0,0))=2018/11/11 星期日 下午 12:30:00

以上是关于如何在Power Query中提取数据——列表篇(1)的主要内容,如果未能解决你的问题,请参考以下文章

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

如何提取金蝶软件数据到power query

在 Power Query 中,从嵌套列表中提取子列表

如何使用 Power Query 从 Toggl API 中提取数据?

如何使用 Power Query 从 SharePoint 库中的(许多)文档中获取数据

SharePoint 列表数据的 Excel Power Query 导入更改日期/时间值