Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Добрый день.
Такая ситуация. Есть таблица карточек лояльных клиентов, в ней есть поле ДатаВыдачи. Нужно сделать график на котором отображается кол-во выданных карточек до определенной даты. В качестве измерения выбрана группа из полей таблицы Календарь.
Эти две таблицы связаны через таблицу чеков.
Теперь о выражении.
Я составил следующее выражение:
= COUNT({1< ДатаВыдачи# = {" <=$(=MAX(Дата#))"}>}DISTINCT КартыАЙДИ)
Если его прописать в обычном текстовом объекте, то делая выборку полей таблицы календарь все нормально - оно как и положено подсчитывает количество выданных карт до выбранной даты/месяца/года и т.п.
Но вот когда я его вставляю в график, то получаю совсем не то что нужно. Может это выражение не подходит для графика?
Буду очень благодарен за любую помощь.
А что именно "не то что нужно": по какому измерению строите график и что не устраивает?
Помимо ответа на вопрос выше, рекомендую убрать лишние пробелы (не могу проверить их наличие в реальной формуле, но если формулу в вопрос выше вы вставляли как copy/paste, то они там явно есть) в строке поиска в модификаторе, заключенной в двойные кавычки.
1) Пробела в выражении нет, это я в сообщении добавил почему-то.
2) График строю по группе в которую входит 3 полей "Дата, МесяцГод, Год". График находится в отдельном состоянии (если я правильно применил термин), т.е. никакие выборки на него не влияют
3) Если я правильно понял, то график выводит кол-во карт по которым совершались покупки в выбранном периоде. Выражение =COUNT(DISTINCT КартыАЙДИ) выводит такие же результаты.
По 1) и 2) - ок.
По 3) - диаграмма (график или таблица) всегда рассчитывает заданное выражение по отношению к КАЖДОМУ элементу измерения.
Поэтому описывая выражения в объектах нужно всегда задумываться о контексте вычислений. Например:
Исходя из сказанного выше, нужно просто понять исходную задачу и подумать - как ее лучше визуализировать.
Спасибо за подсказку. Буду думать в заданном направлении.
Поле КартыАЙДИ у вас является ключом и присутствует в нескольких таблицах.
QlikView не должно догадываться из какой таблицы вы хотите подсчитать количество карт.
Поэтому хорошим тоном считается не использовать ключи в формулах (они нужны для связи таблиц), а создавать в скрипте отдельные поля для расчетов,
например: в таблице Дисконтные карты добавьте строку
КартыАЙДИ as КартыАЙДИВыдача,
Для диаграммы по количеству выданных карт по месяцам будет достаточно формулы
Count(КартыАЙДИВыдача).
Ограничить по дате можно не только в выражении, но и сделав вычиcляемое измерение с условием if().
Если бы у нас была только таблица Чеки и надо было найти количество новых клиентов (карт) за каждый месяц, то тогда лучше использовать фунцию aggr():
sum(aggr(if(monthstart(min(Total <КартыАЙДИ> Дата))=МесГод,1,0), КартыАЙДИ,МесГод))