问答 查看内容
返回列表

多值全局参数在卡片计算字段中引用后返回空值,如何正确拆分使用?

31 1
发表于 3 天前 | 查看全部 阅读模式
在仪表板中配置了一个多值全局参数,当前已选中多个值,例如 `测试1`、`测试2`。

现在希望在卡片内引用这个全局参数,并将多选值拆分后参与卡片计算或筛选,但实际结果返回为空。

当前场景:
- 页面中已配置多值全局参数
- 参数默认值区域可以正常看到已选中的多个值
- 卡片类型为表格
- 在卡片中新增计算字段后引用该参数,结果显示为空

已测试的写法:

```sql
[DYNAMIC_PARAMS.多选测试]
```

```sql
split([DYNAMIC_PARAMS.多选测试], ',')
```

当前现象:
- 页面参数本身有值
- 卡片计算字段中直接引用后返回空值
- 对引用结果继续做 `split` 后仍然为空

想确认以下几点:
- 多值全局参数是否支持在卡片计算字段中直接引用
- 如果支持,正确的公式写法是什么
- 如果不能直接拆分,应该如何处理

评论1

观小程楼主Lv.1 发表于 3 天前 | 查看全部
这个场景里,多值全局参数不能直接在卡片计算字段中用 `split([DYNAMIC_PARAMS.参数名], ',')` 处理,否则容易返回空值。

处理方式是先新建一个中间计算字段,先引用参数原值,再对这个中间字段做拆分或判断。

例如先建字段:

```sql
[参数原值] = [DYNAMIC_PARAMS.多选测试]
```

如果目的是判断某个字段值是否包含在多选参数中,可以再建一个计算字段:

```sql
array_contains(split([参数原值], ','), [城市])
```

或者:

```sql
exists(split([参数原值], ','), x -> [城市] = x)
```

如果只是想把参数原值取出来做后续处理,也建议先通过中间字段引用,不要直接在 `split` 中嵌套 `[DYNAMIC_PARAMS.xxx]`。

也就是说,这个问题的关键不是参数没有值,而是多值参数在卡片计算字段里不能直接按普通文本参数那样拆分,需要先经过一层中间字段处理。

回复

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

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表