美文网首页工具癖
powerquery实现原始数据路径手动填写刷新

powerquery实现原始数据路径手动填写刷新

作者: 深海农夫 | 来源:发表于2017-05-19 17:14 被阅读1464次

    问题:

    在最近的工作中,遇到要处理一批比较大的数据,使用了powerquery,但是由于原始数据量大,无法放到一个excel文件中,被分成了多个,在处理的时候选择了从文件夹获取数据的方式,处理后通过powerpivot进行了一系列的计算,发给同事后,发现修改文件夹路径是比较麻烦,通过百度,找到一些方法,本文做下记录,以便后期查看。

    解决步骤:

    1、新建查询-从文件-从文件夹

    2、选择原始数据文件夹所在位置

    3、加载后选择编辑

    4、添加一个自定义列,列名随意,公式使用Excel.Workbook([Content]),注意严格区分大小写

    5、选择新加的列,点击右键,删除其他列

    6、点击新列的右边双向箭头,选择扩展Data

    7、点击Data列的右上角,选择扩展你需要的列(如果数据量不大可以全部扩展)

    8、将第一行提升为标题。

    9、选择一列设置数据类型(多个文件合并会 把表头放到了内容里面,需要选择一列设置格式后通过删除错误值来删除表头数据,具体选择哪列,根据实际数据情况而定)

    10、新建一个文件路径的表,转换为表后添加到查询中,注意表的名称

    11、最关键的一步要创建一个函数,因为只有函数才会拥有动态变化的值。直接点击“新建查询-从其他源-空白查询”,创建一个空白查询,点击“高级编辑器”,删除里边的所有代码,把下面代码粘贴进去然后保存,并把该查询命名为“fnGetParameter”

    //括号和等号加右箭头是函数的标志,括号里的是函数的参数,或者叫变量。如果把第一行拿掉,其实就是一个完整的查询。加上第一行就把这个查询封装成为一个函数了。

    (ParameterName as text) =>

    let

    //获取刚才创建的表格

       ParamSource = Excel.CurrentWorkbook(){[Name="文件位置"]}[Content],

    //这一步其实是让参数表格的行可以无限扩充,不再局限于本例中的三行。

       ParamRow = Table.SelectRows(ParamSource, each ([文件] = ParameterName)),

       Value=

       if Table.IsEmpty(ParamRow)=true

       then null

       else Record.Field(ParamRow{0},"路径")

    in

       Value

    11、用高级编辑器查看查询,将

    源 = Folder.Files("E:\*************\callList"),

    替换为

    源 = Folder.Files(fnGetParameter("callList")),

    接下来就是一路保存和操作,最后把文件发给同事,同事只用在文件位置表格里面修改他电脑上路径即可使用。

    对于从其他文件获取的数据,也可以使用同样的方法调用。

    另外也可以使用powerquery的参数来定义文件路径

    只是这种方法需要同时进去powerquery修改参数。

    相关文章

      网友评论

        本文标题:powerquery实现原始数据路径手动填写刷新

        本文链接:https://www.haomeiwen.com/subject/wsvyxxtx.html