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中创建新的空查询,然后在View中打开高级编辑器,清除原始内容,输入以下内容,设置好自己的开始日期和结束日期,点击完成,优雅、方便、高效~希望对大家有帮助!
也可以在此基础上调整代码,得到想要的分析维度。适用于所有PQ版本,包括Power BI。使用
让/设置起始日期、结束日期自定义日期区间={数字.自(#日期(2018,1,1)).号码。自(#日期(2020,12,31))},转换为表=表FromList(自定义日期区间,拆分器SplitByNothing()、null、null、ExtraValues .错误),生成日期列=表RenameColumns(转换为表,{{"Column1 ","日期"}}), 日期类型=表TransformColumnTypes(生成日期列,{{"日期",键入日期}}),整数日期=表添加列(日期类型"日期",每个日期ToText([日期],“yyyyMMdd”)),整数类型1=表格TransformColumnTypes(整数日期,{ {“IntDate”,Int64 .Type}}),年份数=表添加列(整数类型1、"年标识",每个日期。年份([日期]),类型号),季度数=表添加列(年份数"四分之一",每个日期。四分之一年([日期]),类型号),月份数=表添加列(季度数"每月",每个日期。月份([日期]),类型号),年月数=表添加列(月份数“yyMMID”,每个文本。发件人([年标识])文本PadStart(文本发件人([MonthID]),2,“0”),整数类型2=表格TransformColumnTypes(年月数,{ {“yyMMID”,Int64 .Type}}),年度周数=表添加列(整数类型2、"早期的一周",每个日期。一年中的第几周([日期]),类型号),月度日数=表添加列(年度周数"大日子",每个日期。日([日期]),类型号),周星期数=表添加列(月度日数"大家伙",每次约会DayOfWeek([日期],1),类型号),年份=表添加列(周星期数, "年份",每个“是”文本。从([YearID]),键入文本,季度=表添加列(年份, "季度",每个“问”文本。从([QuartId]),键入文本,月份=表添加列(季度, "月份",每个文本发自([蒙特希德])月",键入文本),年月S=表格添加列(月份, "年月每个日期ToText([日期]、“年-月”)、键入文本),年月S格式=表ReplaceValue(年月s,"-","'",Replacer .替换文本,{ "年月S"}),年月L=表格添加列(年月S格式, "年月每个日期ToText([日期】,“yyyy年M月"),键入文本),年周=表添加列(年月l,”周",每个“W”文本。从([早期的星期]),键入文本,月日=表添加列(年周, "日",每个“D”文本。从([DaiID]),键入文本,星期=表添加列(月日, "星期",每次约会ToText([日期],“ddd”),键入文本),调整列顺序=表。重组列(星期,{"日期", "年份", "季度", "月份", "日", "星期", "周", "年月l ","年月s“、”IntDate“、”YearID“、”QuarterID“、”MonthID“、”yyMMID“、”WeekOfYearID“、”DayID“、”DayOfWeekID“})中调整列顺序
实现的日期表效果:(右侧的排序身份已省略)