MDX Query - Как заменить ноль на 0 в перекрестном соединении - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно заменить нули на 0 в результате перекрестного соединения запроса MDX.

Это мой запрос:


WITH

MEMBER [Measures].[X] AS

([Indicador].[Indicador Descrição].&[X],[Measures].[MONTANTE])

MEMBER [Measures].[Y] AS

([Indicador].[Indicador Descrição].&[Y],[Measures].[MONTANTE])

SELECT

NON EMPTY {[Measures].[X],[Measures].[Y]} ON COLUMNS,

NON EMPTY{[Classificador Orgânico].[A].children*

[Programas e Medidas].[A].children*

[Classificador Económico Despesa].[A].children*

[Classificador Económico Despesa].[B].children*

[Classificador Económico Despesa].[C].children*

[Classificador Económico Despesa Rubricas].[A].children*

[Classificador Económico Despesa Rubricas].[B].children*

[Fonte de Financiamento].[A].children} ON ROWS

FROM [Cube]

WHERE ([Calendar].[Year].&[2018],[Calendar].[Month].&[04])

Я уже пытаюсь использовать coalesceempty в вычисляемых членах, но заменяет все нули перед NonEmptyCrossjoin (запрос нечетный ответ).

Идеальным решением является замена нулей только после NonEmptyCrossjoin. Как правильно этого добиться?

Спасибо!

С уважением, Кристиана Диас

1 Ответ

0 голосов
/ 23 сентября 2019

Можете ли вы попробовать с:

WITH

MEMBER [Measures].[X] AS

([Indicador].[Indicador Descrição].&[X],[Measures].[MONTANTE]), FORMAT_STRING = '#,##0.00;-#,##0.00;;0'

MEMBER [Measures].[Y] AS

([Indicador].[Indicador Descrição].&[Y],[Measures].[MONTANTE]), FORMAT_STRING = '#,##0.00;-#,##0.00;;0'

SELECT

NON EMPTY {[Measures].[X],[Measures].[Y]} ON COLUMNS,

NON EMPTY{[Classificador Orgânico].[A].children*

[Programas e Medidas].[A].children*

[Classificador Económico Despesa].[A].children*

[Classificador Económico Despesa].[B].children*

[Classificador Económico Despesa].[C].children*

[Classificador Económico Despesa Rubricas].[A].children*

[Classificador Económico Despesa Rubricas].[B].children*

[Fonte de Financiamento].[A].children} ON ROWS

FROM [Cube]

WHERE ([Calendar].[Year].&[2018],[Calendar].[Month].&[04])

Я только что добавил FORMAT_STRING.Первый аргумент - как форматировать положительные значения, второй - как форматировать отрицательные значения, третий аргумент - как форматировать 0 значений, а четвертый аргумент - как форматировать NULL - вместо этого выведите 0.

Проблема с использованием CoalesceEmpty или isEmpty, подобных этой

IIF(ISEMPTY(([Indicador].[Indicador Descrição].&[X],[Measures].[MONTANTE])) , 0 , ([Indicador].[Indicador Descrição].&[X],[Measures].[MONTANTE]))  

, заключается в том, что вы заполняете пустые ячейки в кубе нулями, поэтому результирующий набор перекрестного соединения будет огромным, и запрос, вероятно, выиграетт финиш на всех.

...