Есть ли способ указать или принудительно указать тип данных вычисляемого элемента?

У меня есть тип данных каждой меры в моем кубе, указанный как 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"

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

Другие вопросы по тегам