
看到一张Dune图表上写着“近7日活跃地址”或某个协议的数据,最稳妥的理解是:这是一个查询在某个时间点执行后得到的结果,不是浏览器打开那一刻的实时链上状态。数字能不能直接引用,取决于四件事——查询本身、参数设置、执行时间、数据覆盖范围。这几项对不上,图表看起来再规整,也只能算“某次执行的快照”。
页面打开时间不等于SQL执行时间
Dune官方文档把Query Editor、查询参数、调度和最新结果API分开说明,本身就提示了这些环节各有时间点。图表展示的是查询执行结果;你刷新页面,看到的是浏览器重新渲染,并不代表SQL重新跑了一遍,更不代表底层区块数据已经追到当前时刻。Dune查询编辑器文档
因此引用前至少要分清三个时间:
- 页面查看时间:你此刻打开看板的时间;
- 查询执行时间:这条SQL最后一次成功跑完的时间;
- 数据覆盖时间:SQL里
WHERE限定的时间范围,以及来源表本身更新到哪一天、哪个区块。
这三者可以相差很远。一个看板今天打开,执行时间可能是三天前,数据窗口又可能只到上周。如果不看这些,只截图表标题和数字,读者无从判断它描述的是哪一段时间。
还要注意时区和统计窗口。SQL里的日期边界按什么时区算、“近7日”是滚动7×24小时还是按自然日切分,都会改变结果含义。单位同样如此:地址数不天然等于人数。一个地址可以对应多个用户,一个用户也可以有多个地址,这是逻辑上的单位区分,不是说某张看板一定报错了。
参数决定你看到的是哪一份结果
Dune的查询参数可能影响链、代币、地址、时间范围等。同一张图,参数不同,结果就不是一回事。参数文档
做两图对比时,先记录各自的SQL或版本、参数,再判断统计口径和数据窗口是否可比。作者名或图表标题不是官方认证,不能因为两张图都叫“某协议TVL”就默认口径相同。如果页面上看不到SQL,也无法确认查询来源和参数,正确的态度是标注“未知”,而不是替它补一个审计结论。如果要复现同一个数值,则需要对齐同一版本与同一组参数。
这里有一个容易忽略的细节:Dune的结果API GET /query/{query_id}/results 返回的是最新已执行结果,读取这个接口不会自动触发查询执行。文档还说明,params.过滤器做的是部分参数匹配;如果不提供参数,接口返回最新执行结果,而不管那次执行用的是哪组参数。SQL编辑后如果结果尚未重新执行,匹配时可能返回404,已有结果也可能过期。最新结果API文档
这意味着“通过API拿到数”和“这个数对应我想要的参数”是两件事。参数没对上,拿到的可能是另一套口径的结果。本次没有实际调用API取看板数值。
调度存在,但不能反推每张图都在定时跑
Dune有查询调度功能,文档也说明执行查询和获取结果可能按条件消耗credits,功能和额度都有条件。调度文档
但“平台有调度”不能推出“你看的这张看板启用了定时执行”,更不能推出它免费、每次刷新都触发。看板是否新鲜,仍然要回到那条查询自己的执行记录上判断。
一个标明为假设的比较
假设有两张图都标着“近7日”,A图执行于10月24日,B图执行于10月21日,即执行时间落后3日;两张图的SQL窗口都按各自执行时刻动态计算,且比较时两张图都尚未重新执行。在这种前提下,即使SQL结构和参数完全相同,它们描述的也是两个不同的7日窗口:B图的结果不包含最近三天的链上变化。此时把两个数字并列比较,或者把B图的数字当作“当前近7日”,都会产生偏差。如果两张图用的是固定日期参数且完全相同,就不能仅凭执行时间推断窗口差3天。这不是实际Dune看板的数据,只是用来说明执行时间如何改变“近7日”的含义。
引用前值得留下的记录
如果要把Dune数字写进文章、报告或社群消息,建议在引用处或备注里留下这几项:
| 项目 | 记录内容 |
|---|---|
| 查询链接/ID | 能回溯到原始查询 |
| SQL或版本 | 口径是否被改过 |
| 参数 | 链、代币、地址、时间范围等 |
| 执行时间 | 这条SQL最后一次成功执行的时间 |
| 数据窗口和时区 | “近7日”具体指哪段 |
| 来源表 | 数据来自哪张表 |
| 单位 | 地址、笔数、金额还是其他 |
| 未知项 | 看不到SQL或参数时如实标注 |
表格不必每项都填满,但空白处应该被意识到,而不是默认“应该没问题”。如果对地址和交易哈希的基本关系不熟,可以先看钱包地址、网络和交易哈希是什么关系,它帮助理解链上数据的基本单位,不能替代对Dune查询本身的核查。
回到开头的问题:Dune看板的数字可以引用,但前提是把它当作“某条查询在某次执行下的结果”来引用,并同时交代查询、参数、执行时间和数据窗口。缺了这些,数字仍然能看,只是不该被当成当前事实直接搬走。