MDX Расчетная мера

Ниже мое требование на картинке

Пример данных

1-я таблица имеет как минимум степень детализации. Среднее значение рассчитывается как Date + Place. Так что в среднем 565 = (2865/5),

Переход ко второй таблице. Среднее значение для места 702 равно 114, что правильно, а для 704 - 866, что тоже верно. Но окончательный ответ такой же, как и среднее значение для всех 5 записей.

Но мой вывод должен быть как в среднем Date + Place уровень для одного Date + Place но когда выбраны два места, оно должно быть средним на уровне места, а сумма на общем выходе.. окончательное значение должно быть 980 (сумма (114+866))

Может у кого-то есть решение для этого?

2 ответа

Решение

Как и в случае с любым средним значением в многомерном SSAS, вам нужно создать две физические меры. Первый - это сумма A, которая равна AggregateFunction=Sum. Вторым является счетчик строк, который представляет собой AggregateFunction=Count.

Более быстрый способ реализовать ваши расчеты с помощью этой рассчитанной меры:

SUM(
 EXISTING [Place].[Place].[Place].Members,
 DIVIDE( [Measures].[Sum of A], [Measures].[Count of Rows] )
)

Однако если вы хотите повысить производительность и правильно обрабатывать фильтры множественного выбора, создайте физическую меру с именем Avg A, которая будет AggregateFunction = Sum, для нового столбца в вашей таблице SQL, который всегда равен 0. Затем перезапишите значения в этой мере с помощью следующее заявление о сфере действия:

SCOPE([Place].[Place].[Place].Members);
     [Measures].[Avg A] = DIVIDE( [Measures].[Sum of A], [Measures].[Count of Rows] );
END SCOPE;

Попробуй это:

AvgA = SUMX(SUMMARIZE(Table2, Table2[Place], "A", AVERAGE(Table2[A])), [A])

Это займет среднее A группировка по каждому Place а затем подвести их итоги для промежуточного итога.

Другие вопросы по тегам