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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: kornilov от 12 июля 2016, 03:54:59

Название: Агрегация двух таблиц в третью
Отправлено: kornilov от 12 июля 2016, 03:54:59
Коллеги, я голову сломал, форум прошерстил, не могу понять, как сделать простую вещь:
abon:
Load *  Inline
[

Абонент, Подключился, Отключился

1, 01.01.2010, 01.02.2010
2, 01.01.2010, 01.03.2010
3, 01.01.2010, 01.03.2010
4, 01.02.2010, 01.03.2010
5, 01.02.2010, 01.04.2010
6, 01.02.2010, 01.05.2010
7, 01.02.2010,
8, 01.03.2010, 01.04.2010
9, 01.03.2010, 01.04.2010
10, 01.03.2010, 01.05.2010
11, 01.03.2010, 01.05.2010
12, 01.03.2010,
13, 01.04.2010,
14, 01.05.2010,
];

То есть у нас абоненты подключаются и отключаются, некоторые еще не отключились. Я могу вывести таблицу подключений и таблицу отключений, но как сделать таблицу общего притока/оттока по датам? То есть мне нужен приток-отток на дату.
Так как даты в разных колонках, общую агрегацию не сделать и даже, если использовать прегенерированный календарь, то все равно надо связать его с одной из двух колонок. Прошу помощи!
Название: Re: Агрегация двух таблиц в третью
Отправлено: admin от 12 июля 2016, 05:13:09
Привет.
Посмотрите в хелпе информацию по intervalmatch().
Название: Re: Агрегация двух таблиц в третью
Отправлено: kornilov от 13 июля 2016, 03:15:20
Admin, маленько не на тот вопрос ответили, классификация дат в периоде не нужна - автокалендарь YearMonth все классно делает. Но все равно спасибо!
Если кому интересно, то оставлю найденное решение здесь (оказалось все достаточно просто):
Генерируем в ручную календарик (не реальных данных - это делается циклом):
calendar:
Load *  Inline
[
N, Date
1, 01.01.2010
2, 01.02.2010
3, 01.03.2010
4, 01.04.2010
5, 01.05.2010
];

Делается диаграмма с измерением Date и мерами
Приток: SUM({1}if([Подключился]=Date,1,0))
Отток: SUM({$}if([Отключился]=Date,1,0))
Чистый приток: SUM({$}if([Подключился]=Date,1,0))-SUM({$}if([Отключился]=Date,1,0))

Прочитал документацию, ценной находкой является то, что если условие ставится внутри функции агрегации, то выполняется для каждой строки выбранного множества. На реальных данных должно работать достаточно медленно, но не могу подобрать правильный синтаксис, чтобы анализом множеств без if и суммирования обойтись. Видится как-то так для подключений:
count({$<[Подключился]=Date>}[Абонент])

Но не работает  :D