搜索
大数据中国 首页 行业资讯 企业投稿 查看内容
数据太复杂? 宝宝不哭 试试FirstSortedValue用法
2016-11-11 11:01 | 查看: 937| 评论: 0

小编语

项目中经常会出现一些令人头疼的数据场景,数据并不是简单汇总计算,而是必须要先经过维度最小粒度的运算,基于运算的结果集再进行汇总等二次运算,尤其基于基础数据最小粒度出现比率或者各种复杂判别时候,经常会遇到这类问题,有一些问题可以使用简单的aggr函数来实现,一些复杂的问题需要各种集合运算函数结合aggr分类再集合set analisys实现。

场景描述
  • 数据逻辑极为复杂,前端无法处理,需要基于最小粒度进行各种运算,基于数据底层处理原则,在后台处理成了到id,到月的数据值(注意:数值是经过底层各种复杂运算得来的,粒度到月)

id

年月

计算之后数值

a

201601

10

a

201603

6

a

201606

8

b

201602

9

b

201604

2

b

201606

3

  • 由于实际业务,月份不连贯,有随机性,但是这里到月的数据都是处理好的,找到所选月就找到了需要的数据

  • 需求的数据是找到小于选择年月范围内的最大年月的数值,例如选择201605 应该找id为a和b的小于5月的最大月份数据,这里没有5月就要取4月,没有4月取3月,以此类推。201605这个选择条件下应该把a,201603,6;b,201604,2这两条数据取出

  • 准备一个连贯的年月选择项


实现步骤

1. 后台数据结构如下:


2. 前端建立垂直表,维度放id,表达式如下:


3. 运行结果如下:

  • 当选择5月时 取出小于5月的最大月份的数值:分别是id a下3月的值6 跟id b 下4月的值2


  • 当选择10月时 取出小于10月的最大月份的数值:分别是id a下6月的8 跟id b下6月的3


写在最后

1. 函数本身实现的功能是按照某个维度某个粒度进行升序或者降序取数

2. 本次场景只是举例,最小粒度数据取出之后,可以再根据其他大的维度进行汇总,根据需要进行set analysis条件过滤 ,例如sum({<年月={"<=$(=max(年月))"},Id=>} aggr(firstsortedvalue({<年月={"<=$(=max(年月))"},Id=>} 计算之后数值, -年月),id)) 

3. 本篇文章核心思想并不是具体aggr、或者类似firstsortedvalue这类的某些函数的应用,而是希望大家重视针对中间结果集的二次运算,毕竟复杂一些的需求都会涉及到这些对于结果集的二次运算,这类需求不会因为敏捷BI或者传统BI有任何改变,这类需求永远存在。


以上方法适用于qlik产品,希望今天的推送能帮助小伙伴们解决一些实际问题,不管是什么BI工具,用好函数很重要。最后,你也可以阅读原文,下载qlik,轻松实现数据分析与可视化。



END



亦策软件

EBIStrategy 

一家国内领先的专注于大数据整体解决方案的高科技企业,

为客户提供大数据分析平台端到端的解决方案。


咨询电话:400-676-1711



免责声明: 除非特别声明,文章均为投稿或网络转载,仅代表作者观点,与大数据中国网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。如果本文内容有侵犯你的权益,请发送信息至ab12-120@163.com,我们会及时删除

最新评论

关闭

站长推荐上一条 /1 下一条

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-12-29 23:39 , Processed in 0.053063 second(s), 23 queries .

返回顶部