• 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,例如以下所看到的:

    各位看官,假如文中有错还望指教!

    感谢感谢!

  • 相关阅读:
    Spring中的注解@Service @Component @Controller @Repository区别
    hibhibernate中hql中的语句where语句查询List出现空
    转-sql中的case when的用法
    转-JS子窗口创建父窗口操作父窗口
    JS子父窗口互相取值赋值详解介绍
    转-JS之Window对象
    转-JS中document对象详解
    java设计优化--装饰者模式
    Java继承中属性、方法和对象的关系
    利用Ant脚本生成war包的详细步骤
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6758668.html
Copyright © 2020-2023  润新知