2010-04-19 10 views
5

Sto cercando un modo per connettermi a un cubo OLAP di MS Analysis Services, eseguire query MDX ed estrarre i risultati in Python. In altre parole, esattamente ciò che fa Excel. C'è una soluzione in Python che mi permetterebbe di farlo?API OLAP di MS Analysis Services per Python

Qualcuno con una domanda simile che puntava sull'ORM di Django. Per quanto mi piaccia il framework, questo non è quello che sto cercando. Inoltre, non sto cercando un modo per estrarre le righe e aggregarle: questo è il motivo per cui Analysis Services è destinato in primo luogo.

Idee? Grazie.

+0

Hai provato a racchiudere il file adomd.dll? Stavo per fare un tentativo. –

risposta

3

Sono completamente all'oscuro di Python, ma se è in grado di chiamare DLL, dovrebbe essere in grado di utilizzare l'oggetto ADOMD di Microsoft. Questa è l'opzione migliore che riesca a pensare.

È possibile visualizzare Office Web Components (OWC) poiché ha un controllo OLAP che può essere incorporato in una pagina Web. Penso che tu possa trasmettere MDX ad esso, ma forse vuoi che Python veda anche i risultati, che non credo consenta.

Altrimenti è possibile creare il proprio "proxy" in un'altra lingua. Questo programma/pagina web potrebbe accettare MDX in e restituire XML mostrando i risultati. Python potrebbe quindi utilizzare questo XML.

+0

Per quanto ne so, può chiamare DLL. Il problema è che sono così poco documentati. In realtà, lo stesso si applica al protocollo di comunicazione client-server OLAP. Vorrei implementare un client in Python (o provare a farlo) ma non riesco a trovare nulla da nessuna parte. Qualche indicazione? – ktdrv

+0

Trova un esempio Python che mostra come chiamare una DLL. Quindi installare "Componenti client" di MS SQL Server sulla macchina di sviluppo e provare a modificare l'esempio di Python per chiamare adomd.dll e utilizzare la documentazione di Microsoft per indicare quali classi/oggetti/proprietà utilizzare. In VBScript faremo Server.CreateObject ("ADOMD.Cellset") –

7

questo può essere fatto facilmente usando pythonnet:

http://pythonnet.github.io/

Si carica la Microsoft.AnalysisServices.dll che viene fornito con SQL Server 2005 e 2008 o ottenete il pacchetto ridistribuibile qui:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4

ricerca di SQLSERVER2008_ASAMO10.msi

Quindi puoi caricarlo e usarlo. Ecco un esempio che elabora semplicemente i cubi:

import CLR 
from CLR.System.Reflection import Assembly 

Assembly.LoadWithPartialName("AnalysisServices.DLL") 

from CLR.Microsoft.AnalysisServices import Server 
from CLR.Microsoft.AnalysisServices import ProcessType 

serverName = 'localhost\sql2005' 
dbName = 'MyDatabase' 

# Connect to server 
amoServer = Server() 
amoServer.Connect(serverName) 

# Connect to database 
    amoDb = amoServer.Databases[dbName] 
    amoDb.Process(ProcessType.ProcessFull)