2013-10-25 2 views
2

В MDX, как вы заполните нулями Нулевая/пустые значения, например:Как заполнить результат в MDX - Mondrian

Если у меня есть измерение A и две меры X и Y, после MDX запроса I получил это:
(«-» означает «нуль» или «пустые» значения)

 X Y 
A.A1 1 - 
A.A2 - 2 
A.A3 - - 

Если я использую «NON EMPTY» A.A3 нет, но при попытке использовать CoalesceEmpty заполнить нулями я получил это:

 X Y 
A.A1 1 0 
A.A2 0 2 
A.A3 0 0 

Предположим, что существует слишком много кортежей, таких как A.A3, и я не хочу показывать тогда, как я могу заполнить пустые значения нулем и не показывать пустые ячейки во всех столбцах.

результат должен быть:

 X Y 
A.A1 1 0 
A.A2 0 2 

Примечание: Я попытался с filter, но я не получил каких-либо улучшений

+0

Еще довольно неясного ВГА у вас пытаются сказать или сделать. попробуйте уточнить, что вы пытаетесь сделать? Изменить пустые вещи на 0? удалить их полностью, если они все пусты? и т.д? – UpAndAdam

+0

Я немного разъясняю свой вопрос, я хочу «Изменить пустые вещи на 0» и «полностью удалить их, если они все пусты». спасибо – aptiliux

ответ

0

Я не уверен, если это поддерживается в Мондриана, но в Analysis Services , вы могли бы использовать HAVING на оси строк, как это:

SELECT {Measures.X, Measures.Y} 
     ON COLUMNS, 
     A.Members 
     HAVING Measures.X <> 0 AND Measures.Y <> 0 
     ON ROWS 
    FROM MyCube 

в отличие от NON EMPTY, который выглядит только на пустой (т.е. NULL), для HAVING, вы можете указать это условие самостоятельно. И в Analysis Services числовое сравнение обрабатывает NULL так же, как и ноль, поэтому выше условие исключает нуль и нуль.

Другой подход - немного в зависимости от клиентского инструмента - было бы остаться с MDX с помощью NON EMPTY и не использовать CoalesceEmpty, но преобразовать значения NULL в 0 через FORMAT_STRING. Это требует, чтобы клиентский инструмент использовал строку формата или форматированное значение, поставляемое кубом, а не реализовал собственное форматирование чисел.

+0

ваш ответ довольно правильный, я решил свою проблему, используя «non empty» и format_string = '# 0 ;;; 0'. Mondrian не поддерживает «наличие», спасибо – aptiliux

0

Я злоупотребляя «FORMAT_STRING» !, я применяла только один формат, благодаря этой ссылке http://social.msdn.microsoft.com/Forums/en-US/2715b737-a9a5-4094-8235-df71e92b7bb2/how-to-remove-null-values-in-mdx, которые относятся к этой ссылке http://msdn.microsoft.com/en-us/library/ms146084.aspx

правильный формат для числовых значений:

FORMAT_STRING = «# 0 ;;; 0»

где последнее значение является форматом для нулевых значений

Смежные вопросы