Добро пожаловать в MDX.У вашего квеста есть проблема.Когда вы говорите, что хотите считать «наименования продуктов на еженедельной основе», вам нужно будет подсчитать их на основе фактов.Так, например, количество продуктов, которые были проданы на этой неделе.То, как вы рассчитываете, в основном учитывает все продукты в вашем измерении.
Для примера ниже я использую приключенческие работы.
В приведенном ниже примере я хочу знать, сколько типов продуктов было продано за неделю 1. Здесь речь идет о количестве типов продуктов, а не единиц.Запрос ниже делает это.
select [Measures].[Internet Sales Amount] on columns,
non empty
([Date].[Calendar Week of Year].&[1],[Product].[Product].[Product])
on rows
from [Adventure Works]
Результат:
Результат Результат
Уведомленияв результате счет показывает 97 строк.это означает, что было продано 96 товаров, результат также включает имя столбца, следовательно, количество равно 97.
Теперь давайте взглянем на запрос, который решает вашу проблему.
with member
[Measures].[Test]
as
count(
filter
(([Date].[Calendar Week of Year].currentmember, [Product].[Product].[Product]),[Measures].[Internet Sales Amount]>0)
)
select
[Measures].[Test]
on columns,
[Date].[Calendar Week of Year].[Calendar Week of Year]
on rows
from [Adventure Works]
Результат
Таким образом, это показывает, что 96 продуктов были проданы.
Логика запроса заключается в том, что мы подсчитываем все продукты, у которых> 0 продаж за неделю.«.currentmember» переводит на текущую неделю, поэтому мы можем рассчитывать на любую неделю.