3

我正在尝试.pbix使用 python 的zipfile库检查 PowerBI 文件。

解压缩.pbix存档时,我得到以下结构:

DataMashup
DataModel
DiagramLayout
Metadata
Report
ReporLayout
ReporStaticResources
ReporStaticResourceSharedResources
ReporStaticResourceSharedResourceBaseThemes
ReporStaticResourceSharedResourceBaseThemeCY18SU07.json
SecurityBindings
Settings
Version
[Content_Types].xml

DataMashup存档中的文件似乎是目录的.pbix某种非品牌存档。

DataMashup对象似乎没有被压缩,因为我可以xml在 python 解释器中打印对象时轻松读取数据。

使用7zip我可以访问以下内容:

DataMashup/
    Config/
        Package.xml
    Formulas/
        Section1.m # m and/or dax looking stuff
[Content_Types].xml

如何发现DataMashup存档中存档的格式?

一个线索在对象顶部的二进制数据中DataMashup\x00\x00\x00\x00\x07\x05\x00\x00PK这可能表示 pkzip。

尝试unzipDataMashup文件上使用时,另一个线索可能是此输出:

$ unzip DataMashup
Archive:  DataMashup
warning [DataMashup]:  6215 extra bytes at beginning or within zipfile

我能够使用以下命令解压缩DataMashuplinux 上的目录7za

WARNINGS:
There are data after the end of archive

--
Path = DataMashup
Type = zip
WARNINGS:
There are data after the end of archive
Offset = 8
Physical Size = 1303
Tail Size = 5148

Everything is Ok

Archives with Warnings: 1

Warnings: 1
Files: 3
Size:       2040
Compressed: 6459

尽管有警告,但文件看起来还不错。不幸的是,这对我在 Windows 上没有帮助。

4

1 回答 1

1

pbix 文件被压缩,因此需要解压缩文件。DataMashup 遵循MS-QDEFF规范。

存档中的 DataMashup 文件也是一个存档,它包含具有查询源定义的 Section1.m

  1. 更改文件 section1.m
  2. 重新打包 DataMashup
  3. 重新压缩并将扩展名更改回 xlsx

这里有一个非常好的 c# 教程

https://www.titanwolf.org/Network/q/8acb9f29-4b28-400b-b8df-cbe523edcb01/y

另一个在这里,使用电源外壳

https://querypower.medium.com/extracting-power-queries-41fd73d3d6a2

于 2021-10-24T09:04:11.540 回答