Skip to main content
Announcements
July 15, NEW Customer Portal: Initial launch will improve how you submit Support Cases. IMPORTANT DETAILS
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 берется не в пределах месяца а за весь выделенный период! И в итоге критерий фильтрации нужных блюд не работает.

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




25 Replies
ahaahaaha
Partner - Master
Partner - Master

Добрый день, Антон!

Как вариант, может попробовать организовать выгрузку только необходимых для Вашей задачи данных в новую чистую базу QV, чем городить огород с "перелопачиванием" существующей структуры данных? Представляется, что для решения данной задачи понадобится выгрузка и связывание нескольких таблиц из хранилища данных. По идее и время сэкономите, и нервы.

С уважением,

Андрей

antonrus
Contributor III
Contributor III
Author

Спасибо!!! мозг буду тренировать (ломать). Может и получится

antonrus
Contributor III
Contributor III
Author

Спасибо за идею!!! Может быть так и произойдет хотя сначала все таки помучаюсь, хотелось попробовать исправить часть  syn ключей в основном документе. Все таки им пользуются люди и он тормозит (по понятным причинам), и опыт по такому хитрому присоединению таблиц, не создавая вредных syn ключей - очень полезен.

ahaahaaha
Partner - Master
Partner - Master

Я тоже предпочитаю применять составные ключи, созданные не автоматически QlikView Qlik Sence, а вручную. В идеале связь между таблицами должна идти по одному полю. В противном случае надо реализовывать составной ключ. Как это делается, хорошо описано в книге "QlikView 11 for Developers"(стр 101). Там же целый раздел посвящен описанию лучших практик по построение структуры связанных таблиц. Книга на английском, но если бегло не читаете, то Google-переводчик в помощь и в общем-то все вполне приемлемо 🙂 Если будет желание почитать  и проблемы с книгой, пишите в личку.

sewialwork
Partner - Contributor III
Partner - Contributor III

Если речь идет об оптимизации скорости работы и загрузки, то настоятельно рекомендую использовать для генерации ключей не слияние текстовых полей или Autonumber(), а функцию Autonumberhash128(), если в QV, или Hash128, если в QS. Как правило, получается быстрее.

AutoNumber vs AutoNumberHash128 | Qlikview Cookbook

timofeykim
Partner - Contributor II
Partner - Contributor II

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

В данной задаче, используя анализ множеств, можно попробовать применить функции элементов P().

В Qlik Sense и QlikView используется одинаково.

Ссылка на help Qlik Sense https://help.qlik.com/ru-RU/sense/June2017/Subsystems/Hub/Content/ChartFunctions/SetAnalysis/set-mod...

Ссылка на help QlikView https://help.qlik.com/ru-RU/qlikview/November2017/Subsystems/Client/Content/ChartFunctions/SetAnalys...

Посмотрите пример применения.