Экспорт набора записей Excel PowerPivot как автономного куба - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть модель 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 как автономный куб?

...