传输 .php 脚本以将二进制文件解码并解压缩到 Power Query 中

问题描述 投票:0回答:1

我有一个 MySQL 数据库,其中 .xlsx 文件存储为二进制文件。我可以下载这些二进制文件,并使用以下 .php 脚本将它们转换回 .xlsx 文件(一次全部放在一个文件夹中)。

<?php

$scan = glob(__DIR__ . '/*.bin');

foreach ($scan as $filePath) {
    if (is_file($filePath)) {
      $content = gzuncompress(base64_decode(file_get_contents($filePath)));

      file_put_contents(__DIR__ . '/' . basename($filePath, '.bin') . '.xlsx', $content);
    }
}

现在我想在 Power Query for Power BI 中进行相同的转换,以便我可以直接查看二进制文件,而无需事先下载和转换它们。

经过多次搜索,我认为这行代码应该可以工作。我获取二进制文件,通过 GZip 解压缩并将其转换为 Excel 文件。

= Table.AddColumn(billing_T_ARCHIVE_SUBSIDIARY, "ExcelFile", each Excel.Workbook(Binary.Decompress([FILE], Compression.GZip)))

在 Power Query 中,它看起来像这样:

错误信息是: “DataFormat.Error:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。”

如果我在 Power Query 中将二进制文件更改为文本,它看起来是一样的

所以我将代码更改为这个,但同样的错误:

 Table.AddColumn(#"Transformed Column", "ExcelFile", each Excel.Workbook(Binary.Decompress(Binary.FromText([FILE], BinaryEncoding.Base64), Compression.GZip)))

我不太确定问题出在哪里,我只能在 Power Query 中找到未压缩的 zip 文件的解决方案,但这并没有真正帮助,因为在我看来,压缩和编码一定是问题所在。

php powerbi compression powerquery
1个回答
0
投票

由于变体数量众多,PQ 中的 Zip 文件时好时坏。您尝试过这里的功能吗:

http://sql10.blogspot.com/2016/06/reading-zip-files-in-powerquery-m.html

© www.soinside.com 2019 - 2024. All rights reserved.