Ваша проблема в основном в том, что у вас есть два атрибута в разных измерениях.Вы хотите получить действительные комбинации этих атрибутов, а затем подсчитать количество доступных значений атрибута в атрибуте sceond на основе значения первого атрибута.
На основе приведенного выше постановки задачи в кубе OLAP таблица фактов или показатель определяют отношения между атрибутами различного измерения, связанными с таблицей Measure \ Fact-Table.Посмотрите на приведенный ниже пример. (Я использовал пример SSAS db Adventureworks)
- Я пытаюсь найти рекламные акции, которые были предложены для каждой категории продуктов.выберите [Показатели]. [Объем продаж через Интернет] в столбцах, ([Продукт]. [Категория]. [Категория], [Продвижение]. [Продвижение]. [Продвижение]) в строках из [Adventure Works]
Результат
Результатом является перекрестное произведение всех категорий товаров и рекламных акций.Теперь давайте заставим куб возвращать только допустимые комбинации.
select
[Measures].[Internet Sales Amount]
on columns,
nonempty(
([Product].[Category].[Category],[Promotion].[Promotion].[Promotion])
,[Measures].[Internet Sales Amount])
on rows
from
[Adventure Works]
Результат ![enter image description here](https://i.stack.imgur.com/Hcv7q.jpg)
Теперь мы указали, что ему нужно возвращать только допустимые комбинации.Обратите внимание, что мы предоставили меру, которая принадлежала факту, соединяющему два измерения.Теперь давайте посчитаем их
with member
[Measures].[test]
as
count(
nonempty(([Product].[Category].currentmember,[Promotion].[Promotion].[Promotion]),[Measures].[Internet Sales Amount])
)
select
[Measures].[Test]
on columns,
[Product].[Category].[Category]
on rows
from
[Adventure Works]
Результат ![enter image description here](https://i.stack.imgur.com/CXslb.jpg)
Альтернативный запрос
with member
[Measures].[test]
as
{nonempty(([Product].[Category].currentmember,[Promotion].[Promotion].[Promotion]),[Measures].[Internet Sales Amount]) }.count
select
[Measures].[Test]
on columns,
[Product].[Category].[Category]
on rows
from
[Adventure Works]