Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
antonrus
Contributor III
Contributor III

Сет аналитикс мать его

Здравствуйте!

(я дилетант-одиночка - сразу говорю)

Решаю задачу - подсчитать общее количество чеков в точках продаж, в которых были хоть раз (в определенный период месяц) продажи определенных некоторых блюд.

есть рабочая формула:

=(Count (DISTINCT{<EXTCODE= {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}>}  GLOBALIDENT))

где $(vнаборблюд) - переменная в которой перечислен набор нужных блюд.

GLOBALIDENT - уникальный номер чека

EXTCODE - уникальный номер точки продаж

DISH_RU - понятно, блюдо


Эта формула корректно работает когда выделяю период - один месяц. (У нас разбивка по месяцам)

Но если выделяю два и более месяцев - количество чеков считает не корректно, оно увеличивается сильно, т.е. видимо EXTCODE берется не в пределах месяца а за весь выделенный период! И в итоге критерий фильтрации нужных блюд не работает.

ничего не смог придумать..




1 Solution

Accepted Solutions
Chernov
Creator
Creator

Мне кажется у вас проблема со структурой данных.

У вас QV или QS ? Выложите скрином структуру.

Попробуйте такую формулу, что получится :

=(Count (DISTINCT{< QUANTITY = {'>0'} }>}  GLOBALIDENT))

View solution in original post

25 Replies
Chernov
Creator
Creator

добавьте переменные:

varMinDate = Min(Дата)

varMaxDate = Max(Дата)

И в сет анализе используйте доп. фильтрацию по датам, разбил по строкам для удобства чтения:


=(Count

(DISTINCT

{<

EXTCODE= {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}

, Дата = {'>=$(varMinDate)<=$(varMaxDate)'}

>} 

GLOBALIDENT))

antonrus
Contributor III
Contributor III
Author

Спасибо за ответ!

Но не прокатило..

даже если подставить упрощенное выражение в котором явно указать какой месяц надо выбрать, все равно показывает абсолютную неадекватную цифру:

=(Count (DISTINCT{<EXTCODE= {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}, PAYBINDINGS_Month= {'Jan'}>}  GLOBALIDENT))

vkozlov
Partner - Creator
Partner - Creator

Привет, если идёт разбивка по месяцам, может стоит поиграться с функцией Aggr? Пример 

Aggr(Count (Distinct {Set} dimension), month)

antonrus
Contributor III
Contributor III
Author

Спасибо за ответ! А Вы можете на моем примере показать куда вставлять эту функцию? Если не сложно!

(Count (DISTINCT {< EXTCODE=  {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}>} GLOBALIDENT)))

с функцией Aggr никогда не сталкивался..

Chernov
Creator
Creator

= aggr (

(Count (DISTINCT{<EXTCODE= {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'} >}  GLOBALIDENT))

, PAYBINDINGS_Month)

vkozlov
Partner - Creator
Partner - Creator

Aggr((Count (DISTINCT {< EXTCODE=  {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}>} GLOBALIDENT))), *Тут указать измерение месяц, по которому идет разбивка*)

antonrus
Contributor III
Contributor III
Author

Да, вот так и сделал:

Aggr(Count (DISTINCT {< EXTCODE=  {'=sum({<DISH_RU= {$(vнаборблюд)}>} QUANTITY )>0'}>} GLOBALIDENT), PAYBINDINGS_Month)

Но так не хочет считать.. в этом случае вообще пропадают любые цифры.

antonrus
Contributor III
Contributor III
Author

Странно что когда кстати выбираю в фильтре один месяц - то строит считает правильно. Но если выбрать два и более месяцев - то цифры исчезают вовсе.

vkozlov
Partner - Creator
Partner - Creator

Может Set не пропускает?

Если выполнить без условий, считает?

Aggr(Count (DISTINCT GLOBALIDENT), PAYBINDINGS_Month)