Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 17, 2018, 02:03:51 pm

Автор Тема: Агрегация двух таблиц в третью  (Прочитано 1137 раз)

Оффлайн kornilov

  • Стажер
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +0/-0
    • Просмотр профиля
Агрегация двух таблиц в третью
« : Июль 12, 2016, 03:54:59 pm »
Коллеги, я голову сломал, форум прошерстил, не могу понять, как сделать простую вещь:
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,
];

То есть у нас абоненты подключаются и отключаются, некоторые еще не отключились. Я могу вывести таблицу подключений и таблицу отключений, но как сделать таблицу общего притока/оттока по датам? То есть мне нужен приток-отток на дату.
Так как даты в разных колонках, общую агрегацию не сделать и даже, если использовать прегенерированный календарь, то все равно надо связать его с одной из двух колонок. Прошу помощи!

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1215
  • Страна: ru
  • Рейтинг: +129/-0
    • Просмотр профиля
Re: Агрегация двух таблиц в третью
« Ответ #1 : Июль 12, 2016, 05:13:09 pm »
Привет.
Посмотрите в хелпе информацию по intervalmatch().

Оффлайн kornilov

  • Стажер
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +0/-0
    • Просмотр профиля
Re: Агрегация двух таблиц в третью
« Ответ #2 : Июль 13, 2016, 03:15:20 pm »
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

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

Re: Агрегация двух таблиц в третью
« Ответ #2 : Июль 13, 2016, 03:15:20 pm »