如何在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 从 Toggl API 中提取数据?