Создание меры MDX в Excel для подсчета элементов одного измерения на основе другого измерения - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь создать меру MDX в Excel (в инструментах OLAP), которая будет подсчитывать количество элементов для каждого другого элемента в другом измерении. Поскольку я не знаю точного синтаксиса и обозначений для кубов MDX и OLAP, я попытаюсь просто объяснить, что я хочу сделать:

У меня есть сводная таблица на основе куба OLAP. У меня есть поле «Номер машины», хранящееся в одном измерении, которое является «родительским», и для каждого номера машины есть количество произведенных изделий (за определенный период времени). Эти статьи представлены номерами заказов. Эти числа хранятся в другом измерении. Я бы хотел, чтобы мера подсчитала, сколько существует номеров заказов для каждого номера машины.

Итак, таблица выглядит так:

+------------------+----------------+
| [Machine Number] | [Order Number] |
+------------------+----------------+
| Machine001       |                |
|                  |      111111111 |
|                  |      222222222 |
|                  |      333333333 |
| Machine002       |                |
|                  |      444444444 |
|                  |      555555555 |
|                  |      666666666 |
|                  |      777777777 |
+------------------+----------------+

и я хотел бы, чтобы результат был:

+------------------+----------------+------------+
| [Machine Number] | [Order Number] | [Measure1] |
+------------------+----------------+------------+
| Machine001       |                |          3 |
|                  |      111111111 |            |
|                  |      222222222 |            |
|                  |      333333333 |            |
| Machine002       |                |          4 |
|                  |      444444444 |            |
|                  |      555555555 |            |
|                  |      666666666 |            |
|                  |      777777777 |            |
+------------------+----------------+------------+

Я также пытался использовать функцию COUNT с EXISTING, но это не сработало (всегда показывает 1 или одно и то же неправильное число для каждой машины). Я считаю, что мне нужно каким-то образом соединить эти два измерения, чтобы номер заказа зависел от номера машины, но мне не хватает знаний о кубах MDX и OLAP, и я даже не знаю, как спросить Google, как это сделать. Заранее благодарим за любые советы и решения.

1 Ответ

1 голос
/ 29 марта 2019

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

На основе приведенного выше постановки задачи в кубе OLAP таблица фактов или показатель определяют отношения между атрибутами различного измерения, связанными с таблицей Measure \ Fact-Table.Посмотрите на приведенный ниже пример. (Я использовал пример SSAS db Adventureworks)

- Я пытаюсь найти рекламные акции, которые были предложены для каждой категории продуктов.выберите [Показатели]. [Объем продаж через Интернет] в столбцах, ([Продукт]. [Категория]. [Категория], [Продвижение]. [Продвижение]. [Продвижение]) в строках из [Adventure Works]

Результат enter image description here Результатом является перекрестное произведение всех категорий товаров и рекламных акций.Теперь давайте заставим куб возвращать только допустимые комбинации.

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

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

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

Альтернативный запрос

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]
...