Сводная таблица в кубе SSAS: скрыть строки без результата измерения

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

Рассмотрим следующий источник данных для группы мер:

+---------+----------+----------+----------+--------+
| invoice | customer | subtotal | shipping | total  |
+---------+----------+----------+----------+--------+
| 1       | a        | 12.95    | 2.50     | 15.45  |
| 2       | a        | 7.50     |          | 7.50   |
| 3       | b        | 125.00   |          | 125.00 |
+---------+----------+----------+----------+--------+

При попытке создать сводную таблицу на основе группы мер в кубе SSAS это может привести к следующему:

введите здесь описание изображения

Однако я хотел бы скрыть строку для Customer b, так как в данной сводной таблице нет результатов. Я пытался использовать Параметры сводной таблицы -> Показать -> Показать элементы без данных в строках, но это работает только для отображения/скрытия клиента, который вообще не упоминается в данной группе мер, скажем, Customer c.

Есть ли способ скрыть строки без результатов для данной меры без создания отдельной группы мер WHERE shipping IS NOT NULL?

Я использую SQL-сервер 2008 и Excel 2013

Редактировать:

Для пояснения, я использую Excel для подключения к кубу SSAS. Полученная сводная таблица (в Excel) выглядит как данное изображение.


person Menno    schedule 12.02.2016    source источник
comment
Пожалуйста, покажите запрос, который вы используете в данный момент...   -  person Shnugo    schedule 12.02.2016
comment
@Shnugo: Поскольку я использую Excel для подключения к кубу SSAS, я не использую никаких запросов. Я отметил это в вопросе, так как кажется, что это было неясно (достаточно).   -  person Menno    schedule 12.02.2016
comment
@Aquillo отправляет расчетную меру физической меры. Когда вы нажимаете на пустую ячейку доставки для клиента Б, что вы видите в строке формул? Какова ваша строка формата в измерении доставки?   -  person GregGalloway    schedule 12.02.2016
comment
@GregGalloway это физическая мера, хотя, если в этом случае необходима расчетная мера, я обязательно ее учту. Обратите внимание, что я надеюсь на «всестороннее» решение для этого, использование измерения Customer является простым примером. Если то, о чем я прошу, невозможно и для каждого случая нужен индивидуальный расчет, то так тому и быть, но по крайней мере я буду знать.   -  person Menno    schedule 12.02.2016
comment
@Aquillo, можешь ответить на все мои вопросы выше?   -  person GregGalloway    schedule 13.02.2016
comment
@GregGalloway ячейка не содержит какой-либо функции, она просто содержит числовое значение, предоставленное кубом SSAS. FormatString для меры: #,##0.00;-#,##0.00   -  person Menno    schedule 13.02.2016
comment
@Aquillo, поэтому при нажатии на пустую ячейку доставки не отображается 0 (ноль) в строке формул. Я просто проверял, есть ли в этой ячейке значение, скрытое форматированием. Вы уверены, что в строке формул нет нуля?   -  person GregGalloway    schedule 13.02.2016
comment
@GregGalloway На самом деле в строке формул отображается ноль.   -  person Menno    schedule 15.02.2016
comment
@ Акилло ах! Хорошо. Отредактировал мой ответ. Это должно решить проблему.   -  person GregGalloway    schedule 15.02.2016


Ответы (3)


В DSV найдите таблицу со столбцом доставки и добавьте вычисляемый столбец с выражением:

Case when shipping <> 0 then shipping end

Перейдите в окно свойств показателя «Доставка» в конструкторе кубов в BIDS и измените свойство NullHandling на «Сохранить». Измените исходный столбец на новый вычисляемый столбец. Затем выполните повторное развертывание, и я надеюсь, что строка в вашей опорной точке исчезнет.

И убедитесь, что Параметры сводной таблицы -> Отображение -> Показать элементы без данных в строках не отмечены.

Если это все еще не помогает, подключите окно Object Explorer Management Studio к SSAS и сообщите нам, какой номер версии он показывает в узле сервера. Возможно, вы не используете последний пакет обновлений, и это ошибка.

person GregGalloway    schedule 13.02.2016
comment
Пытался использовать свойство Preserve as NullHandling со снятым флажком. Никаких изменений, я думаю, это потому, что на самом деле есть строки для данного члена, но не со значениями для данной меры. Версия 10.50.6000.34. - person Menno; 15.02.2016
comment
Проблема в том, что, несмотря на то, что в исходной таблице нет нулевых значений, Excel все равно показывает ноль. Быстрый запрос на WHERE shipping = 0 не дает никаких результатов. Мера (группа) основана непосредственно на таблице, нет именованного запроса или выражения. - person Menno; 16.02.2016
comment
@Aquillo, если вы закомментируете весь свой сценарий MDX, кроме CAlCULATE, он все еще говорит 0? У вас есть где доставка нулевых строк? Вы правильно установили NullHandling = Preserve? Нулевые значения сохраняются в службах SSAS как 0, если вы не измените этот параметр меры. - person GregGalloway; 16.02.2016
comment
Грег, большое спасибо за помощь. Кажется, свойство NullHandling решило проблему. Мне непонятно, почему предыдущая проверка не исправила это, но я предполагаю, что это связано с фактом повторной обработки или чем-то в этом роде. - person Menno; 17.02.2016

Перейдите в свою сводную таблицу в Excel, щелкните раскрывающийся список в столбце вашего клиента. В раскрывающемся меню вы найдете параметр Фильтры значений. Там вы можете установить что-то вроде Доставка больше 0,1.

Это фильтрует столбец измерения "Клиент" на основе значений меры.

person Zsombor Zsuffa    schedule 04.11.2018

Может быть, что-то вроде этого (но я не вижу стержня...)

DECLARE @tbl TABLE(invoice INT,customer VARCHAR(10),subtotal DECIMAL(8,2),shipping DECIMAL(8,2),total DECIMAL(8,2));
INSERT INTO @tbl VALUES
 (1,'a',12.95,2.50,15.45)
,(2,'a',7.50,NULL,7.50)
,(3,'b',125.00,NULL,125.00);

SELECT customer, SUM(shipping) AS SumShipping
FROM @tbl 
GROUP BY customer
HAVING SUM(shipping) IS NOT NULL
person Shnugo    schedule 12.02.2016
comment
Это SSAS, а не SQL - person GregGalloway; 12.02.2016