【问题标题】:Export M ( power query ) query result to csv导出M(power query)查询结果到csv
【发布时间】:2021-10-18 15:17:55
【问题描述】:

基本上,我有大约 50 个 Excel 工作表,其中包含要处理的信息。每个工作表内部都有一个电源查询脚本来清理信息。我需要以任何可能的方式自动化这个过程。

我已经下载了电源查询 SDK,在 Visual Studio 中我运行 .pq 文件并且它可以工作,但是我找不到将查询结果写入文件的方法(或将其直接插入到 sql server 表中)。

我试过this approach 并且它可以工作(在 Power BI 书上使用 R 将其导出到带有 write.table 命令的文件)。问题是我不知道如何在不打开书的情况下触发刷新。 (这样我就可以将它添加到工作列表中)。

power BI 中的每 X 次刷新选项在这里没有用,我需要在部分 sql 作业完成后触发刷新。所以我需要通过某种类型的 API 来触发。

欢迎任何类型的解决方案。

【问题讨论】:

  • 仅供参考,Power Query 的母语是 M,而不是 DAX。
  • 谢谢。我已经更正了。

标签: r powerbi powerquery m


【解决方案1】:

我有一个类似的任务,我正在使用 Powershell 脚本打开 excel 文件,刷新所有工作表,然后将每个工作表导出到 CSV。 然后根据需要简单地安排作业。

#Open XLSX Processor
$E = new-object -comobject excel.application
$E.Visible = $false
$E.DisplayAlerts = $true
$Workbook = $E.Workbooks.Open($File_XLSX)  

#Refresh all Queries
foreach ($conn in $Workbook.Connections){
  try{ $conn.OLEDBConnection.BackgroundQuery = $false } catch {}
  try{$conn.ODBCConnection.BackgroundQuery = $false } catch {}
}
$Workbook.RefreshAll()
$E.CalculateUntilAsyncQueriesDone()

# Export XLSX to CSV 
foreach ($Worksheet in $Workbook.Worksheets)
{
    $n = $File_XLSX + "_" + $Worksheet.Name
    $Worksheet.SaveAs($csvLoc + $n + ".csv", 6)
}
$Workbook.Close($false)

#Closing Excel
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Worksheet)|out-null
$Worksheet=$null
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Workbook)|out-null
$Workbook=$null
# Close Excel
$E.quit()
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($E)|out-null
$E=$null
[GC]::Collect()
[GC]::WaitForPendingFinalizers()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多