一、问题描述
在Excel中有一个非常经典的函数Vlookup,可以通过首列查找,返回相对应的其他列的值。这种功能,在Power BI中没有Vlookup函数,那么该如何实现这一功能呢?下面通过一个实例做分析演示。
二、数据源
已知某终端8~10月会员消费单据,见下图:
表:会员消费单据
要求统计分析:
01、最近订单的时间
02、最远订单的时间
03、第2近订单的时间
04、最近订单的流水号
05、最远订单的会员姓名
06、第2近订单的消费金额
07、订单最大消费金额
08、最大消费金额订单个数
09、最大消费金额订单的流水号
10、最大消费金额订单购买的品种数
11、最大消费金额订单购买的商品
12、消费金额最大的前三名订单消费金额之和
三、分析步骤
(一)新建表-按流水号汇总
表:按流水号汇总
新建表,按流水号汇总 = SUMMARIZE('会员消费单据','会员消费单据'[流水号],'会员消费单据'[会员姓名],'会员消费单据'[时间],"品种数",DISTINCTCOUNT('会员消费单据'[商品条码]),"消费金额",SUM('会员消费单据'[金额]))
(二)分析建模
01、最近订单的时间
新建度量值,01最近订单的时间 = MAXX(ALL('按流水号汇总'),'按流水号汇总'[时间])
02、最远订单的时间
新建度量值,02最远订单的时间 = MINX(ALL('按流水号汇总'),'按流水号汇总'[时间])
03、第2近订单的时间
新建度量值,03第2近订单的时间 = MINX(TOPN(2,ALL('按流水号汇总'),'按流水号汇总'[时间],0),'按流水号汇总'[时间])
04、最近订单的流水号
新建度量值,04最近订单的流水号 = MAXX(TOPN(1,ALL('按流水号汇总'),'按流水号汇总'[时间],0),'按流水号汇总'[流水号])
05、最远订单的会员姓名
新建度量值,05最远订单的会员姓名 = MINX(TOPN(1,ALL('按流水号汇总'),'按流水号汇总'[时间],1),'按流水号汇总'[会员姓名])
06、第2近订单的消费金额
新建度量值,06第2近订单的消费金额 = MAXX(TOPN(1,TOPN(2,ALL('按流水号汇总'),'按流水号汇总'[时间],0) ,'按流水号汇总'[时间],1),'按流水号汇总'[消费金额])
07、订单最大消费金额
新建度量值,07订单最大消费金额 = MAXX(ALL('按流水号汇总'),'按流水号汇总'[消费金额])
08、最大消费金额订单个数
新建度量值,08最大消费金额订单个数 = CALCULATE(DISTINCTCOUNT('按流水号汇总'[流水号]),TOPN(1,ALL('按流水号汇总'),'按流水号汇总'[消费金额],0))
09、最大消费金额订单的流水号
新建度量值,09最大消费金额订单流水号 = MAXX(TOPN(1,ALL('按流水号汇总'),'按流水号汇总'[消费金额],0),'按流水号汇总'[流水号])
10、最大消费金额订单购买的品种数
新建度量值,10最大消费金额订单购买的品种数 = MAXX(TOPN(1,ALL('按流水号汇总'),'按流水号汇总'[消费金额],0),'按流水号汇总'[品种数])
11、最大消费金额订单购买的商品
新建度量值,11最大消费金额订单购买的商品 = CONCATENATEX(FILTER(ALL('会员消费单据'),'会员消费单据'[流水号]='度量值表'[09最大消费金额订单流水号]),'会员消费单据'[商品名称]," \ ",'会员消费单据'[金额],0)
12、消费金额最大的前三名订单消费金额之和
新建度量值,12消费金额最大的前三名订单消费金额之和 = SUMX(TOPN(3,ALL('按流水号汇总'),'按流水号汇总'[消费金额],0),'按流水号汇总'[消费金额])
四、可视化图表呈现
具体操作可参见视频区“筛选查询功能“系列视频