Создать набор элементов Apriori в Redshift - PullRequest
0 голосов
/ 02 октября 2018

Моя цель - использовать алгоритм Apriori, чтобы узнать интересные идеи из таблицы покупок, созданной в AWS Redshift.Таблица покупок выглядит следующим образом:

-------------
ID | product
1    A
1    B
1    C
2    A
2    C

Я могу рассчитывать частоту продукта и фильтровать эти наблюдения с низкой частотой.Однако мне было трудно создавать правила набора элементов в среде AWS Redshift.Вот что я хочу получить:

------------------
itemset | count(*)
A,B       1
A,C       2
B,C       1

В таблице покупок содержится более 1000 товаров, поэтому я хотел бы узнать, как написать эффективный и действенный запрос для решения этой проблемы.Спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Использовать самостоятельное соединение:

select t1.product, t2.product, count(*)
from t t1 join
     t t2
     on t1.id = t2.id and t1.product < t2.product
group by t1.product, t2.product;

. Наборы элементов помещаются в два столбца.Вы также можете объединить их вместе:

select t1.product || ',' || t2.product, count(*)
from t t1 join
     t t2
     on t1.id = t2.id and t1.product < t2.product
group by t1.product, t2.product
order by t1.product || ',' || t2.product;

Здесь - это скрипта SQL, иллюстрирующая, что код работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...