本文讲解PowerQuery动态路径

几乎所有Power BI用户都知道,在Power BI Desktop里,如何从文件或文件夹获取数据, 但这里我提出一个你们不了解但也许会遇到的一个需求,如果文件或文件夹是相对路径而非绝对路径,要怎么办呢?

一个例子,报表需要从以下路径获取指定数据(假设我们不能使用Onedrive):

C:\Users\<your account name>\Documents

且该报表需要分享给其他报表开发者进行二次开发,按照常规做法,我们会使用:

File.Contents(<文件路径>)

来连接数据源,但该路径是静态的,当我们分享给同事后,报表应该从同事的文件夹中获取数据源,如果此时还需要同事手动修改路径,就会很麻烦,特别是当这样的数据源足够多的时候。因此,有没有办法可以使路径实现动态效果呢?无论我们分享给任何人,报表都可以自动地从对方的文件夹内获取指定数据。

事实上,该需求在Power BI官方社区早已有人提及,但截至目前却没有较好的解决办法, 因此我将在下文讲解该问题的解决方法,而且是多种解决办法。

方法一: 路径参数化

以上文为例,如果不同的用户使得路径中username的部分不同,那么只需把AD域中,或者本机中的所有计算机用户名整理好,然后在新建参数时录入它们,比如命名为username, 那么就可以利用M语句新建一个自定义函数,其中路径部分为:

File.Contents("C:\Users\" & username & "\Documents")

在参数中输入任意用户名,比如Jack,然后Invoke,就可以拼凑出该用户的路径。


最后,我们就可以另存为PBIT分享给同事。用户只需要在打开PBIT时输入路径参数,即可加载指定数据。

方法二:使用Text.Contains

如果不想使用参数,并且不同的路径拥有相同的部分,就可以使用此方法。比如,针对于一个文件路径,它可能位于:

C:\AAA\File\Project

也可能位于:

C:\BBB\File\Project

也许你会想到完全可以使用方法一,通过使用户传参来确定路径,但此处我们C盘目录下的那个文件夹名称是不确定的,具有随机性和不规律性,或者说参数列表是手动难以维护的,此情况下,要如何做?

我们知道PowerQuery要做到像其他编程一样使用for循环遍历所有路径返回对应结果很麻烦,但我们可以使用Text.Contains函数,让该函数筛选出C盘所有包含"File\Project"路径的文件,如下:

= Table.SelectRows(Source, each Text.Contains([Folder Path], "File\Project"))

这样我们就可以获取所有相关列表,再进行下一步筛选,此时无论何人打开此报表,皆可以获取他们想要的数据。

其他

此需求的另一种场景是获取某文件夹下最新的文件的数据。假设我们有一个文件夹,里面有命名不同的csv文件,我们需要取最近一次修改的csv文件,而不清楚哪个名称的csv文件是我们需要获取的,那么此时我们不能写出一个固定不变的绝对路径来,但我们可以使用Folder.Files函数获取路径下所有文件,然后再使用Table.FirstN把Date created或Date modified字段里日期最大的过滤出来,这样就能完美解决问题。

PowerQuery 相对路径解决方案相关推荐

  1. 网络无法找到计算机6,win7系统0x80070035找不到网络路径解决方案

    win7系统0x80070035找不到网络路径解决方案? 我们在通过win7系统使用局域网进行一些操作的时候,出现了找不到网络路径,无法访问同网络共享并且提示错误代码0x80070035的问题时,先不 ...

  2. 疯狂捕鱼之路径解决方案的思考

    一开始接触捕鱼游戏,对鱼的路径处理,采用CAD画图软件绘制出路径. 具体做法是,首先由程序员或者美工,使用CAD辅助绘图软件,将路径一一绘制出来,然后使用自制的插件,将路径图以指定的格式保存.在游戏内 ...

  3. 在命令行cmd中运行带相对路径的py脚本时, 找不到路径的解决方案

    症状: 直接运行py文件正常, 在命令行cmd中运行则报错 报错原因: 工作路径 与 脚本文件存放路径不统一 解决方案一: 控制台工作路径切换为文件所在路径: cd py文件所在路径 解决方案二: 在 ...

  4. i服务器2008系统,Windows Server 2008多路径 I/O 概述

    Windows Server® 2008 包括许多将运行 Windows 服务器级操作系统的计算机与存储区域网络 (SAN) 设备连接起来的增强功能. 集成的多路径 I/O (MPIO) 支持是为基于 ...

  5. 关于未能映射路径问题

    未能映射路径,在作页面生成时,老是出现"未能映射路径"/aa/bb/cc". 研究了半天,终于找出原因了,Server.Mapth(string path),path-- ...

  6. 关于ASP.NET未能映射路径问题

    通过vs[新建项目]或者[新建网站]而创建的网站项目会使用"/aa/bb/cc"(以/开头)的相对路径,而通过[文件]>[添加]>[现有网站]建立的网站项目使用&quo ...

  7. 解决华为手机获取相册图片路径为null

    最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...

  8. android华为获取相册,解决华为手机获取相册图片路径为null

    最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...

  9. Qcon演讲实录 | XQUIC与多路径传输技术Multipath QUIC

    大家好,我是阿里巴巴淘系技术部的刘彦梅(花名喵吉),今天给大家介绍的演讲内容是<XQUIC与多路径传输技术>, 下面是我在Qcon 2020上海站大会上的演讲内容,收录于专题<5G+ ...

最新文章

  1. (转)CentOS 7系统详细开机启动流程和关机流程
  2. 网络:TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复
  3. 【Qt】QModbusRtuSerialMaster类
  4. Web开发的那点事--业务层常用功能
  5. 机器学习问题总结(05)
  6. 对于国产芯片何时能挑大梁
  7. ES6规格之数组的空位
  8. 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)
  9. xss攻击突破转义_每个人都应该了解的7种xss漏洞
  10. Numpy根据某一列进行排序
  11. 科普:什么是人工智能
  12. Windows下ab压力测试工具的模拟表单提交使用
  13. windows 资源监视器
  14. Android友盟统计
  15. 给普通人的Python——第四章
  16. 哮喘病人小气道上皮细胞 (Asthma) Small airway epithelial cells 培养解决方案
  17. 数据结构-循环双链表
  18. 微信公众号菜单栏设置直接打电话拨号一键拨号
  19. 【Redis】技术评审要点
  20. 中国国有资本投资运营公司“十四五”投资规划及发展动向展望报告2022-2028年

热门文章

  1. [高数][高昆轮][高等数学上][第二章-导数与微分]04.隐函数及由参数方程所确定的函数的导数...
  2. 数据库上机2(以图形化界面方式操作数据库系统)
  3. java线程池newfi_Java进阶——线程与多线程
  4. MarkdownPad2无法预览Markdown文档问题的解决
  5. 在安装anaconda3(自带python3.7)和自己安装的python2.7的win10系统中安装pymol
  6. 关于Obj-c代码静态扫描 iPhone代码静态扫描的问题(clang-analyzer)
  7. JS 对数组对象进行排序
  8. 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
  9. 博客秘诀:超人气博客是怎样炼成的(提升博客人气不可不用的绝招)
  10. 分布式-幂等性解决方案