PowerQuery技巧之不解压直接读取zip压缩包

  • 格式:pdf
  • 大小:177.64 KB
  • 文档页数:4

的空查询,把下面代码复制粘贴到高级编辑器,需要用的时候直接调用自定义函数=unzip("C:\路径.zip")就Excel.Workbook或Csv.Document解析成表即可:
不仅是zip,其他的文件如doc,ppt,pdf等,理论上也都可以通过二进制读出来。

方法二:在PBID中使用R语言
可以看到用Power Query的M语言,因为没有直接的函数支持,导致虽然能实现效果,但过程实在太复杂,反正我是看不懂。

而在Python和R中一两行代码就可以搞定,所以只要是R可以,就可以在Power BI Desktop中使用R.Execute来调用R。

首先得安装R,这个就不多说了。

假设在桌面上有个test.zip,压缩包内有个test.csv,我们需要读取csv的数据。

源数据长这样:
先来一个不依赖包的写法:
R语言代码:
unzip("C:/Users/rages/Desktop/test.zip")
read.csv("test.csv",header=F)
header=F表示不使用第一行作为标题,header=T则相反。

把R语言写到PBID的高级编辑器中就有两个地方需要注意,一个是文本引号的转义,另一个是数据需要以dataframe数据框的形式返回。

let
unzip=R.Execute("
unzip(""C:/Users/rages/Desktop/test.zip"")
data<-data.frame(read.csv(""test.csv"",header=F))
"){0}[Value]
in
unzip
在R中还有一个叫rio的包,可以不解压直接读取压缩包,首次使用需要install.packages('rio')安装rio包。

R语言中代码为:
library(rio)
import("c:/Users/rages/Desktop/test.zip")
代码很简洁,第一步加载rio包,第二步直接读取文件路径。

改写到PBID中为:
let
unzip=R.Execute("
library(rio)
data<-data.frame(import(""C:/Users/rages/Desktop/test.zip""))
"){0}[Value]
in
unzip。