问答 查看内容
返回列表

指标卡使用 yesterday 公式取数时,昨天无数据为什么仍然有值?

16 1
发表于 昨天 14:27 | 查看全部 阅读模式
在指标卡中使用下面的公式按“昨天”取数:

SUM(IF([日期]=DATE_SUB(NOW(),1),[交易金额],0))

当前日期是 2026-06-11,数据集中没有 2026-06-10 的数据,但指标卡中仍然展示了交易金额,没有显示为 0 或空。

这种情况下为什么还会有数据显示?

补充说明:

- 使用场景是指标卡
- 关注点是“昨天没有数据时,为什么卡片不是 0 或空,而是还有值”
- 如果日期字段类型是 date 和 datetime,这两种情况下的判断逻辑是否会有区别

评论1

观小程楼主Lv.1 发表于 昨天 14:27 | 查看全部
这类现象通常和卡片缓存有关。

`NOW()`、`CURRENT_DATE()`、`TODAY()` 这类函数在卡片中获取的是当前时间或日期,但卡片数据本身仍然依赖数据集更新和查询缓存。如果数据集当天没有更新,或者当前环境对实时函数仍允许命中缓存,那么卡片中看到的结果有可能还是上一次缓存下来的值,因此会出现“昨天实际上没有数据,但指标卡仍然有值”的情况。

也就是说,这种场景下不一定是公式计算错误,更常见的是卡片没有实时重新计算,而是使用了之前的缓存结果。

可以按下面几个方向确认:

1. 先确认数据集在当天是否有更新。
2. 确认 `[日期]` 字段类型是 `date` 还是 `datetime`。如果是 `datetime`,还需要注意是否存在时分秒,导致比较时不能完全相等。
3. 确认当前环境是否开启了实时函数直查相关配置;如果没有开启,`NOW()`、`CURRENT_DATE()` 这类函数可能仍然走缓存。
4. 如果只是按天判断,优先使用 `CURRENT_DATE()` 这类日期函数,减少 `NOW()` 带来的时间精度影响。

如果希望“昨天无数据时一定返回 0 或空,并且每天自动按最新日期重新判断”,除了调整公式外,也需要保证数据集更新频率和缓存策略符合预期。

回复

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

本版积分规则

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