nimotea 发表于 2023-7-17 18:50:45

【Wyn V7.0】WAX分析能力灵活升级:WAX轻松实现指定时间、特定范围的同环比计算

本帖最后由 nimotea 于 2023-7-20 11:48 编辑

背景

       在实际数据分析应用需求中,我们经常会有这样的交互需求。 在页面中展示一个年份/月份筛选器, 默认选中当前年或者当前月。当选中该年份时,需要在某个柱形图中展示 该年/月的销售情况以及对应的同比年的营销金额。并随着切换选中年/月份,可以动态的观察每个年/月份的同环比变化趋势。


应用场景
       在之前版本的字段快速计算特性中,我们可以快速的对指定字段进行同环比,偏移等分析。但在上面提到的场景中,就不太合适了,默认筛选器的筛选会将数据过滤到只有选中当前年/月的对应业务数据,这样是无法拿到对应的同比数据的。在 V7.0 中,Wyn 针对于这种场景提供了 SelectedValue 和 SelectedRange 两个新函数,可以让原本的数据计算规则更加灵活。本章节就来给大家介绍下,如何在Wax 中动态的获取到 筛选器的选中值以及利用这点特性进行灵活数据探索吧。


新特性介绍
注: selectedValue、selectedRange 函数只能应用于度量值表达式中。
公式可在编辑器右上角快速生成


selectedValue
#{selectedValue["entity","attribute", "alternateResult"]}selectedValue 用来获取单值筛选结果, 其中 entity 为数据集名称或数据模型中的表名,attribute 为获取的筛选字段名称,alternateResult 为如果获取不到指定单值,则返回的结果。

eg. 为了实现筛选当前年,获取我们指定年份对应的销售数据和对应同比销售数据,可参考以下实现方式:
1. 创建计算列 "年份"
Year('Demo_销售明细'[实际日期])2. 拖动创建一个标签列表筛选器,绑定 "年份" 计算列
3. 创建度量值 "同期金额"
var curYear = #{selectedValue["Demo_销售明细","年份", "2022"]}
      return Calculate(
            SumX('Demo_销售明细','Demo_销售明细'[订单金额]),
            RemoveFilters('Demo_销售明细'[年份]),
            'Demo_销售明细'[年份] = curYear-1
      )4. 将 实际日期月字段绑定在分类轴上,将订单金额字段和同期金额字段绑定到数值轴上


获取不到值的情况:
1. entity,attribute 字段名称填写出错导致拿不到值

2. 对应的 attribute 字段并没有绑定在任何 筛选器上

3. 绑定了对应 attribute 的筛选器, 目前并没有任何一个选项值被选中

4. 绑定了对应 attribute 的筛选器, 为多选状态, 并且当前已选中了多个值

5. 众所周知,Wyn会对日期类型字段做自动拆分, 如果将日期字段拆分的子字段(年、季度、月...) 绑定在筛选器上,子字段无法被指定为 attribute 的可选值。(实际上子字段绑定筛选是范围筛选,可使用 selectedRange解决)


selectedRange
#{selectedRange["entity","attribute", "min/max","alternateResult"]}      selectedRange 用来获取范围筛选结果, 其中 entity 为数据集名称或数据模型中的表名,attribute 为获取的筛选字段名称, 第三个参数可以指定为 min 或者 max 用来获取当前筛选值范围的最小值/最大值,alternateResult 为如果获取不到指定值,则返回的结果。

eg. 在获取指定时间范围筛选场景中,可参考以下场景实现:
1. 拖动创建一个时间范围筛选器,绑定 "实际日期" 数据字段
2. 创建度量值 "同期金额2"
var _max = #{selectedRange["Demo_销售明细","实际日期", "max","2022/4/1"]}
      var _min = #{selectedRange["Demo_销售明细","实际日期", "min","2022/4/1"]}
      var minDate =Date(Year(_min), Month(_min), Day(_min))
      var maxDate =Date(Year(_max), Month(_max), Day(_max))


      return Calculate(SumX('Demo_销售明细','Demo_销售明细'[订单金额]),
      RemoveFilters('Demo_销售明细'[实际日期]),
      'Demo_销售明细'[实际日期] <= DateAdd(maxDate,-1,YEAR),
      'Demo_销售明细'[实际日期] >= DateAdd(minDate,-1,YEAR)
   )3. 将支付方式绑定到分类轴上,将 同期金额2 以及订单金额拖动到数值轴上

运行效果展示




产品和示例下载

下载示例demo 即可快速体验 7.0数据分析新特性.

页: [1]
查看完整版本: 【Wyn V7.0】WAX分析能力灵活升级:WAX轻松实现指定时间、特定范围的同环比计算