当前位置: 首页 > 买入攻略 >数据太复杂? 宝宝不哭 试试FirstSortedValue用法

数据太复杂? 宝宝不哭 试试FirstSortedValue用法

2023-05-10 14:56:27

小编语

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



↓↓↓ 点击"阅读原文" 【免费下载Qlik】  




友情链接

Copyright © 2023 All Rights Reserved 版权所有 上海股票分析平台