Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Сентябрь 24, 2018, 06:53:19 am

Автор Тема: Как посчитать TOTAL<> в data loader-е  (Прочитано 516 раз)

Оффлайн muratov.ast

  • Новичок
  • *
  • Сообщений: 5
  • Страна: kz
  • Рейтинг: +0/-0
    • Просмотр профиля
Как посчитать TOTAL<> в data loader-е
« : Декабрь 14, 2017, 01:38:21 pm »
Доброго времени суток!
У меня есть следующая таблица:
year   month   value
2015   1   100
2015   2   600
2015   3   50
2016   2   300
2016   4   500
2016   8   800
2017   5   20
2017   7   40
2017   10   170
2017   12   600

и я хотел бы посчитать долю каждого месяца по отношению к году.
В чарте я могу это сделать следующим образом:
sum(total<month> value)/sum(total<year> value)

Подскажите, как можно сделать подобные вычисления в скрипте на уровне data loader-а?
Благодарю!

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1177
  • Страна: ru
  • Рейтинг: +127/-0
    • Просмотр профиля
Re: Как посчитать TOTAL<> в data loader-е
« Ответ #1 : Декабрь 14, 2017, 03:30:06 pm »
Привет
t1:
LOAD * INLINE [
    year,   month,   value
    2015,   1,   100
    2015,   2,   600
    2015,   3,   50
    2016,   2,   300
    2016,   4,   500
    2016,   8,   800
    2017,  5,   20
    2017,  7,   40
    2017,   10,   170
    2017,   12,   600
];

left join (t1)
LOAD year, sum(value) as TotalYear
resident t1
Group by year;

left join (t1)
LOAD year, month, round(value/TotalYear*100,0.01) as X
resident t1;

Весь смысл в первой связи, посредством которой к каждой записи присоединяется итоговое значение по полю/полям связи.

Оффлайн muratov.ast

  • Новичок
  • *
  • Сообщений: 5
  • Страна: kz
  • Рейтинг: +0/-0
    • Просмотр профиля
Re: Как посчитать TOTAL<> в data loader-е
« Ответ #2 : Январь 03, 2018, 01:07:42 pm »
Спасибо большое!
Работает.
Но если в таблице имеется большое количество записей, скрипт не выполняется. Это уже скорее проблема железа.

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Как посчитать TOTAL<> в data loader-е
« Ответ #2 : Январь 03, 2018, 01:07:42 pm »

Оффлайн LoryMax

  • Наставник
  • **
  • Сообщений: 85
  • Страна: ru
  • Рейтинг: +11/-0
    • Просмотр профиля
Re: Как посчитать TOTAL<> в data loader-е
« Ответ #3 : Январь 04, 2018, 07:02:09 am »
Идет не хватка памяти? Тогда разбивайте данные на части (например, по годам, или по количеству строк).

или по какой причине не выполняется скрипт?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1177
  • Страна: ru
  • Рейтинг: +127/-0
    • Просмотр профиля
Re: Как посчитать TOTAL<> в data loader-е
« Ответ #4 : Январь 04, 2018, 10:28:46 pm »
Join - затратная функция, плюс с группировкой.
Следите за памятью при выполнении скрипта.
Можно попробовать использовать временные таблицы, когда каждый этап преобразования работает с загрузкой через load а не resident.
Надо ставить эксперименты и сравнивать.

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Как посчитать TOTAL<> в data loader-е
« Ответ #4 : Январь 04, 2018, 10:28:46 pm »