Есть ли способ указать или принудительно указать тип данных вычисляемого элемента?
У меня есть тип данных каждой меры в моем кубе, указанный как Currency
, У меня также есть просчитанные участники, некоторые из них имеют iif(isempty([Measures].[Measure1]) or [Measures].[Measure1] = 0, null, 100 * [Measures].[Measure2] / [Measures].[Measure1])
логика.
Я получаю доступ к этому кубу с помощью MdxClient (он использует AdomdCommand.ExecuteXmlReader
внутренне) и заметили, что некоторые из этих вычисленных членов возвращаются как xsd:double
не xsd:decimal
, Поэтому я предполагаю, что они рассчитываются как Double
не Currency
, Результаты запроса сопоставляются со строго типизированным набором данных на стороне клиента, поэтому возвращаемый тип важен для меня.
Я могу "заставить" SSS вернуться xsd:decimal
оборачивая каждый из членов с VBA!CDec
или просто CDec
, но это серьезно ухудшает производительность.
Есть ли более умный способ установить или заставить вычисляемый элемент быть Currency
? Или, по крайней мере, будет возвращен как xsd:decimal
от AdomdCommand.ExecuteXmlReader
?
2 ответа
Иметь код вычисляемого члена следующим образом:
MEMBER [Measures].[CurrencyMeasure]
AS
iif(isempty([Measures].[Measure1]) or
[Measures].[Measure1] = 0, null,
100 * [Measures].[Measure2] / [Measures].[Measure1]), FORMAT_STRING="Currency"
Я считаю, что невозможно установить тип данных ваших рассчитанных мер. Тип данных будет назначен на основе показателей, используемых в ваших расчетах, а также типа вычислений, которые вы выполняете.