Size: a a a

2021 March 19

AS

Aleksey SV in Qlik BI chat
попробуйте такой сценарий
источник

VE

Vladimir Ermakov in Qlik BI chat
Алексей Щеголев
В общем, вся задачка одним постом:
Есть таблица:
[ID чека, Имя товара, ... ]
что то типа:
1, Товар 1
1, Товар 2
2, Товар 1
2, Товар 3


Нужно сфоримировть таблицу, в которой будет:
[Товар, товар, который встречается с ним в чеке, количество таких чеков]
Товар 1, товар 2, 1
товар 1, товар 3, 1
товар 2, товар 1, 1
товар 2, товар 3, 0
товар 3 товар 1 , 1
товар 3 , товар 2, 0


это для таблицы выше.  

Чеков миллионы, товаров сотни тысяч наименований.
Таблицы с сотнями тыщщ столбцов создавать не вариант.

Хотяб вектор понять,В котором копать...
А строки с нулями точно нужны?  Вы квадрат от количества товаров получаете; это не выглядит оптимальным.
источник

АЩ

Алексей Щеголев... in Qlik BI chat
Vladimir Ermakov
А строки с нулями точно нужны?  Вы квадрат от количества товаров получаете; это не выглядит оптимальным.
Ага. Не нужны. У меня в голове был какой то абстрактный алгоритм, я по нему полз, понятно что можно почистить таблу от лишнего в итоге.
источник

АЩ

Алексей Щеголев... in Qlik BI chat
Aleksey SV
t1:
LOAD * INLINE
[IDчека, ИмяТовара,
1, товар 1
1, товар 2
2, товар 1,
2, товар 3,
3, товар 3];

t2:
LOAD Distinct [ИмяТовара] as compare_products_list
Resident t1;
for each prod in FieldValueList('compare_products_list')

 tmp1:
   LOAD IDчека as check_list
   Resident t1
   where [ИмяТовара] = '$(prod)';
   
   //left join(tmp1)
   NoConcatenate
   tmp2:
   LOAD * Resident t1
   where Exists(check_list, IDчека);
 t3:
   LOAD
     '$(prod)' as ТоварДляСравнения,
       ИмяТовара as ПодсчитываемыйТовар,
       count(ИмяТовара) as количество
   Resident tmp2
   where ИмяТовара <> '$(prod)'
   Group by ИмяТовара ;
   drop Table tmp1, tmp2;
Next
Агонь. Спасибо.э, попробую.
источник

VP

Vyacheslav Panov in Qlik BI chat
Left join двух одинаковых таблиц По полю ЧекID разве не решает задачу? В результирующей таблице Чек / ТоварИзЛевойТаблицы / ТоварИзПравойТаблицы нужно будет удалить строки с одинаковыми товарами
источник

ZS

Zhenya Skrebanov in Qlik BI chat
А почему именно в таблице в скрипте? У вас же снижается выборка в анализе корзины, может через формулу? Тогда вы сможете выбрать товар 1 и увидеть, что с ним берут, выбрать товар 1 и товар 2 и увидеть что с ними берут, выбрать любое сочетание товаров и увидеть что с ними берут, а также через альтернейт стейт реализовать анализ независимых сегментов, в стиле вот группа А, допусти молоко и пиво, и видим, что берут ещё в 10% случаев сметану, и вот группа Б, сметана и молоко, и опа, в 13% берут пиво, или что-то ещё. Если позволяет мощность сервера, я бы делал в интерфейсе такую штуку, в скрипте оно аналогично предраcсчету OLAP.
источник
2021 March 20

АЩ

Алексей Щеголев... in Qlik BI chat
Zhenya Skrebanov
А почему именно в таблице в скрипте? У вас же снижается выборка в анализе корзины, может через формулу? Тогда вы сможете выбрать товар 1 и увидеть, что с ним берут, выбрать товар 1 и товар 2 и увидеть что с ними берут, выбрать любое сочетание товаров и увидеть что с ними берут, а также через альтернейт стейт реализовать анализ независимых сегментов, в стиле вот группа А, допусти молоко и пиво, и видим, что берут ещё в 10% случаев сметану, и вот группа Б, сметана и молоко, и опа, в 13% берут пиво, или что-то ещё. Если позволяет мощность сервера, я бы делал в интерфейсе такую штуку, в скрипте оно аналогично предраcсчету OLAP.
У меня 13 тысяч позиций в чеках. И 4,5 миллиона записей. Глазами в сводных таблицах ничего не видно, и данные обновляться будут и расширяться.
источник

АЩ

Алексей Щеголев... in Qlik BI chat
Vyacheslav Panov
Left join двух одинаковых таблиц По полю ЧекID разве не решает задачу? В результирующей таблице Чек / ТоварИзЛевойТаблицы / ТоварИзПравойТаблицы нужно будет удалить строки с одинаковыми товарами
И так тоже попробую.
источник

ZS

Zhenya Skrebanov in Qlik BI chat
Алексей Щеголев
У меня 13 тысяч позиций в чеках. И 4,5 миллиона записей. Глазами в сводных таблицах ничего не видно, и данные обновляться будут и расширяться.
В целом не очень большой объём, кроме того нужны будут выборки только топов, все, что ниже определенного % уже по сути не влияет на саму процедуру анализа, но зависит ещё от методик.
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
Vyacheslav Panov
Left join двух одинаковых таблиц По полю ЧекID разве не решает задачу? В результирующей таблице Чек / ТоварИзЛевойТаблицы / ТоварИзПравойТаблицы нужно будет удалить строки с одинаковыми товарами
Да можно даже без джойна, просто погрузить ещё раз ид чека, товар as сопутствующий товар, категория as сопутствующая категория
источник

A

Aleksandr in Qlik BI chat
Алексей Щеголев
В общем, вся задачка одним постом:
Есть таблица:
[ID чека, Имя товара, ... ]
что то типа:
1, Товар 1
1, Товар 2
2, Товар 1
2, Товар 3


Нужно сфоримировть таблицу, в которой будет:
[Товар, товар, который встречается с ним в чеке, количество таких чеков]
Товар 1, товар 2, 1
товар 1, товар 3, 1
товар 2, товар 1, 1
товар 2, товар 3, 0
товар 3 товар 1 , 1
товар 3 , товар 2, 0


это для таблицы выше.  

Чеков миллионы, товаров сотни тысяч наименований.
Таблицы с сотнями тыщщ столбцов создавать не вариант.

Хотяб вектор понять,В котором копать...
tmp:
Load order, product as p inline
[order, product
1, milk
1, butter
1, bread
2, milk
2, bread
3, milk
3, cheese
];

left join
Load order, product as p2 inline
[order, product
1, milk
1, butter
1, bread
2, milk
2, bread
3, milk
3, cheese
];


fin:
load p, p2, count(distinct order) as orders_count
Resident tmp
Where p <> p2
Group by p, p2;

drop table tmp;
источник

A

Aleksandr in Qlik BI chat
Блин, оказывается, уже решения накидали
источник

АЩ

Алексей Щеголев... in Qlik BI chat
Коллеги, спасибо огромное. Сегодня все попробую, а в понедельник пойду программистов троллить :)
источник

ДК

Дмитрий Колганов... in Qlik BI chat
Алексей Щеголев
Коллеги, спасибо огромное. Сегодня все попробую, а в понедельник пойду программистов троллить :)
не стоит... обидчивый контингент. боком выйдет :)
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
Алексей Щеголев
Коллеги, спасибо огромное. Сегодня все попробую, а в понедельник пойду программистов троллить :)
если задача сводится к подсчету перечня продуктов, которые находятся в одном чеке с продуктами в текущей выборке, то можно это закрыть одной формулой с анализом множеств, например, такой:

Sum({<Чек={"=count(distinct Товар)>0"},Товар=-p(Товар)>} [Сумма])
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
Sum({<Чек={"=count(distinct Товар)>0"}*{"=count(distinct Товар)=$(=count(distinct Товар))"},Товар=-p(Товар)>} [Сумма])

и вот такой вариант формулы, чтобы выводить товары для чеков, в которых есть все перечни товаров текущей выборки

Sum({<Чек={"=count(distinct Товар)>0"}*{"=count(distinct Товар)=$(=count(distinct Товар))"},Товар=-p(Товар)>} [Сумма])
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
но если надо строить визуализацию типа такой, то нужно к чековой таблицей прогружать дубликат измерения товара и категории, связывая их по ид чека
источник

АЩ

Алексей Щеголев... in Qlik BI chat
Евгений Стучалкин
но если надо строить визуализацию типа такой, то нужно к чековой таблицей прогружать дубликат измерения товара и категории, связывая их по ид чека
А это кака то стандартная визуализация , или экстеншен ?
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
Стандартная, карта
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
Чуть позже отпишу как делать
источник