[{"id":"840f0737-df1d-47ae-bb0a-359b01fe0608","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"d5d9cdef-8854-4505-89be-a2bbc3cb4482","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"3dc3dd55-35b0-4d23-bf62-47bc3650e4ee","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"80d84fbc-d0f8-4e4a-947f-e3e4de9b49b2","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"9152b7ca-0186-4fe3-a26f-5a05f322db07","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]}]
Wyn 的分析表达式中支持调用变量,使表达式返回动态值。
度量值中支持仪表板参数、列选中值(SelectedValue)和列选中范围(SelectedRange)三种变量。
计算列中仅支持仪表板参数。
可以将仪表板参数应用到表达式中,从而实现想要的效果。比如实现动态维度或动态度量效果,相关示例请见动态维度、动态度量值。
当然,您也可以将用户上下文信息或组织上下文信息绑定到仪表板参数中,然后在表达式中应用参数,以实现在表达式中使用用户信息的效果。
仪表板参数的调用方法如下:
单击表达式编辑窗口右上角的变量按钮,然后选择已有的仪表板参数即可将其添加到表达式中。
单值参数使用示例:
多值参数使用示例:
多值参数仅可以用 In 和 NotIn 函数中。
注意
建议为参数预先设置默认值,以免在某些场景下提示错误信息。
另外,表达式中仅支持来源于静态值的参数,也就是说数据来源设置为“查询结果”或“数据列”的参数不可以在表达式中使用。
列选中值仅在度量值中可用,用于获取目标列的过滤值。而对目标列的过滤来自筛选器(相对日期除外)或其他图表的联动筛选。
单击变量,然后选择列选中值可将该变量添加到表达式中,接下来需要按照它的语法规则匹配修改。
语法规则如下:
#{selectedValue["entity","attribute", "alternateResult"]}
entity:现有表名,不支持表达式。
attribute:指定列名,不支持表达式。
alternateResult:备用值,当目标列没有返回过滤值或返回了多个过滤值时则使用备用值。
可以看出变量列选中值返回的始终是一个单值。
添加一个标签列表,并绑定“客户地区”。
列选中值设置如下:
#{selectedValue["Demo_销售明细","客户地区", "东北"]})
可见列选中值中设置的目标列与筛选器绑定的列一致,此时筛选器中选择一个数据,列选中值将返回相同的数据。
如标签列表中选中一个值,“华北”,那么列选中值也将返回“华北”。
当标签列表未选中值时,列选中值将返回备用值“东北”。
添加一个柱形图,并在分类中绑定“客户地区”。
列选中值设置依然如下:
#{selectedValue["Demo_销售明细","客户地区", "东北"]})
可见列选中值中设置的目标列与图表分类中绑定的数据一致,此时图标中选择一个柱子,列选中值将返回相同的数据。
如图表中选中一个柱子“华北”,那么 #{selectedValue["Demo_销售明细","客户地区", "东北"]}) 也将返回“华北”。
当图表未选中柱子时,#{selectedValue["Demo_销售明细","客户地区", "东北"]}) 将返回备用值“东北”。
示例实现的效果是筛选器选择一个年份,然后图表中显示对应的数据信息。
可以看到图表当中有一个指标是“同比收入”,这里指“上一年”当月的收入。需要根据筛选器中所选择的年份,动态计算上一年。
这里我们就是使用列选中值来获取筛选器选择的值,然后通过“-1”来得到“上一年”。
来看一下实现过程:
首先为筛选器绑定“预算日期”表中的“year”字段。
然后在“销售明细”表上创建一个度量字段“同比收入”。
表达式中先定义了一个变量“curYear”,它的值为列选中值,“预算日期”表中的“year”列。这与筛选器中绑定的字段一致。
先通过 removeFilters 将筛选器对年份的过滤去除掉,然后再通过“curYear-1” 来确定计算的范围为“上一年”。
从而动态得到了上一年的销售合计。
最终实现动态获取当前年的上一年数据。
列选中范围仅在度量值中可用,用于获取范围筛选器中设定的值。由于范围筛选器筛设定的是一个范围,所以我们获取它的最大值或最小值。
支持的筛选器:
数值范围筛选器
日期范围筛选器
相对日期筛选器
单击变量,然后选择列选中范围可将该变量添加到表达式中,接下来需要按照它的语法规则匹配修改。
语法规则如下:
#{selectedRange["entity","attribute", "min/max","alternateResult"]}
entity:现有表名,不支持表达式。
attribute:指定列名,不支持表达式。
min/max:二选一,指定获取最小值还是最大值。
alternateResult:备用值,当目标列没有返回值或返回多个不同值时则使用备用值。
添加一个日期范围筛选器,并绑定“Order Date”。
列选中范围设置如下:
#{selectedRange["Sales","Order Date", "min","2007/01"]}
#{selectedRange["Sales","Order Date", "max","2009/12"]}
可见列选中范围中设置的目标列与筛选器绑定的列一致,此时筛选器中选择一个范围,以上两个表达式将返回该范围的最小值和最大值。
拿到这两个日期后,就可以在表达式中计算同比数据。
绑定到组件中,可实现如下效果。
筛选器中选择一个时间范围,折线面积图中即可显示这个时间段内的销售额以及它的同比数据。