我在.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