PowerQuery 相对路径解决方案
本文讲解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 相对路径解决方案相关推荐
- 网络无法找到计算机6,win7系统0x80070035找不到网络路径解决方案
win7系统0x80070035找不到网络路径解决方案? 我们在通过win7系统使用局域网进行一些操作的时候,出现了找不到网络路径,无法访问同网络共享并且提示错误代码0x80070035的问题时,先不 ...
- 疯狂捕鱼之路径解决方案的思考
一开始接触捕鱼游戏,对鱼的路径处理,采用CAD画图软件绘制出路径. 具体做法是,首先由程序员或者美工,使用CAD辅助绘图软件,将路径一一绘制出来,然后使用自制的插件,将路径图以指定的格式保存.在游戏内 ...
- 在命令行cmd中运行带相对路径的py脚本时, 找不到路径的解决方案
症状: 直接运行py文件正常, 在命令行cmd中运行则报错 报错原因: 工作路径 与 脚本文件存放路径不统一 解决方案一: 控制台工作路径切换为文件所在路径: cd py文件所在路径 解决方案二: 在 ...
- i服务器2008系统,Windows Server 2008多路径 I/O 概述
Windows Server® 2008 包括许多将运行 Windows 服务器级操作系统的计算机与存储区域网络 (SAN) 设备连接起来的增强功能. 集成的多路径 I/O (MPIO) 支持是为基于 ...
- 关于未能映射路径问题
未能映射路径,在作页面生成时,老是出现"未能映射路径"/aa/bb/cc". 研究了半天,终于找出原因了,Server.Mapth(string path),path-- ...
- 关于ASP.NET未能映射路径问题
通过vs[新建项目]或者[新建网站]而创建的网站项目会使用"/aa/bb/cc"(以/开头)的相对路径,而通过[文件]>[添加]>[现有网站]建立的网站项目使用&quo ...
- 解决华为手机获取相册图片路径为null
最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...
- android华为获取相册,解决华为手机获取相册图片路径为null
最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...
- Qcon演讲实录 | XQUIC与多路径传输技术Multipath QUIC
大家好,我是阿里巴巴淘系技术部的刘彦梅(花名喵吉),今天给大家介绍的演讲内容是<XQUIC与多路径传输技术>, 下面是我在Qcon 2020上海站大会上的演讲内容,收录于专题<5G+ ...
最新文章
- (转)CentOS 7系统详细开机启动流程和关机流程
- 网络:TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复
- 【Qt】QModbusRtuSerialMaster类
- Web开发的那点事--业务层常用功能
- 机器学习问题总结(05)
- 对于国产芯片何时能挑大梁
- ES6规格之数组的空位
- 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)
- xss攻击突破转义_每个人都应该了解的7种xss漏洞
- Numpy根据某一列进行排序
- 科普:什么是人工智能
- Windows下ab压力测试工具的模拟表单提交使用
- windows 资源监视器
- Android友盟统计
- 给普通人的Python——第四章
- 哮喘病人小气道上皮细胞 (Asthma) Small airway epithelial cells 培养解决方案
- 数据结构-循环双链表
- 微信公众号菜单栏设置直接打电话拨号一键拨号
- 【Redis】技术评审要点
- 中国国有资本投资运营公司“十四五”投资规划及发展动向展望报告2022-2028年
热门文章
- [高数][高昆轮][高等数学上][第二章-导数与微分]04.隐函数及由参数方程所确定的函数的导数...
- 数据库上机2(以图形化界面方式操作数据库系统)
- java线程池newfi_Java进阶——线程与多线程
- MarkdownPad2无法预览Markdown文档问题的解决
- 在安装anaconda3(自带python3.7)和自己安装的python2.7的win10系统中安装pymol
- 关于Obj-c代码静态扫描 iPhone代码静态扫描的问题(clang-analyzer)
- JS 对数组对象进行排序
- 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
- 博客秘诀:超人气博客是怎样炼成的(提升博客人气不可不用的绝招)
- 分布式-幂等性解决方案