原方案是提供所有数据源给PowerBI,powerBI中写好逻辑。
每次流程执行需要登录powerBI客户端刷新报告,导出,可数据量实在太大,超过了PowerBI的限制(每次50000条?)。只能另想其他方案。
后来发现PowerBI中的power query也就是逻辑本身,可以在excel中通过外部数据源加载,于是把power query预先写入空白Excel的外部数据源,并做好加载为table。然后通过一组vba刷新该excel数据源即可实现全后台操作。
VBA代码如下,保存为txt文件
vbnet
Sub RefreshLoadedPowerQuery()
Const sheetName As String = "Query1" ' ← 改成你的工作表名
Const tableName As String = "Query1" ' ← 改成你的表名(ListObject 名)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(sheetName)
' 强制同步刷新
With ws.ListObjects(tableName).QueryTable
.BackgroundQuery = False
.Refresh
End With
End Sub
最后使用Uipath studio
1.excel application scope打开该Excel
2.invoke vba调用该txt文件
3.等待刷新完就可以读了
该方案实测实现55万行数据刷新,用时5分30秒,无额外限制。