Skip to main content

什么是指标(Metrics)

指标是 Cube Record 类型上可作为字段选用的聚合函数,让你在 GraphQL 查询中直接计算统计量,无需后置处理。当与维度字段一起选择时,查询会按所选维度分组,并为每组计算指标。 支持的指标:

Record 类型上的指标字段

指标以顶层字段形式出现在各 Cube 的 Record 类型上。并非每个 Cube 都支持全部指标——取决于 Cube 定义。
在字段选择中加入指标字段即可使用:
该查询按协议名对 DEX 成交分组,并返回每组的笔数。

of 参数

sumavgminmaxuniq 等指标需要 of 参数,用于指定对哪个维度聚合。of 的值为按 Cube 生成的枚举,命名遵循维度路径约定。

示例:按 DEX 统计买入总量

响应:

count — 计数行数

不带 ofcount 统计每组内的总行数(等价于 COUNT(*)):
与维度字段一起使用时,返回每组的计数:

uniq — 统计不同值

uniq 对应 SQL 中的 COUNT(DISTINCT column),用于统计某维度的不同取值数量:
该查询返回今日在 Solana 上交易 USDC 的独立买方钱包数量。

selectWhere — 类 HAVING 筛选

selectWhere 用于在聚合结果上筛选,类似 SQL 的 HAVING。它在分组与聚合之后应用,可按指标值过滤分组。
该查询只返回成交笔数超过 100 的 DEX 协议——笔数更少的协议不会出现在结果中。
selectWhere 的值必须为字符串(例如 "100" 而非 100)。服务端会按数值解析。
selectWhere 支持下列比较运算符:
已知限制: 使用 selectWhere 时,orderBy 引用的字段须属于隐式 GROUP BY 的一部分(即你正在选择的字段)或为聚合结果。按不在 GROUP BY 中的字段排序(例如 Block_Time)会导致数据库报错。

实用示例:顶级交易者

查找某代币今日按成交笔数排序的前 10 个钱包,并展示其买入总量与独立成交相关统计:
响应:

组合多个指标

单个查询中可选择多个指标字段:
该查询按 DEX 返回:成交笔数、总成交量、价格区间与独立交易者数——一次查询完成。

指标 vs 预聚合 Cube

常见问题:应该在 DWD Cube 上用指标,还是直接查 DWM/DWS Cube?
经验法则:若 DWM/DWS 已覆盖你的场景——它们已预聚合,通常明显更快。仅在需要预置 Cube 不支持的自定义分组或聚合逻辑时,再回退到带指标的 DWD Cube。

决策指引

使用 Pairs(DWM)。已按分钟预计算 open/high/low/close/volume,无需自己对 DEXTrades 做聚合。
使用 Tokens(DWM)。已按分钟预聚合成交笔数、成交量与独立交易者数。
使用 TokenHolders(DWS)。最新每位持有者余额已预计算——比聚合 BalanceUpdates 快得多。
使用 DEXTrades,以 count + sum(of: Trade_Buy_Amount)Trade.Dex.ProtocolName 分组。无现成 Cube 覆盖时,DWD 指标是合适选择。
使用 WalletTokenPnL(DWS)。买入/卖出量与成交笔数已按钱包–代币对预计算。

下一步

数据 Cube

浏览全部 25 个 Cube 及其字段结构。

查询示例

查看包含指标与聚合的实战查询示例。