quickbi实现关联度分析(复刻PowerBI展示)
PowerBI通过DAX创建度量值,可以比较轻松的实现不同产品的关联度分析,即购物篮分析,但如果使用quickbi,则需要通过sql代码创建一个数据集,然后再通过数据集制作图表。
quickbi官方模板市场给出的购物篮分析和finebi官方5.1版本给出的可视化效果类似,但缺点在于无法查看不同日期下的关联度情况,只能查看固定日期不同产品的的关联度。
quickbi关联分析模板:

这篇文章就以powerbi的思路通过quickbi来实现powerbi的动态实现效果。
PowerBI的效果展示:

quickbi的复刻效果展示:

部分样例数据如图:

实现思路:
第一步,计算各产品客户数
SELECT t1.`产品名称`,count(distinct t1.`客户ID`) as 客户数 FROM order_pbi t1group by t1.`产品名称` ;
第二步,计算关联产品客户数
-- 产品B:公路自行车 -- 产品A:客户数 -- 方法一:不到3秒 SELECT t1.`产品名称` as 产品B, t2.`产品名称` as 产品A, COUNT(distinct t1.`客户ID`) AS 交叉客户数FROM order_pbi t1INNER JOIN order_pbi t2 ON t1.客户ID = t2.客户ID and t1.`产品名称` <> t2.`产品名称`GROUP BY t1.`产品名称`, t2.`产品名称`;-- 方法二:3秒以上-- SELECT p1.`产品名称` AS 产品A, p2.`产品名称` AS 产品B, COUNT(DISTINCT t1.`客户ID`) AS 交叉客户数-- FROM order_pbi t1-- JOIN order_pbi t2 ON t1.客户ID = t2.客户ID AND t1.`产品ID` <> t2.`产品ID`-- JOIN pz_product_pbi_view p1 ON t1.`产品ID` = p1.`产品ID`-- JOIN pz_product_pbi_view p2 ON t2.`产品ID` = p2.`产品ID`-- GROUP BY p1.`产品名称`, p2.`产品名称`;
第三步,计算各产品A销售额
SELECT t1.`产品名称`,sum(t1.销售金额) as 销售额 FROM order_pbi t1group by t1.`产品名称` ;
第四步,计算关联产品的销售额
-- 第四步,计算关联产品的销售额SELECT t2.产品名称 AS 产品A, t1.产品名称 AS 产品B, SUM(t1.销售金额) AS 交叉销售额FROM order_pbi AS t1INNER JOIN ( SELECT DISTINCT `客户ID`, 产品名称 FROM order_pbi ) AS t2 ON t1.`客户ID` = t2.`客户ID` WHERE t1.产品名称 <> t2.产品名称GROUP BY t1.产品名称,t2.产品名称;
第五步,代码合并
第六步,quickbi中创建sql数据集,并使用占位符(日期格式)
第七步,通过数据集制作图表
