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:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenBsdW1l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenBsdW1l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
如图所看到的,近期一年才有记录的是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报表显示连续若干个月内活跃用户的数量的更多相关文章
- 用Redis bitmap统计活跃用户、留存
Spool的开发者博客,描述了Spool利用Redis的bitmaps相关的操作,进行网站活跃用户统计工作. 原文:http://blog.getspool.com/2011/11/29/fast-e ...
- 水晶报表显示到aspx页面中
1.在前台添加水晶报表显示控件. <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server&q ...
- RoportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法
最近在进军测试自动化框架学习阶段,但无意间总是会伴随小问题的困扰,比如中文乱码,而导致显示总是不舒服,个人觉得,就一定要解决,似乎有点点强迫症.所以遇到RoportNG报表显示中文乱码和TestNG显 ...
- ReportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法
最近在进军测试自动化框架学习阶段,但无意间总是会伴随小问题的困扰,比如中文乱码,而导致显示总是不舒服,个人觉得,就一定要解决,似乎有点点强迫症.所以遇到ReportNG报表显示中文乱码和TestNG显 ...
- ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目
ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目 思路同我之前的博客的思路 https://www.cnblogs.com/symkmk123/p/101974 ...
- 通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构
原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active ...
- Redis-统计活跃用户
Bitmap(即Bitset)Bitmap是一串连续的2进制数字(0或1),每一位所在的位置为偏移(offset),在bitmap上可执行AND,OR,XOR以及其它位操作. package test ...
- 05 redis中的Setbit位图法统计活跃用户
一:场景=>>>长轮询Ajax,在线聊天时,能够用到 Setbit 的实际应用 场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为 今天活跃,否则记为不活跃 每周评出: 有奖活 ...
- 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃 ...
随机推荐
- python文件和目录操作方法大全
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和 ...
- Ubuntu下安装JDK1.7
Ubuntu操作系统下如何手动安装JDK1.7呢?本文是我经历的全过程. Ubuntu版本:12.04 LTS JDK版本:1.7.0_04 安装目录:/usr/local/development/j ...
- 快速了解Log4J
http://liuzhijun.iteye.com/blog/1746571 ******************** Log4J的三个组件: Logger:日志记录器,负责收集处理日志记录 ...
- oracle中的字符串函数详解
花了点时间 复习.了一下字符串函数 希望对初学者有帮助 ----------连接字符串函数-----------------select concat('leiyi','hubei') from du ...
- tmpx75 I2C 温度传感器驱动程序添加
在kernel 内 make menuconfig 加入相关选项 Device Drivers ---> <*> Hardware Monitoring support ---> ...
- Lua语言开发Cocos2d-x游戏视频教程第L0401课-Cocos2d-x中使用Lua
http://www.eoeandroid.com/thread-320733-1-1.html
- node-webkit播放目录下所有网页文件
1.编写index.html文件 这里我们需要播放某一个目录下所有的网页文件,要做到切换不同的网页,可以在index.html中使用iframe.通过js动态改变iframe的src属性,从而动态地切 ...
- 纯CSS实现圆角、可拖动的一个DIV模块层
<style>body{ margin:0px; padding:0px; font-size:14px;}#t { position:absolute; float:left; left ...
- 【转】ImageView的Scaletype参数设置
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义Android:s ...
- JavaScript操作XML工作记录
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...