2015-04-03 90 views
3

我總是使用python獲取MDX查詢中的單個值。我正在連接到具有xmla支持的icCube。python olap.xmla mdx查詢返回單個值?

provider = xmla.XMLAProvider() 
con = provider.connect(location='conn_str',username='q1',password='q2') 
cmd="""WITH MEMBER Measures.[Avg Profit Margin] AS Sum(SOMETHING, Measures.[Profit Margin]) select NON EMPTY {[Measures].[Profit Margin]} ON columns, {[Client Country]} ON rows FROM [XYZ]""" 

res=con.Execute(cmd,Catalog="cube_closed_contracts") 
print res.getSlice() 

爲什麼它總是返回單個值?

[[(Cell){ 
    _CellOrdinal = "0" 
    Value = 0.0358054 
    FmtValue = "3.58%" 
    }]] 

回答

1

您確定MDX查詢預計會返回多個單元嗎?

WITH MEMBER Measures.[Avg Profit Margin] AS ... 
select 
     NON EMPTY {[Measures].[Profit Margin]} ON columns, 
     {[Client Country]} ON rows 
FROM [XYZ] 

「[Client Country] on rows」表示[Client Country]的默認成員,所以我相信這會返回單個單元格結果。我會在icCube MDX編輯器中嘗試請求。

希望有所幫助。

+2

感謝您的建議。我能夠在MDX編輯器中修改查詢和測試。我仍然不知道爲什麼python xmla包不會從res對象返回列名稱。在iccube裏面,我可以輸入mdx查詢,並得到一個很好格式化的表,列名等。在python界面中,它只是值。 – 2015-04-03 08:22:26