[]
        
在线Demo 免费试用
(Showing Draft Content)

使用上下文变量

1. 概述

1.1 功能概述

Wyn 的分析表达式中支持调用变量,使表达式返回动态值。度量值中支持仪表板参数列选中值(SelectedValue)和列选中范围(SelectedRange)三种变量。计算列中仅支持仪表板参数

度量值

计算列

PixPin_2025-07-09_14-26-22

PixPin_2025-07-09_14-26-55

2. 表达式中使用仪表板参数

可以将仪表板参数应用到表达式中,从而实现想要的效果。比如实现动态维度或动态度量效果,相关示例请见动态维度动态度量值。当然,您也可以将用户上下文信息或组织上下文信息绑定到仪表板参数中,然后在表达式中应用参数,以实现在表达式中使用用户信息的效果。

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

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

    单值参数使用示例

    多值参数使用示例

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

    image

    image

    type=info

    注意:

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

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

3. 使用列选中值(SelectedValue)

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

3.1 具体用法

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

    image

  2. 语法规则如下:

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

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

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

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

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

3.2 示例一 获取筛选器的值

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

    image

  2. 列选中值设置如下:

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

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

  4. 如标签列表中选中一个值,“华北”,那么列选中值也将返回“华北”。当标签列表未选中值时,列选中值将返回备用值“东北”。

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

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

    image

  2. 列选中值设置依然如下:

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

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

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

3.4 示例三 综合应用示例

示例实现的效果是筛选器选择一个年份,然后图表中显示对应的数据信息。可以看到图表当中有一个指标是“同比收入”,这里指“上一年”当月的收入。需要根据筛选器中所选择的年份,动态计算上一年。这里我们就是使用列选中值来获取筛选器选择的值,然后通过“-1”来得到“上一年”。

image

来看一下实现过程:

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

    image

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

    image

  3. 表达式中先定义了一个变量“curYear”,它的值为列选中值,“预算日期”表中的“year”列。这与筛选器中绑定的字段一致。先通过 removeFilters 将筛选器对年份的过滤去除掉,然后再通过“curYear-1” 来确定计算的范围为“上一年”。从而动态得到了上一年的销售合计。

    image

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

    表达式-列选中值示例

4. 列选中范围(SelectedRange)

列选中范围仅在度量值中可用,用于获取范围筛选器中设定的值。由于范围筛选器筛设定的是一个范围,所以我们获取它的最大值或最小值。支持的筛选器如下:

  • 数值范围筛选器

  • 日期范围筛选器

  • 相对日期筛选器

4.1 具体用法

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

    image

  2. 语法规则如下:

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

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

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

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

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

4.2 示例一 获取范围的最大最小值

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

    image

  2. 列选中范围设置如下:

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

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

  3. 可见列选中范围中设置的目标列与筛选器绑定的列一致,此时筛选器中选择一个范围,以上两个表达式将返回该范围的最小值和最大值。拿到这两个日期后,就可以在表达式中计算同比数据。

    image

  4. 绑定到组件中,可实现如下效果。筛选器中选择一个时间范围,折线面积图中即可显示这个时间段内的销售额以及它的同比数据。

    image