2015-02-18 3 views
1

У меня есть тип данных каждой меры в моем кубе, указанный как Currency. У меня также есть расчетные члены, некоторые из них имеют логику iif(isempty([Measures].[Measure1]) or [Measures].[Measure1] = 0, null, 100 * [Measures].[Measure2]/[Measures].[Measure1]).Есть ли способ указать или заставить тип данных вычисляемого элемента?

Я Заходя на этот куб, используя MdxClient (он использует AdomdCommand.ExecuteXmlReader внутренне) и заметил, что некоторые из этих вычисленных членов возвращаются как xsd:double не xsd:decimal. Поэтому я предполагаю, что они рассчитаны как Double не Currency. Результаты запроса сопоставляются с строго типизированным набором данных на стороне клиента, поэтому возвращаемый тип мне очень важен.

Я могу «заставлять» ssas возвращать xsd:decimal путем обертывания каждого из калорированных элементов VBA!CDec или просто CDec, но это серьезно ухудшает производительность.

Есть ли более разумный способ установить или заставить расчетный элемент быть Currency? Или, по крайней мере, возвратить как xsd:decimal по AdomdCommand.ExecuteXmlReader?

ответ

0

Я считаю, что невозможно установить тип данных ваших рассчитанных мер. Тип данных будет назначаться на основе мер, используемых в вашем расчете, а также типа расчета, который вы выполняете.

0

есть код вычисляемого элемента таким образом:

MEMBER [Measures].[CurrencyMeasure] 
AS 
iif(isempty([Measures].[Measure1]) or 
[Measures].[Measure1] = 0, null, 
100 * [Measures].[Measure2]/[Measures].[Measure1]), FORMAT_STRING="Currency" 
+0

Спасибо, но вы говорите о формате строке, а не типе данных вычисляемого элемента. –