找回密码
 立即注册

QQ登录

只需一步,快速开始

nimotea

超级版主

23

主题

95

帖子

536

积分

超级版主

Rank: 8Rank: 8

积分
536
nimotea
超级版主   /  发表于:2023-7-17 18:50  /   查看:957  /  回复:0
本帖最后由 nimotea 于 2023-7-20 11:48 编辑

背景

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


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


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

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

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

获取不到值的情况:
1. entity,attribute 字段名称填写出错导致拿不到值
命名错误.png841354675.png
2. 对应的 attribute 字段并没有绑定在任何 筛选器上
字段未绑定.png908214721.png
3. 绑定了对应 attribute 的筛选器, 目前并没有任何一个选项值被选中
值未被选中.png152088927.png
4. 绑定了对应 attribute 的筛选器, 为多选状态, 并且当前已选中了多个值
多选.png241819762.png
5. 众所周知,Wyn会对日期类型字段做自动拆分, 如果将日期字段拆分的子字段(年、季度、月...) 绑定在筛选器上,子字段无法被指定为 attribute 的可选值。(实际上子字段绑定筛选是范围筛选,可使用 selectedRange解决)
日期子字段.png525181884.png

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

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


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

运行效果展示


示例.png470225524.png 案例2.png799721984.png

产品和示例下载

下载示例demo 即可快速体验 7.0数据分析新特性.
wyn-export-20230717183101.zip (9.18 MB, 下载次数: 24)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部