我正在使用 Pythonnet 查询多维数据集并在 System.Data 的数据集中返回结果。现在我想将 DataSet 转换为 Pandas 的数据框。
完整代码:
clr.AddReference("r"C:\Windows\assembly\GAC_MSIL\Microsoft.AnalysisServices.AdomdClient\11.0.0.0__89845dcd8080cc91\Microsoft.AnalysisServices.AdomdClient.dll"")
clr.AddReference ("System.Data")
from Microsoft.AnalysisServices.AdomdClient import AdomdConnection , AdomdDataAdapter
from System.Data import DataSet
conn = AdomdConnection("Data Source=tooldata.amr.xxx.com;Catalog=someDB;")
conn.Open()
cmd = conn.CreateCommand()
cmd.CommandText = "your mdx query"
adp = AdomdDataAdapter(cmd)
datasetParam = DataSet()
adp.Fill(datasetParam)
#convert datasetParam into Pandas' dataframe?
conn.Close();
有没有简单的方法可以做到这一点?
要使用 pythonnet 从olap获取数据,您可以使用mdx-to-pd
from mdx_to_pd import mdx_retriever
connection = "Data Source=https://biserver.company.com/database/;Catalog=Model;"
query = """
SELECT NON EMPTY [Measures].[Order Count] ON COLUMNS,
NON EMPTY ([Markets].[Country].[Country]) ON ROWS
FROM [OLAP_CUBE]
"""
# returns pd.DataFrame()
df = mdx_retriever(query, connection)