[]
        
(Showing Draft Content)

表达式中使用变量

Wyn 的分析表达式中支持调用变量,使表达式返回动态值。

度量值中支持仪表板参数列选中值(SelectedValue)和列选中范围(SelectedRange)三种变量。

image

计算列中仅支持仪表板参数

image

表达式中使用仪表板参数

可以将仪表板参数应用到表达式中,从而实现想要的效果。比如实现动态维度或动态度量效果,相关示例请见动态维度动态度量值

当然,您也可以将用户上下文信息或组织上下文信息绑定到仪表板参数中,然后在表达式中应用参数,以实现在表达式中使用用户信息的效果。

仪表板参数的调用方法如下:

单击表达式编辑窗口右上角的变量按钮,然后选择已有的仪表板参数即可将其添加到表达式中。

单值参数使用示例:

image

多值参数使用示例:

多值参数仅可以用 In 和 NotIn 函数中。

image

注意

建议为参数预先设置默认值,以免在某些场景下提示错误信息。

另外,表达式中仅支持来源于静态值的参数,也就是说数据来源设置为“查询结果”或“数据列”的参数不可以在表达式中使用。

使用列选中值(SelectedValue)

列选中值仅在度量值中可用,用于获取目标列的过滤值。而对目标列的过滤来自筛选器(相对日期除外)或其他图表的联动筛选。

具体用法

单击变量,然后选择列选中值可将该变量添加到表达式中,接下来需要按照它的语法规则匹配修改。

image

语法规则如下:

#{selectedValue["entity","attribute", "alternateResult"]}

  • entity:现有表名,不支持表达式。

  • attribute:指定列名,不支持表达式。

  • alternateResult:当目标列没有返回过滤值或返回了多个过滤值时则使用备用值,即 alternateResult 定义的值。

可以看出变量列选中值返回的始终是一个单值。

示例一 获取筛选器的值

添加一个标签列表,并绑定客户地区

image

列选中值设置如下:

#{selectedValue["Demo_销售明细","客户地区", "东北"]})

可见列选中值中设置的目标列与筛选器绑定的列一致,此时筛选器中选择一个数据,列选中值将返回相同的数据。

如标签列表中选中一个值,“华北”,那么列选中值也将返回“华北”。

当标签列表未选中值时,列选中值将返回备用值“东北”。

示例二 获取其他图表选中的值

添加一个柱形图,并在分类中绑定客户地区

image

列选中值设置依然如下:

#{selectedValue["Demo_销售明细","客户地区", "东北"]})

可见列选中值中设置的目标列与图表分类中绑定的数据一致,此时图标中选择一个柱子,列选中值将返回相同的数据。

如图表中选中一个柱子“华北”,那么 #{selectedValue["Demo_销售明细","客户地区", "东北"]}) 也将返回“华北”。

当图表未选中柱子时,#{selectedValue["Demo_销售明细","客户地区", "东北"]}) 将返回备用值“东北”。

示例三 综合应用示例

示例实现的效果是筛选器选择一个年份,然后图表中显示对应的数据信息。

可以看到图表当中有一个指标是“同比收入”,这里指“上一年”当月的收入。需要根据筛选器中所选择的年份,动态计算上一年。

这里我们就是使用列选中值来获取筛选器选择的值,然后通过“-1”来得到“上一年”。

image

来看一下实现过程:

首先为筛选器绑定“预算日期”表中的“year”字段。

image

然后在“销售明细”表上创建一个度量字段“同比收入”。

image

表达式中先定义了一个变量“curYear”,它的值为列选中值,“预算日期”表中的“year”列。这与筛选器中绑定的字段一致。

先通过 removeFilters 将筛选器对年份的过滤去除掉,然后再通过“curYear-1” 来确定计算的范围为“上一年”。

从而动态得到了上一年的销售合计。

image

最终实现动态获取当前年的上一年数据。

表达式-列选中值示例

列选中范围(SelectedRange)

列选中范围仅在度量值中可用,用于获取目标字段在经过范围筛选器筛选后的值。由于范围筛选器筛选后为一个范围,所以我们获取它的最大值或最小值

支持的筛选器:

  • 数值范围筛选器

  • 日期范围筛选器

  • 相对日期筛选器

具体用法

单击变量,然后选择列选中范围可将该变量添加到表达式中,接下来需要按照它的语法规则匹配修改。

image

语法规则如下:

#{selectedRange["entity","attribute", "min/max","alternateResult"]}

  • entity:现有表名,不支持表达式。

  • attribute:指定列名,不支持表达式。

  • min/max:二选一,指定获取最小值还是最大值。

  • alternateResult:当目标列没有返回值或返回多个不同值时则使用备用值,即 alternateResult 定义的值。

示例一

添加一个日期范围筛选器,并绑定“Order Date

image

列选中范围设置如下:

#{selectedRange["Sales","Order Date", "min","2007/01"]}

#{selectedRange["Sales","Order Date", "max","2009/12"]}

可见列选中范围中设置的目标列与筛选器绑定的列一致,此时筛选器中选择一个范围,以上两个表达式将返回该范围的最小值和最大值。

拿到这两个日期后,就可以在表达式中计算同比数据。

image

绑定到组件中,可实现如下效果。

筛选器中选择一个时间范围,折现面积图中即可显示这个时间段内的销售额以及它的同比数据。

image