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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: hayden от 19 марта 2019, 09:38:18

Название: Формула - подсчет значений сгруппированных по дате
Отправлено: hayden от 19 марта 2019, 09:38:18
Доброго дня, коллеги!
В клике я не шибко силён, область не моя, но иногда приходится им заниматься.
Перелистал вдоль и поперек форум, но так и не смог толком ничего найти, либо у меня проблемы с формулировкой либо я первый (а вот это врядли...)
Задача такая - необходимо помесячно сгруппировать Маржу, Продажи, Премию и суммировать.
Формула = (Маржа янв + Продажи янв * Премия янв) + (Маржа фев + Продажи фев * Премия фев) + ... + (Маржа тудэй + Продажи тудэй * Премия тудэй)
Сложности:

Что-то мне подсказывает что последнее определенно из области фантастики, по крайней мере для Клика. Может быть есть идеи? ну или пните меня в какую-нибудь функцию?
Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: millik от 19 марта 2019, 09:38:53
Чтобы как-то вам помочь или хотя бы подсказать куда копать, нужно видеть пример структуры источника данных и какую визуализацию хотят увидеть пользователи в конечном итоге.

Вообще, клик позволяет реализовать многое, главное выбрать наиболее правильный подход/методику.
Плавающие периоды, нарастающие итоги, MTD/YTD/т.п. анализы, план-факт анализ и многое другое.

ПС
Не скажу за кликвью, но в кликсенс в таблицах и динамические колонки уже есть.
Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: hayden от 20 марта 2019, 08:54:15
Доброго дня! Спасибо что откликнулись!
структура источника данных - вы имеете ввиду откуда тянутся данные?
14 скриптов на общий объем несколько тысяч строк, боюсь политика безопасности компании не позволяет мне привести цитирование.
Что касается визуализации - имеется сводная таблица в 90 колонок, среди них Маржа, считается как Sum(Маржа), это все что я могу сказать.
Если есть идеи как построить формулу на условных полях - приведите, пожалуйста, пример. Я пойму, абстрагироваться вроде получается. Я понимаю что основная моя проблема - незнание языка клика в сочетании со статистикой/аналитикой/бухгалтерией/математикой, это все взрывает мой мозг, я не экономист к сожалению. За любые наводки и подсказки зацеплюсь, может что и получится
Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: hayden от 20 марта 2019, 10:33:53
Немного порассуждаю, может быть я некорректно сформулировал вопрос.
Условно в документе есть множество загруженных данных, общие фильтры, сводные таблицы.
В сводную таблицу необходимо добавить поле, значения которого будут вычислены не реагируя на общие фильтры даты/времени, а за определенный период. Можно ли в формуле указать определенный месяц за который из всего множества данные будут отбираться только за этот месяц, при этом общие фильтры должны быть проигнорированы.
Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: millik от 20 марта 2019, 01:45:04
Да, для переопределения множеств есть SetAnalysis. С его помощью можно как корректировать множества на основе текущих отборов, так и полностью их изменять.
Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: hayden от 20 марта 2019, 01:59:38
Sum({1<[Месяц-Год]={'янв-2019'}>}Маржа) считает и похоже что правильно!
Спасибо! то что нужно!

Осталось выяснить возможно ли из другого отчета в формате qvw загрузить отдельно пару полей, [Премия] в т.ч.

пробовал
[Премия март-2019]:
replace LOAD [Премия] as "Премия март 2019",
[Код]
FROM [C:\qv\doc\Премия - март 2019.qvw]
(XmlSimple, Table is [DocumentSummary/TableDescription]);
- полный бред, не понимаю как добраться до значений,  [DocumentSummary/TableDescription] это определенно не наше.

так тоже не получилось:
binary [C:\qv\doc\Премия - март 2019.qvw]
replace LOAD [Премия] as "Премия март 2019",
[Код]

Название: Re: Формула - подсчет значений сгруппированных по дате
Отправлено: hayden от 22 марта 2019, 09:45:35
В другом отчете вытащил пару полей дополнительным скриптом для загрузки, за жестко указанный период средствами SetAnalysis все считается на ура! :)

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

На условном языке алгоритмов (внезапно похожем на C#) я представляю это так:
int result;
foreach I in SelectedPeriod
{
   result += Sum({1<[Месяц-Год]=I>}Маржа) + Sum({1<[Месяц-Год]=I>}Продажи)*only({1<[Месяц-Год]=I>}Премия)
}
return result;

Но не могу понять как это сделать на языке формул Клика. Буду признателен за подсказки :)