我在.NET中編寫存儲過程來執行一些複雜的計算,這些計算不能在純MDX中輕鬆編寫。我遇到的第一個問題是如何以表格形式檢索一組數據以傳遞給我的計算。分析服務存儲過程性能
到目前爲止我的代碼如下寫入。我會想,當我們在位置** 1處檢索到我們的值後,我們會讓內存中的所有數據與之交互。但是,似乎在位置* * 2上,查詢子多維數據集將在我們的範圍內的每一天發佈到存儲引擎。這對性能是毀滅性的。
有什麼我做錯了嗎?我可以調用另一種方法來一次評估該集合嗎?
// First get the date range that we'd like to calculate over.
// (These values are constant here for example only)
DateTime date = new DateTime(2012, 4, 1);
int dateFrom = KeyFromDate(date.AddDays(-360));
int dateTo = KeyFromDate(date);
string dateRange = string.Format(
"[Date].[Date].&[{0}]:[Date].[Date].&[{1}]",
dateFrom,
dateTo
);
Expression expression = new Expression(dateRange + "*[Measures].[My Measure]");
MDXValue value = expression.CalculateMdxObject(null); // ***1
foreach (var tuple in value.ToSet().Tuples)
{
MDXValue tupleValue = MDXValue.FromTuple(tuple).ToInt32(); // ***2
}
您如何連接到您的多維數據集以獲取數據?您是否在使用ADOMD?如果是的話你使用ExecuteCellSet,ExecuteXmlReader或somethignelse? – Rick
我寫在Microsoft.AnalysisServices.AdomdServer命名空間[鏈接](http://msdn.microsoft.com/en-us/library/microsoft.analysisservices.adomdserver.expression一個Analysis Services存儲過程和表達類。 calculatemdxobject%28v = sql.105%29.aspx)連接到多維數據集。 Adomd不適用於在客戶端應用程序中使用。 – Brett