108_Power Pivot购物篮分析分组GENERATE之笛卡尔积、排列、组合
博客:www.jiaopengzi.com
1、背景
昨天在看论坛帖子时候(帖子),看到一个关于SKU组合的问题,有很多M大佬都给出了处理方案,于是想用dax也写一个。
注:
原贴有dax的写法,这里主要说明下GENERATE之笛卡尔积、排列、组合处理过程。
上效果图

2、问题
1、大前提是使我们要使用data的数据做购物篮分析分组;
2、在问题1已的基础上,笛卡尔积表(5*5)存在类似黄色区域问题,SKU两两相同,这是不需要看到的;
3、在问题1的基础上,排列表(见图中公式)存在类似绿色区域的问题,SKU1对SKU2和SKU2对SKU1其实是一样的,这也是我们不需要看到的;
4、基于以上,我们通过笛卡尔积-排列-组合这样 处理下来得到我们要的购物篮分组。
3、上DAX
1、笛卡尔积

DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
EVALUATE
T3
ORDER BY
[SKUA],
[SKUB] ASC
2、排列

DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
VAR T4 =
FILTER ( T3, [SKUA] <> [SKUB] )
EVALUATE
T4
ORDER BY
[SKUA],
[SKUB] ASC
4、组合

DEFINE
VAR T1 =
SELECTCOLUMNS ( data, "SKUA", data[SKU] )
VAR T2 =
SELECTCOLUMNS ( data, "SKUB", data[SKU] )
VAR T3 =
GENERATE ( T1, T2 )
VAR T4 =
FILTER ( T3, [SKUA] <> [SKUB] )
VAR T5 =
DISTINCT (
SELECTCOLUMNS (
ADDCOLUMNS (
T4,
"AB", IF ( [SKUA] < [SKUB], [SKUA] & [SKUB], [SKUB] & [SKUA] )
),
"AB", [AB]
)
)
VAR T6 =
FILTER ( ADDCOLUMNS ( T4, "AB", [SKUA] & [SKUB] ), [AB] IN T5 )
VAR T7 =
SUMMARIZE ( T6, [SKUA], [SKUB] )
EVALUATE
T7
ORDER BY
[SKUA],
[SKUB] ASC
4、总结
1、以上问题基于购物篮分析产生,所以需要组合结果;
2、在实际需求中肯定这三种都是有需求的;
3、处理GENERATE,两列名称不能相同,于是有了上述的GENERATE ( T1, T2 ),而不是GENERATE ( T1, T1);
4、处理从排列到组合的思路主要是利用两两组合排序后去重即可,分步体会从T1-T7的过程。
by 焦棚子
108_Power Pivot购物篮分析分组GENERATE之笛卡尔积、排列、组合的更多相关文章
- 数据算法 --hadoop/spark数据处理技巧 --(5.移动平均 6. 数据挖掘之购物篮分析MBA)
五.移动平均 多个连续周期的时间序列数据平均值(按相同时间间隔得到的观察值,如每小时一次或每天一次)称为移动平均.之所以称之为移动,是因为随着新的时间序列数据的到来,要不断重新计算这个平均值,由于会删 ...
- Apriori算法在购物篮分析中的运用
购物篮分析是一个很经典的数据挖掘案例,运用到了Apriori算法.下面从网上下载的一超市某月份的数据库,利用Apriori算法进行管理分析.例子使用Python+MongoDB 处理过程1 数据建模( ...
- R语言和数据分析十大:购物篮分析
提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛 ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)
在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...
- 关联规则之Aprior算法(购物篮分析)
0.支持度与置信度 <mahout实战>与<机器学习实战>一起该买的记录数占所有商品记录总数的比例——支持度(整体) 买了<mahout实战>与<机器学习实战 ...
- 016 Spark中关于购物篮的设计,以及优化(两个点)
一:介绍 1.购物篮的定义 2.适用场景 3.相关概念 4.步骤 5.编程实现 6.步骤 二:程序 1.程序 package com.ibeifeng.senior.mba.association i ...
- 购物篮模型&Apriori算法
一.频繁项集 若I是一个项集,I的支持度指包含I的购物篮数目,若I的支持度>=S,则称I是频繁项集.其中,S是支持度阈值. 1.应用 "尿布和啤酒" 关联概念:寻找多篇文章中 ...
- 购物篮算法的理解-基于R的应用
是无监督机器学习方法,用于知识发现,而非预测,无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤.缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理. 一,概念术语 ...
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...
随机推荐
- 线性二次型控制器(LQR)——轨迹跟踪器
1 概念 2 线性时变系统的跟踪问题 3 线性定常系统的跟踪问题 公式18--22为求解的关键 根据20.21分别求出P.g的值则通过18可求得期望的输出u 4 实例分析 5 仿真实验 先将上 ...
- Tensorflow安装教程(Anaconda)
写在最前: 在安装过程中遇到很多坑,一开始自己从官网下载了Python3.6.3或者Python3.6.5或者Python3.7.1等多个版本,然后直接pip install tensorflow或者 ...
- 2_状态空间_State Space
- 基于融云的IM通讯
一.业务场景 项目的发展需要吧原来自己的写的通讯换为第三方的,多家对比后选择了融云IM通讯,项目要实现的功能这要是单聊.群聊.聊天室.发送的内容为文字.图片.文件.语音通话与视频通话.听起来挺复杂的我 ...
- h5 在全屏iphonex中的适配
iphonex 已经上线有一段时间了,作为业界刘海屏幕第一款机型,导致全屏不能正常的全屏显示了,,所以需要对iphonx 适配,下面就详细说说如何适配 先看一张适配前后的图: iphonex 提供的 ...
- pydev+eclipse写python代码
首先,下载pydev:PyDev for Eclipse - Browse /pydev at SourceForge.net (建议下载到本地,之前看其他文章时,进行了如下安装: 启动 Eclips ...
- 解决vue安装时出现vue --version或vue不是内部命令的问题
1. 试图全局配置 vue 的环境变量,找到 vue.cmd 的路径,然后进行配置. 问题:在文件搜索中,没有找到 vue.cmd,失败. 1.npm i npm -g 全局 update 了 npm ...
- C++---条件结构和循环结构
条件结构 if结构 #include <iostream> using namespace std; int main() { //判断用户输入的字符是否是合法的硬盘盘符A-Z char ...
- 『现学现忘』Git基础 — 2、Git和SVN的区别
1.Git和SVN的区别 (1)SVN(集中式版本管理系统) 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者 ...
- 基础设施即代码(IAC),Zalando Postgres Operator UI 入门
Postgres Operator UI 提供了一个图形界面,方便用户体验数据库即服务.一旦 database 和/或 Kubernetes (K8s) 管理员设置了 operator,其他团队就很容 ...