#function #qlikview
#функция #qlikview
Вопрос:
Я хочу рассчитать среднегодовой темп роста прибыли за 5 лет с помощью текстового объекта. Qlikview, похоже, не поддерживает вложенную агрегацию… Я новичок в QlikView, кто-нибудь может мне помочь?
Tried query:
='Annual Growth Rate (2003-2007) :' amp; avg((sum(Profit_per_Product)/sum(Total_Retail_Price))*100)
Заранее спасибо!
Комментарии:
1. Не могли бы вы, пожалуйста, точно описать, что вам нужно. И было бы полезно, если бы вы добавили некоторые встроенные тестовые данные.
2. @smartmeta привет, я хочу показать среднюю норму прибыли, например, за 5 лет : 3% , 5%, 3% , 5%, 4% . затем в текстовом объекте, который я хочу показать, это «Годовой темп роста (2003-2007): 4 %»
Ответ №1:
QlikView поддерживает вложенную агрегацию и может удовлетворить ваши требования, если вы используете AGGR
функцию. Эта функция позволяет выполнять агрегирование по заданному вами набору измерений и в простейшей форме может использоваться следующим образом:
=aggr(expression,dimension)
Это означает, что expression
вычисляется для каждого значения dimension
. Например, в вашем случае, если вы использовали sum(Profit_per_Product)/sum(Total_Retail_Price)
в качестве своего выражения и использовали свое измерение, содержащее год ваших данных, то результатом aggr будет пять разных значений (по одному для каждого изменения в вашем году). Поскольку вы хотите получить среднее значение, AVG
функция с радостью принимает эти пять значений и предоставляет вам желаемый результат.
Поэтому все, что вам нужно сделать, это немного изменить ваше выражение на следующее (здесь я предположил, что ваше измерение, содержащее год, называется Year
):
='Annual Growth Rate (2003-2007):' amp; num(avg(aggr(sum(Profit_per_Product)/sum(Total_Retail_Price),Year)),'0.00%')
Я также добавил NUM
функцию для форматирования вашего результата в процентах.
Более подробную информацию о расширенной агрегации (т. Е. AGGR
) можно найти в разделе 25.2 справочного руководства QlikView (в моей копии это на странице 291).