заставляя SSAS уважать отношения между измерениями - PullRequest
0 голосов
/ 22 января 2019

относительно следующего вопроса и данного ответа У меня следующий вопрос:

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

По причинам бюджетирования я должен показать всем клиентам, даже если они не соответствуют таблице фактов. Включение соответствующей опции в EXCEL явно приводит к перекрестному объединению выбранных измерений, что приводит к полному списку всех клиентов во всех странах, хотя не каждый клиент существует во всех странах.

Есть ли другой альтернативный аргумент, чтобы заставить SSAS уважать определенные отношения?

Большое спасибо заранее за помощь.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

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

выберите [Меры]. [Сумма интернет-продаж] в столбцах, - не пустой {фильтр (([Продукт]. [Подкатегория]. [Подкатегория], [Дата]. [Календарный квартал года]. [Календарный квартал года]), [Показатели]. [Сумма интернет-продаж]> 0), фильтр (([Продукт]. [Подкатегория]. [Подкатегория], [Дата]. [Квартал календаря года] .defaultmember), [Показатели]. [Сумма интернет-продаж] = ноль) } на рядах от [Приключенческие работы]

enter image description here

0 голосов
/ 23 января 2019

Допустим, у вас есть FactSales с CustomerKey, CountryKey, DateKey и SalesAmount.Когда вы строите сводную таблицу в Excel с Customer и Country по строкам и SalesAmount по столбцам, в ней отображаются только клиенты с продажами.Если вы настроите Excel для отображения строк без данных, это покажет всех клиентов во всех странах.

Попробуйте создать новую таблицу FactCustomerCountry только с CustomerKey и CountryKey.Создайте показатель Количество стран клиентов.

Затем создайте новый вычисляемый показатель:

CREATE MEMBER CURRENTCUBE.[Measures].[Sales Amount with Zeros]
AS
IIF(
 IsEmpty([Measures].[Customer Country Count]),
 Null,
 CoalesceEmpty([Measures].[SalesAmount], 0)
);

Используйте этот показатель в сводной таблице вместо SalesAmount.Не показывать строки без данных.Мера должна возвращать значимые комбинации Клиент-Страна и должна возвращать всех клиентов.

...