腾讯分分彩怎么玩才赢:PowerQuery解决相对路劲动态刷新的问题

分分彩技巧 www.kqa8.cn 首先感谢原作者慷慨分享,本文转自://www.jianshu.com/p/d6766d07448d ?王华庭

不知道“Parameter Table”确切翻译是什么,我直译为“参数表格”。参数表格的意思是:PowerQuery的参数可以根据用户输入来实现动态化。

目前我最常用到的场景是:当我将PowerQuery数据模板做好之后,其他不熟悉PowerQuery的伙伴只需要提供简单的输入——比如文件或文件夹路径——就可以自动生成结果。

场景再实例化一下:我做了一个学习报告模板,有各种复杂的计算。这个模板需要从某个系统导出三个原始表:学习报表、所有学员名单和课程信息表。如果这个模板只供我一个人使用,毫无问题;当我需要把这个模板提交给其他伙伴使用时,他们就需要自己从系统中导出三个表然后修改模板的PowerQuery代码,这将是一场灾难。避免灾难的方法是尽可能将模板代码封装,只让其他伙伴导出三个文件,将文件路径填写到Excel表格即可。这就是参数表格发挥作用的地方。

以下是操作步骤和代码:

1.首先在Excel中创建参数表格,这个表格只有两列:参数和值。因为这整个思路是我抄的英文资源的,所以我偷懒照搬英文列名:“Parameter”和“Value”。然后用插入表格或套用表格的方式,将区域转化成表格,记得将表格命名为“Parameters”【图1】。注意左上角的“表名称”。Value列就是需要用户输入的地方,在这个例子中我的同事只需要将Value列相应值修改为自己导出的三个文件的全路径就可以了。

2.然后新建一个查询,选择“从表格”创建【图2】。这一步是创建包含参数值的查询,便于后面从这个查询里引用参数值。因为PowerQuery是没法直接从表格引用值的。创建过程比较简单,一路默认和确定即可,不再截图演示。因为是从已经命名的表格创建的,所以查询名自动继承了表格名字“Parameters”。

3.现在要创建一个函数,因为只有函数才会拥有动态变化的值。直接点击“新建查询-从其他源-空白查询”,创建一个空白查询,点击“高级编辑器”,删除里边的所有代码,把下面代码粘贴进去然后保存,并把该查询命名为“fnGetParameter”(这也是直接照搬的)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//括号和等号加右箭头是函数的标志,括号里的是函数的参数,或者叫变量。
//如果把第一行拿掉,其实就是一个完整的查询。加上第一行就把这个查询封装成为一个函数了。
 
(ParameterName as text) =>
 
let
 
//获取刚才创建的Parameters表格
 
ParamSource = Excel.CurrentWorkbook(){[Name="Parameters"]}[Content],
 
//这一步其实是让参数表格的行可以无限扩充,不再局限于本例中的三行。
//注意在“in”前的都是一条语句,并且有缩进,我这里偷懒没缩进。
//整条语句蛮抽象,我自己也还没完全弄懂其内部的运作原理,直接照搬了。
 
ParamRow = Table.SelectRows(ParamSource, each ([Parameter] = ParameterName)),
 
Value=
 
if Table.IsEmpty(ParamRow)=true
 
then null
 
else Record.Field(ParamRow{0},"Value")
 
in
 
Value

4.接下来创建三个查询,分别是“学习报表”、“人员信息”和“课程信息”,然后对这三个查询进行各种复杂的Shaping也好,Calculating也好,然后加载到数据模型,然后根据需要添加计算列、计算字段,创建数据透视表、数据透视图乃至PowerView。十八般武艺样样上吧,做出一个真实的报告来就ok。具体步骤不赘述。

5.报告创建好之后,我要想让我的同事能够使用我的牛逼报告模板的关键一步来了:将上一步写死的源文件位置,替换成参数表格里的值。

将“学习报表”查询“let”后面的“源=……”替换成:

1
源 = Excel.Workbook(File.Contents(fnGetParameter("学习报表文件位置")), null, true),

将“人员信息”查询“let”后面的“源=……”替换成:

1
源 = Excel.Workbook(File.Contents(fnGetParameter("人员信息文件位置")), null, true),

将“课程信息”查询“let”后面的“源=……”替换成:

1
源 = Excel.Workbook(File.Contents(fnGetParameter("课程信息文件位置")), null, true),

6.为了便于同事识别,我将Parameters表所在的sheet名称重命名为“请修改”,并在表格区域外加上了使用这个模板的说明,这样他们一看就知道自己要干嘛【图3】。

7.保存该Excel文件,然后发给同事。

8.同事只需要导出三个对应的文件,保存在本地,然后打开此模板,分别填写三个文件的全路径信息,然后点击“刷新”,就获取到最新的数据了,保险起见,在数据透视表、数据透视图也刷新下吧。

雾中有雾 釉里有釉

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多 分分彩技巧
  • 失窃案牵出地下药品交易链 2018-11-24
  • 太原网友:谁来管管逢雨必淹的山大附小周边 2018-11-15
  • [福]什么是“幸福”?这两个字所表示的直接含义就是:“幸”是指机会,“福”就是指拜求神赐田地生长粮棉等生物而足食丰衣。 2018-11-15
  • 中国人性格比较隐忍,当积怨越来越深,隐忍到一定程度就会像炸弹一样爆发控制不了,为时过晚了 2018-11-10
  • 【超级工程】航拍重庆第一高桥——笋溪河特大桥(图) 2018-10-11
  • 传媒期刊秀:《新闻战线》 2018-10-11
  • 苹果 iPhone 7(全网通)【报价 图片 参数 评测】 2018-10-07
  • 虾仁怎么炒最下饭?答案是宫保-美食资讯 2018-09-27
  • 【“健”识早知道】“垃圾睡眠”比失眠还可怕?四招助你一夜好眠! 2018-09-27
  • 云南导游辱骂威胁游客案一审宣判 导游获刑6个月 2018-09-24
  • 说你好,就是好,不好也得好。 2018-09-24
  • 沈梦辰生日发惊艳大片为自己庆生 杜海涛称其“小乖乖”送生日祝福 2018-09-24
  • 爬窗户干瞪眼  云南文山一小区惊现倭蜂猴 2018-09-08
  • 【城市案例】杭州市制定《杭州市污染物排放许可、管理条例》规范环境保护 2018-08-31
  • 王石田朴珺罕见亲密写真曝光 女方喂男方冰淇淋娇羞甜蜜 2018-08-31
  • 232| 141| 234| 476| 493| 740| 657| 420| 23| 802|