You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在仪表板中生成状态值(计数)?含状态选项及尝试方案

解决仪表板状态计数(WIP/Open/Closed/Total)的方法

首先得先排查你之前用@datasources.Requset.query.filters.Status._equals失败的常见坑:

  • 拼写错误:比如数据源名是不是Request而不是Requset?少了个字母u这种低级错误很容易踩!
  • 语法适配问题:不同BI/低代码工具(比如Retool、Appsmith、Metabase)的过滤器语法差异不小,有些工具用==而非_equals,或者要求过滤器放在特定的配置节点里。

下面给你几种靠谱的实现思路,按需选就行:

方法1:数据源层面聚合查询(最推荐)

直接让数据库/数据源帮你算好计数,比前端计算高效得多:

  • 单个状态计数(比如Open):
    如果是SQL数据源,直接写SELECT COUNT(*) AS open_count FROM your_table WHERE Status = 'Open';如果是可视化工具,找到「聚合」选项,选「计数」,再添加过滤器Status 等于 Open就行。
  • Total计数:
    简单粗暴写SELECT COUNT(*) AS total_count FROM your_table,或者在工具里直接选「计数所有行」。

方法2:前端/仪表板层面计算(适合无法改数据源的场景)

如果只能拿到全量数据,就在仪表板的代码块里手动统计:
假设你的全量数据存在@datasources.Request.data里,用类似这样的代码(根据工具支持的语言调整,比如JavaScript):

// 统计各状态数量
const statusCounts = {
  Open: @datasources.Request.data.filter(item => item.Status === 'Open').length,
  WIP: @datasources.Request.data.filter(item => item.Status === 'WIP').length,
  Closed: @datasources.Request.data.filter(item => item.Status === 'Closed').length,
  Total: @datasources.Request.data.length
};

之后把statusCounts.Open这类变量绑定到仪表板的数值组件上就OK。

方法3:修正你的过滤器语法

如果一定要用_equals的方式,得确保语法和工具匹配:
比如在Retool这类工具里,正确的写法可能是这样的——先触发带过滤器的查询,再取结果长度:

// 触发带Open状态过滤器的查询
await Request.trigger({
  additionalScope: {
    filters: {
      Status: { _equals: 'Open' }
    }
  }
});
// 获取计数
const openCount = Request.data.length;

还要注意:你的查询得提前配置好接受这个过滤器参数,比如在SQL的WHERE子句里引用{{filters.Status._equals}}。

最后再提两个容易忽略的细节:

  • 确认数据源返回的Status字段值和你匹配的字符串完全一致(比如大小写:是WIP还是wip?有没有多余空格?)
  • 如果需要实时数据,记得开启查询的自动刷新,保证计数是最新的

内容的提问来源于stack exchange,提问作者KiKu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:13:24