⑴ power query 处理100万行数据好用吗
100万对于PQ来说没问题的。更多Power BI信息和课程欢迎关注“PowerPivot工坊”的“从Excel到Power BI数据分析可视化”系列课程。
⑵ 如何在Power Query中提取数据——列表篇(1)
表名为列表,第一步骤名称为源 (一)从头开始提取 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(列表[数字])=12. 获取列表前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⑶ Excel数据建模——提高Power Query数据处理效率
我们使用Excel中强大的数据处理工具——Power Query进行数据清理与整合,可以处理大量不同来源的数据。在大数据的形势下,数据量大,数据结构复杂,因此注意建立查询的方法技巧,可以帮助我们提高Power Query的工作效率。下面介绍我使用Power Query处理数据的一些小技巧。
关于 数据源 ,我喜欢把同类或相关的数据源都放到一个文件夹里,然后从文件夹导入数据。这样,不但有利于数据源的集中管理,而且当增加新的数据源,或者数据源版本发生变化时,也更方便对查询进行更新修改。
在Power Query编辑器中处理数据时,尽量 减少重复操作 ,这样有利于提高数据处理效率。比如,如果多个不同的查询中有很多步骤是重复的,那么我们可以先针对这些重复的部分建立一个单独的查询,然后再引用这个查询来建立其他的查询。
例如,我在上一篇文章中( Excel数据建模——Power Query数据清理与整合 ),先建立“Worksheet筛选”查询,以此作为桥梁,然后在引用这个查询的基础上,再建立“人员投入”、“人员产出”查询。通过对先建查询的引用,减少了重复操作,提高了数据处理的效率。
⑷ EXCEL powerpivot 有没有人用过
powerQuery最新功能GET
《Power Query新特性:你给答案,我来计算 - 知乎专栏》
相信读完这篇文章后,你肯定会对powerquery有一个比较全面的了解及认识,那么powerquery到底能做什么呢,这里再给大家一些实例:
《用PowerQuery动态汇总文件夹下的多个Excel文件(支持动态增删自动更新)-雷公子个人博客》
《数据逆透视-多维数据转回一维 | Excel120》
《PQ:一个快速创建整数序列及字符序列的方法 | Excel120》
《PowerQuery处理典型的中国式二维表格转一维》
《(视频)URL分析之参数批量快速提取之Url.Parts函数 - 知乎专栏》
《利用Power Query进行采购发票校验》
《PowerQuery语言M函数中文翻译文档面世 - 知乎专栏》
《查看PowerQuery函数的几种方法》
PowerQuery技巧类文章:
《同一Excel文档中多个智能表格如何批量添加到PowerQuery - 知乎专栏》
《PowerQuery实现动态查询(与文件的路径无关) | Excel120》
《PowerQuery技巧篇--词根串联(生成笛卡尔积数列) - 知乎专栏》
《PowerQuery的参数表格用法》
PowerQuery进阶的一些知识:
《PQ:多行属性合并到一个单元格 | Excel120》
《PowerQuery分表函数简单应用Table.Partition(分表) - 知乎专栏》
《PowerQuery作为ETL系统 - 自助装载大数据(>100W)最佳实践》
⑸ 如何在Power Query中获取数据——表格篇(3)
样例表格:
之前讲了从表头获取,那对应的就有从表尾获取。
(一)从表尾开始提取
1. 获取表的最后一条记录
Table.Last (table as table , optional default as any )as any
第1参数是需要操作的表;第2参数是在空表的情况下的赋值;返回的结果如果是非空表则是最后一条记录,格式是Record格式,如果是空表则是赋值的格式。
例:
Table.Last(数据)=[姓名="王五",成绩=80,学科="英语"]
Table.Last(Table.FromRecords({}),{"空表"})={"空表"}
解释:空表代表没有记录的表,但是可以有标题字段名。Table.FromRecords({})生成的是一个空表,例如Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一样的,生成的是不具备标题字段的空表;Table.FromValue({})生成的就是一个标题字段为Value的空表;因为是空表所以返回指定值。
2. 获取指定条件表的最后几条记录
Table.LastN (table as table , countOrCondition as any ) as table
第1参数为操作的表,第2参数为数字或者条件,返回的是一个表的格式。如第2参数是条件,则从尾开始匹配,返回满足的行,直到不满足为止。
例:
<> Table.Last(数据)
解释:因为Table.LastN返回的是table格式,而Table.Last返回的是record格式,所以不相等。
解释:因为成绩是降序排列,所以返回的结果是直到不满足条件结束。
Table.LastN(数据,each_[成绩]>90)= #table({},{})
解释:因为最后一条记录是80,不满足第2参数的条件,所以没有满足条件的数据,返回的结果就是一个空表。
解释:查找姓名包含"五"的记录,并返回形成表格。因为第一条记录是的姓名是王五,满足条件,第二条记录是李四不满足条件结束,所以只返回最后一条记录并形成表格。
⑹ power query实现多表联合时的数据量限制是多少
power query实现多表联合时的数据量限制是3表以内
PowerQuery是以查询为主题而存在的。任何非以此主题为前提,用其他技术与之的对比都不合适。
如果你已经是轻松玩转VBA的”EXCEL高手”,这个工具将是一个极好的补充,可以替代大量编码时间,另外如果投资时间学习M语言(PowerQuery内置编程语言)将推开一个新的大门。如果你是Excel初学者,需要向Excel导入数据而苦思怎么办,那PowerQuery正是你的最佳选择,没有之一。
⑺ 如何在Power Query中提取数据——数值篇
我们了解到在Power Query中提取数据会因为数据格式不同而提取的方法不同。
前我们讲了数据提取的文本篇,这次我们来看下数值格式的数据如何进行提取。
数值的提取主要是进位的问题。在Power Query中对于进位有着比Excel更多的选择。
1. 向下舍去(类似Excel中的Rounddown)
Number.RoundDown(number as nullable number , optional digits as nullable number ) as nullable number
第1个参数是需要进行操作的数值,第2个参数是进位到哪里。
例:
Number.RoundDown(123.123,1)=123.1
Number.RoundDown(123.123,-1)=120
Number.RoundDown(123.123,-3)=0
Number.RoundDown(-123.123,1)=-123.2
Number.RoundDown(-123.123,-3)=-1000
注意: 第2参数代表小数的位数,如果是负数则是小数点的前方,如果是正数则是小数点的后方,0则为去掉小数点。同时我们需要注意如果是负数,向下舍去的意义实际上是舍入到小的值。
2. 向上进位(类似Excel中的Rounp)
Number.RoundUp (number as nullable number , optional digits as nullable number ) as nullable number
例:
Number.RoundUp(123.123,1)=123.2
Number.RoundUp(123.123,-1)=130
Number.RoundUp(123.123,-3)=1000
Number.RoundUp(-123.123,1)=-123.1
Number.RoundUp(-123.123,-3)=0
注意: 和Number.RoundDown的区别,在于进位,所以始终是会往大的数值靠。
3. 向0进位(这个在Excel中目前没有对应函数)
Number.RoundTowardZero (number as nullable number , optional digits as nullable number ) as nullable number
向0进位是什么意思呢? 正数往下舍入,负数往上舍入
Number.RoundTowardZero(123.123,1)=123.1
Number.RoundTowardZero(-123.123,1)=-123.1
Number.RoundTowardZero(123.123,-3)=0
Number.RoundTowardZero(-123.123,-3)=0
Number.RoundAwayFromZero(number as nullable number , optional digits as nullable number ) as nullable number
远离0进位是什么意思呢? 正数往上舍入,负数往下舍入
Number.RoundAwayFromZero(123.123,1)=123.2
Number.RoundAwayFromZero(-123.123,1)=-123.2
Number.RoundAwayFromZero(123.123,-3)=1000
Number.RoundAwayFromZero(-123.123,-3)=-1000
4. 四舍五入(类似Excel的Round,但有些许区别)
Number.Round (number as nullable number , optional digits as nullable number , optional roundingMode as nullable RoundingMode.Type ) as nullable number
此函数比Excel里面多一个参数,一共有3个参数,第三个参数是针对如果碰到数字5如何进行处理,0代表向上进位,1代表向下舍去。默认参数是为1,所以如果要实现真正意义上的四舍五入则需要添加第三参数, 正数为0,负数为1
Number.Round(123.125,2,1)=123.12
Number.Round(123.125,2,0)=123.13
Number.Round(-123.125,2,1)=-123.13
Number.Round(-123.125,2,0)=-123.12
⑻ Power Query中Excel数据的导入介绍
我们在日常工作中,Excel几乎是每个工作的人员都会操作的软件之一,甚至比邮箱,Word,PPT等都多。毕竟在大数据时代,数据就是一切,处理数据最基础的也就是Excel。
我们来看下如何进行Excel数据的导入。
在说Excel导入的时候,我们经常用到的案例都是从表格导入。
在 从表格导入 之前,我们先了解下,什么是表格,Power Query中是如何定义表格的。
我们来看下,这两个表格有什么区别没?
表1代表的是Excel里面的超级表,Power Query中的从表格导入的表格;表2代表的就是Excel里面的普通表格。最明显的区别,在表1的C5单元格的右下角有一个标记,鼠标移动到上面会改变形状。同时鼠标点击表1内任意单元格,会出现“设计”菜单,同时会显示表名称。
表1这种表格是通过插入表格或者Ctrl+T来获得,表名称可以更改,表的大小范围可以调整,同时还可以使用切片器和快速汇总等功能。通常在我们原本普通的表格中插入后,会自动分配到一个表格样式,这样我们就能很清晰的看清楚表格的范围。
直接从表格导入后,Power Query会自动辨别数据类型并帮你做归类,这样就会出现2个步骤, 源 和 更改的类型 。
我们点击第一步的源,可以发现其使用的函数公式为:
Excel.CurrentWorkbook(){[Name="数据"]}[Content]
Excel.CurrentWorkbook()返回的是当前工作簿内的Power Query认为的表格,然后通过引用的方式获得表格内容。引用的方式可以参考 Power Query基础概念(更新)
从表格导入我们基本可以理解了。那我们在来看下 从工作簿导入 。
这几个都是非隐藏的内容。如果有隐藏的数据则在这一步就显示不出。如果我们需要同时导入多个内容,可以勾选上面的 选择多项 。
如果需要自定义的筛选,则可以直接选中文件夹,并点击编辑即可。此时就会出现一些之前未显示出来的隐藏文件。
我们可以通过筛选,选择我们所需要的数据,点击Data列中的Table值就可以了。
如果我们需要把多个数据源汇总到一个表内,则只需要在筛选后点击Data右边的展开按钮
即可。 需要注意的是名称的话是默认没有标题字段的,所以默认的标题都是Column+序号,例如Column1,Column2,Column3等 。
从文件夹导入
Power Query可以通过文件夹批量导入所需要的文件。需要注意的是默认情况下是会含子目录。通常会有一个合并和编辑及编辑2个选项,而我们一般直接选择编辑,因为如果选择了合并和编辑的话,会导入很多我们不想要的数据,大家也可以试试如果选择合并和编辑后会导入哪些内容。
点击编辑后我们会看到整个文件夹里面的文件,我们可以通过筛选,把我们需要的excel文件给挑选出来, 请注意带有~的文件名称代表我们当前正在打开着的文件名称,这一部分需要过滤筛选掉,要不然之后解析文件的时候会出错,当然如果你直接把打开的文档关闭掉,就不会显示这个信息了 。
到这一步的话,因为数据还没有被解析出来,还是一个Binary二进制格式,此时我们需要通过增加列,输入解析Excel的函数Excel.Workbook来处理。(这里有个小技巧,如果在这个函数的第二参数填写 true(注意小写) 的时候,就能直接自动辨认数据里的标题行)
解析完成后,我们可以看到自定义列里面格式变成了Table,每一行Table里面的这个数据相当于代表我们导入了一个工作簿方式。之后的方法和导入工作簿一样的操作。
当然在此过程中会产生很多字段列,而我们最主要的内容类则是在Content字段里面,所以我们可以把我们不需要的列都删除,这样也显得导入的数据比较干净。具体案例可以参考 如何自制便捷的文件管理器?
⑼ EXCELBI中的PowerQuery具有超激情大的数据采集功能,他可以采集以下数据:(多选)
可选:B、C、E
⑽ Power query 限制大下,数据被截断怎么处理
删除不需要的列来释放内存空间。
每个最高256MB内存限制。
PowerQuery在Excel中通过简化数据发现、访问和合作的操作,从而增强了商业智能自助服务体验。