Динамическое использование функции MDX AVG - PullRequest
1 голос
/ 03 октября 2011

У кого-нибудь есть совет, как построить среднюю меру, которая является динамической - она ​​не указывает конкретный фрагмент, а вместо этого использует ваш текущий вид?Я работаю во внешней программе просмотра OLAP (Strategy Companion), и мне нужна «динамическая» реализация, основанная на измерениях, которые в данный момент фильтруются в представлении данных.

Моя таблица фактов выглядит примерно так:

Key AmountA  IndicatorA  AmountB  Other Data
1   5        1           null     25
2   6        1           null     52
3   7        1           2        106
4   null     0           4        108

Теперь я могу указать простое среднее значение для «[Меры]. [AmountA]» с «[Меры]. [AmountA] / [Меры]. [IndicatorA]», которое прекрасно работает - «IndicatorA] "суммирует количество ненулевых значений" [AmountA] ".И это также прекрасно работает независимо от того, какие измерения выбраны в представлении - оно всегда делится на количество отфильтрованных строк.

Но как насчет [AmountB]?У меня нет нулевого столбца индикатора.Я хочу получить среднее значение [AmountB] для всех строк, которые были отфильтрованы для моего текущего представления.Если я пытаюсь использовать количество строк в качестве простой формулы (псевдо-код "[Меры]. [AmountB] / Количество ([Меры]. [Ключ])"), я получаю неправильный результат, потому что он считает всепустые строки в среднем.

Итак, мне нужен способ использовать функцию AVG, чтобы указать среднее значение [AmountB] по набору «любых строк, по которым я в данный момент фильтрую, на основе любых измерений, которые яв настоящее время использую ".Как мне указать этот динамический набор?

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

Спасибо, Мэтт

1 Ответ

0 голосов
/ 04 октября 2011

Извините, мое первое предложение было неверным.Если у вас нет доступа к кубу OLAP, вы не можете написать mdx-запрос для этой цели (IMHO).Потому что у вас нет подробных данных (из таблицы фактов) на этом уровне доступа, и вы можете использовать только агрегированные данные и измерения из вашего куба.В противном случае (если у вас есть доступ к olap db), вы можете создать эту метрику (количество не NULL строк) в своей группе мер, а затем использовать ее для вычисления AVG (как вычисляемый элемент в вашем кубе или в разделе «WITH» в вашемMDX-запрос).

...