У меня есть модель PowerPivot, в которой источником Power Query является источник. Можно ли из этого создать автономный куб?
Я пытался создать сводную таблицу из PP и затем использовать метод pivotttable.createcubefile, но получил ошибку:
A cube file cannot be created from another cube file. The source "$Embedded$" is a cube file.
Я также пробовал соединения ADODB и ADOMD.
Для ADODB описанный здесь подход работает для написания CSV: https://www.kasperonbi.com/export-a-table-or-dax-query-from-power-pivot-to-csv-using-vba/
Но я не могу запустить запрос MDX, такой как
CREATE GLOBAL CUBE
Для ADOMD я попробовал подход отсюда https://www.engram9.info/excel-2007-vba-2/creating-an-offline-cube-using-ado-md-and-vba.html
Но код не удается установить свойство ActiveConnection для объекта ADOMD.Catalog. Я использую
ThisWorkbook.Model.DataModelConnection.ModelConnection.ADOConnection
при установке свойства ActiveConnection.
Полный код, который я использую atm
Option Explicit
Public Sub Create_Local_Cube()
Dim ObjCatalog As New ADOMD.Catalog
Dim ObjCellset As New ADOMD.Cellset
Dim StrConnection As String
Dim strmdx As String
ThisWorkbook.Model.Initialize
'Create connection string
'StrConnection = StrConnection & "Provider=MSOLAP;Data Source=D4SBY981;"
'StrConnection = StrConnection & "Initial Catalog=AdventureWorks;"
StrConnection = "Provider=MSOLAP.5;Persist Security Info=True;Initial Catalog=Microsoft_SQLServer_AnalysisServices;Data Source=$Embedded$;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Subqueries=0;Optimize Response=7;Update Isolation Level=2"
'Create the MDX Query
strmdx = strmdx & "CREATE GLOBAL CUBE [MyCustomCube]"
strmdx = strmdx & "STORAGE 'C:\MyCustomCube.cub' "
strmdx = strmdx & "FROM [mergeMarinDs] "
'StrMDX = StrMDX & "("
'StrMDX = StrMDX & "MEASURE [Analysis Services Tutorial].[Internet Sales-Sales Amount], "
'StrMDX = StrMDX & "DIMENSION [Analysis Services Tutorial].[Customer], "
'StrMDX = StrMDX & "DIMENSION [Analysis Services Tutorial].[Product]"
'StrMDX = StrMDX & ")"
strmdx = "EVALUATE mergeMarinDs"
'Feed the cellset object your MDX Query
ObjCellset.source = strmdx
'Point catalog and cellset objects to the data source using your connection string
ObjCatalog.ActiveConnection = ThisWorkbook.Model.DataModelConnection.ModelConnection.ADOConnection
ObjCellset.ActiveConnection = ThisWorkbook.Model.DataModelConnection.ModelConnection.ADOConnection
'Open Cellset and fill the local cube
ObjCellset.Open
'Clean up
Set ObjCatalog = Nothing
Set ObjCellset = Nothing
End Sub
Я также пытался извлечь файл item.data из сжатой книги, но я не знаю, как восстановить этот файл при переходе в формат .abf, как объяснено на слайде 13 этой презентации https://slideplayer.com/slide/8455428/
Какой-нибудь совет, можно ли экспортировать модель PP как автономный куб?