QlikView报表显示连续若干个月内活跃用户的数量

之前有朋友提到了这样一个需求,要计算三年中每年都有销售记录的客户量,只有最近两年有销售纪录的客户量(假如某个用户2012年和2014年都有记录,在2013年没有则不计算在内),以及最近一年的新增客户数量。这里大概描述一下我的思路。

 

Sales表有两个字段Id, Year,要求除上述结果需要Group by Id,然后算Count(DISTINCT Year)的值要等于Min(Year)和Max(Year)的差+1,比如下面关于记录:

Year, Id
2014, 14
2013, 14
2012, 14

Max(Year)是2014,Min(Year)是2012,Count(DISTINCT Year)是3,则这个Id是连续三年都有记录的。下面的记录则是连续两年都有记录的:

2013,12
2014,12

Max(Year)是2014,Min(Year)是2013,Count(DISTINCT Year)是2。下面的记录则是最近一年的新客户:

2014,17

Max(Year)是2014,Min(Year)是2014,Count(DISTINCT Year)是1,。

具体代码是这样的:

//导入数据
Customer:
LOAD
	Year,
	Id
From
	../QVD/Customer.csv;

//获得最近三年中,每个Id出现的最大年份和最小年份,以及不同Year的数量
Frequency20140609Temp:
LOAD
	Id as Id0609Temp,
	Min(Year) as MinYear0609Temp,
	Max(Year) as MaxYear0609Temp,
	Count(DISTINCT Year) as CountYear0609Temp
Resident
	Customer
Where
	Year>=Year(Now())-2
Group By
	Id;

//取出Id出现的最大年份减去最小年份+1等于该Id出现的不同年份的数量
Frequency20140609:
LOAD
	Id0609Temp as Id0609,
	MinYear0609Temp as MinYear0609,
	CountYear0609Temp as CountYear0609
Resident
	Frequency20140609Temp
Where
	MaxYear0609Temp-MinYear0609Temp + 1 = CountYear0609Temp
	AND MaxYear0609Temp=Year(Now());//最大年份需要是今年,要不然可能是去年以前连续两年都有销售记录的Id

下面是图表的Dimension,Expression和Chart:


 

如图所示,最近一年才有记录的是4个Id,连续两年有销售纪录的是2个Id,连续三年有销售纪录的是8个Id。

下面用一些数据测试一下我的结果,首先在Customer.csv中插入如下数据:

2012,18
2013,18
2012,19
2014,19
2013,20
(PS: 上面的这些Id在之前数据源中都不存在,是这次新加的)

按照我现在的逻辑,增加上面Id为18,19,20的记录都不会导致图表发生变化,如下所示:

再增加如下数据,

2014,21
2013,22
2014,22
2012,23
2013,23
2014,23

则上面图表中的三项数据都会+1,如下所示:

 

各位看官,假如文中有错还望不吝赐教!感谢感谢!

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值