Excel的Power Query(简称PQ)是近年来微软重点推荐的一个组件,由于它支持的外部数据来源丰富,图形化界面功能丰富,更支持自定义M函数,所以确实是一个数据获取、数据处理的强大工具。
通过PQ连接数据 → 给PP(Power Pivot)提供丰富的数据 → 建立数据模型 → 输出报表,这是微软官方指引的一条技术路径,确实值得跟进学习,PQ目前支持的数据来源包括:
PQ支持的数据源
由上面可以看出,微软真的是花了大功夫去打造它,未来肯定还会支持更多数据来源,确实值得我们跟进学习使用。当然我们也要结合自己的工作情况,如果你公司的版本支持PQ,不妨趁空余时间学习下,但在实际应用时一定要注意版本的兼容性问题。(自Excel2016开始,才真正地支持PQ,而且如果你是O365的用户,PQ也会不断迭代新的功能)
我和黄老师经常在很多零售企业做数据咨询项目,据我了解,对于传统零售行业的朋友来说,PQ还是一项“新”的功能,不少朋友看到上面的数据来源,都会一脸懵懂。但是其实真的问题不大,因为也会有其他方法去解决,并不是非学不可~~~有时候帮客户去分析几年的数据,行数都达几千万行,这时我也会用PQ+PP去进行建模处理,对于用透视表来进行数据探索分析,还是非常高效的。
在这里也分享我的一个PQ的M函数给大家,用于自动生成日期维度表(PP建模必备),非常方便高效~虽然在Excel工作表也能做,或者用DAX也能做,但是我就爱在PQ里实现!
使用方法:在PQ中新建一个【空查询】,然后在【视图】打开【高级编辑器】,清除原来的内容,输入以下内容,设置你的起始日期和结束日期,点完成就ok了,优雅方便高效~希望对大家有帮助!
大家也可以在此基础上调整代码,以便获得自己想要的分析维度。适合在所有PQ版本,包括Power BI中。使用
let // 设置起始日期、结束日期 自定义日期区间 = {Number.From(#date(2018,1,1)) .. Number.From(#date(2020,12,31))}, 转换为表 = Table.FromList(自定义日期区间, Splitter.SplitByNothing(), null, null, ExtraValues.Error), 生成日期列 = Table.RenameColumns(转换为表,{{“Column1”, “日期”}}), 日期类型 = Table.TransformColumnTypes(生成日期列,{{“日期”, type date}}), 整数日期 = Table.AddColumn(日期类型, “IntDate”, each Date.ToText([日期],”yyyyMMdd”)), 整数类型1 = Table.TransformColumnTypes(整数日期,{{“IntDate”, Int64.Type}}), 年份数 = Table.AddColumn(整数类型1, “YearID”, each Date.Year([日期]), type number), 季度数 = Table.AddColumn(年份数, “QuarterID”, each Date.QuarterOfYear([日期]), type number), 月份数 = Table.AddColumn(季度数, “MonthID”, each Date.Month([日期]), type number), 年月数 = Table.AddColumn(月份数, “yyMMID”, each Text.From([YearID]) & Text.PadStart(Text.From([MonthID]),2,”0″)), 整数类型2 = Table.TransformColumnTypes(年月数,{{“yyMMID”, Int64.Type}}), 年度周数 = Table.AddColumn(整数类型2, “WeekOfYearID”, each Date.WeekOfYear([日期]), type number), 月度日数 = Table.AddColumn(年度周数, “DayID”, each Date.Day([日期]), type number), 周星期数 = Table.AddColumn(月度日数, “DayOfWeekID”, each Date.DayOfWeek([日期],1),type number), 年份 = Table.AddColumn(周星期数, “年份”, each “Y” & Text.From([YearID]),type text ), 季度 = Table.AddColumn(年份, “季度”, each “Q”&Text.From([QuarterID]),type text), 月份 = Table.AddColumn(季度, “月份”, each Text.From([MonthID]) & “月”,type text), 年月S = Table.AddColumn(月份, “年月S”, each Date.ToText([日期],”yy-MM”),type text), 年月S格式 = Table.ReplaceValue(年月S,”-“,”‘”,Replacer.ReplaceText,{“年月S”}), 年月L = Table.AddColumn(年月S格式, “年月L”, each Date.ToText([日期],”yyyy年M月”), type text), 年周 = Table.AddColumn(年月L, “周”, each “W” & Text.From( [WeekOfYearID] ),type text), 月日 = Table.AddColumn(年周, “日”, each “D” & Text.From( [DayID] ),type text), 星期 = Table.AddColumn(月日, “星期”, each Date.ToText([日期],”ddd”),type text), 调整列顺序 = Table.ReorderColumns(星期,{“日期”, “年份”, “季度”, “月份”, “日”, “星期”, “周”, “年月L”, “年月S”, “IntDate”, “YearID”, “QuarterID”, “MonthID”, “yyMMID”, “WeekOfYearID”, “DayID”, “DayOfWeekID”})in 调整列顺序
实现的日期表效果:(右侧的排序ID已省略)
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!