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,如下所示:

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

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

时间: 2024-11-06 03:49:21

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

活跃用户数量偏少?让我们从代码上分析一下原因!

最近有网友发现友盟的数据统计里面,活跃用户的数量有点不大对劲,跟启动次数相比,严重偏少.sdk的使用方式没啥好说的,就那么简单几步,应该不会是sdk设置的问题.于是就从友盟关于活跃用户的定义开始,着手分析这个问题. 活跃用户的定义:打开应用的用户即为活跃用户,不考虑用户的使用情况. 从上面的文章,了解到Umeng里面对用户的定义:友盟将一个独立的设备视为一个用户,然而每个独立的用户是通过UMID来进行唯一标识的.然而UMID又是神马鬼东西?简单来说就是友盟会在第一次安装的时候生成一个UMID,当

用Redis bitmap统计活跃用户、留存

用Redis bitmap统计活跃用户.留存 Spool的开发者博客,描述了Spool利用Redis的bitmaps相关的操作,进行网站活跃用户统计工作. 原文:http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/ Redis支持对String类型的value进行基于二进制位的置位操作.通过将一个用户的id对应value上的一位,通过对活跃用户对应的位进行置位,就能够用一个value

ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目

ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目 思路同我之前的博客的思路 https://www.cnblogs.com/symkmk123/p/10197467.html 但是数据是从web访问的数据 avro第一次过滤 观察数据的格式,我们主要分析第四个字段的数据.发现有.css , .jpg .png等等等无效的数据. 通过观察数据发现有效数据都不带 . , 所以第一次过滤写入avro总表里的数据一次过滤后的有效数据,不包含 .css , .jpg

5.2亿活跃用户“不活跃”?有点山寨的美图电商尴尬了

前不久,美图正式上线了独立的电商平台--"美铺". 根据美图公布的信息,美铺被定义为一个时尚分享购物社区.有别于传统的B2C或C2C模式,美铺采取的是B2C2C的买手模式,即通过包括买手.网红.KOL在内的时尚达人来连接品牌商和消费者. 文/张书乐(TMT行业观察者.游戏产业时评人,人民网.人民邮电报专栏作者) 刊载于<计算机应用文摘>2017年5月上旬刊 然而,这并没有多少新鲜感.或者说,这不过是微商式的KOL版. 亦步亦趋学网易?这个可能有 把潮自拍的定制功能单拿了出来

redis 用setbit(bitmap)统计活跃用户

getspool.com的重要统计数据是实时计算的.Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间.在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”(dailyunique users) 的时间消耗小于50ms, 占用16MB内存.Spool现在还没有1亿2千8百万用户,但是我们的方案可以应对这样的规模.我们想分享这是如何做到的,也许能帮到其它创业公司. Bitmap以及Redis Bitmaps快速入门(Crash Cour

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html 写于2013年7月8日,译文如下: “可以解决推特所面临的挑战”的玩具般的方案是一个常用在扩展性上的比喻.每个人都觉得推特很容易实现.稍微具备一些系统架构的知识我们就可以构建一个推特,就这么简单.但是根据推特软件开发部门的VP Raffi Krikorian在 Timelin

位图法统计活跃用户

Setbit 的实际应用 场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为 今天活跃,否则记为不活跃 每周评出: 有奖活跃用户: 连续7天活动每月评,等等... 思路: Userid dt active1 2013-07-27 11 2013-0726 1 如果是放在表中, 1:表急剧增大,2:要用group ,sum运算,计算较慢 用: 位图法 bit-mapLog0721: '011001...............0' ......log0726 : '011001.......

支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃用户,系统日传输tweet更多达4亿条,并已完成了以服务为核心的系统架构蜕变. Twitter如今在世界范围内已拥有1.5亿的活跃用户,为了给用户生成timeline(时间轴)需支撑30万QPS,其firehose每秒同样生成22MB数据.整个系统每天传输tweet 4亿条,并且只需要5分钟就可以让一条twe

[PHP]基于Sort Set进行活跃用户统计

作者:zhanhailiang 日期:2014-12-14 参考文章: 使用Redis bitmap进行活跃用户统计 本文提供基于Sort Set进行活跃用户统计的PHP版本: https://github.com/billfeller/billfeller.github.io/blob/master/code/UserTj.php