2013-04-18 3 views
1

У меня есть вопрос, и я не смог найти ответ (ни в этом форуме, ни другого) Ищу:MDX запросов процентиль 25-го, 50-м и семьдесят пятой

  • Мне нужно вычислить 25-й Percentile, средний (50-й процентиль) и 75-й процентиль.

Ввод в Другими словами: мне нужно написать в запросе MDX в SSRS для того, чтобы сказать мне, какие данные 25-й, медиана и 75-й

Все, что я смог найти до сих пор было не точные значения каждого из них

благодарит

ответ

0

Я работаю по тому же вопросу для своих собственных данных. Проблема, с которой я столкнулась, заключается в определении функции Median(). Вот как интерпретировать параметры функции:

определение от Microsoft: MEDIAN (Set_Expression [, numeric_expression])

Моя интерпретация: Set_Expression это множество значений, которые определяют зерно, которое суммируется мера до того, как медиана оцениваются

numeric_expression является мерой, которая суммируется, что множество сумм затем сортируются и оцениваются, чтобы найти медиану

в моем случае для нахождения прямой медианы по всем данным как таковых t, я не хотел вообще суммировать значения. Чтобы предотвратить вычисление любых сумм, я использовал ключевой атрибут для измерения с мощностью 1-1 с записями в таблице фактов, содержащей меру, которую я использую. Единственный недостаток, который я видел до сих пор, заключается в том, что иногда медиан возвращает целое число, когда есть четное количество записей, а среднее из двух средних записей должно приводить к числу, оканчивающемуся на .5. Например, значения двух средних записей - 16 и 17, а функция возвращает 17 вместо 16.5. Поскольку это незначительный недостаток, я готов упустить его пока.

Это то, что выглядит мой расчет с медианой функции, как:

WITH MEMBER Measures.[Set Median] AS MEDIAN(
    [Dimension].[Key Attribute].MEMBERS 
    ,Measures.[Non-summable Measure] 
) 

Я использовал комбинацию медианы и TopCount, чтобы получить 75-й процентиль. Я использую TopCount для ограничения набора для медианы ко второй половине данных, поскольку TopCount сортирует данные в порядке убывания. Я объясню, как я понимаю TopCount:

определение от Microsoft: TopCount (Set_Expression, граф [, numeric_expression])

Моя интерпретация: Set_Expression это множество значений, из которых будет нужное количество кортежей вернулся

Count это число кортежей, чтобы вернуться из множества

numeric_expression это значение, которое будет использоваться для сортировки набора в порядке убывания

Я хочу, чтобы функция Median использовала последнюю половину записей в таблице фактов, которые возвращаются в запросе, поэтому я снова использую ключ для таблицы измерений, которая имеет 1-1 мощность с таблицей фактов, и я сортирую это мерой, из которой я хочу найти медианное значение.

Вот как я закодирован элемент:

MEMBER Measures.[75th Percentile] AS MEDIAN(
    TOPCOUNT(
     [Dimension].[Key Attribute].MEMBERS 
     ,Measures.[Fact Table Record Count]/2 
     ,Measures.[Non-summable Measure] 
    ) 
    ,Measures.[Non-summable Measure] 
) 

До сих пор эта комбинация функций вернула истинный 75-й процентиль из моего набора данных. Чтобы получить 25-й процентиль, я попытался заменить TOPCOUNT в моем коде BOTTOMCOUNT, который должен делать то же самое, только сортируя данные в порядке возрастания, чтобы использовать первую половину записей вместо второй половины. К сожалению, я не смог получить ничего, кроме NULL, из этой комбинации функций, поэтому я открыт для предложений о том, как получить 25-й процентиль.

Это как мой последний запрос выглядит:

SELECT 
    { 
     Measures.[Set Median] 
     ,Measures.[25th Percentile] 
     ,Measures.[75th Percentile] 
    } ON 0 
    ,[Dimensional row members here] ON 1 
FROM [Cube] 
WHERE 
    [Non-axis dimensional filter members here] 
Смежные вопросы