跳轉到主要內容

orderBy 列舉

每個 Cube 會生成 {Cube}OrderBy 列舉,包含每個可排序維度的 ASC 與 DESC 變體。命名規則為維度路徑以下劃線連線:
{DimensionGroup}_{DimensionField}_ASC
{DimensionGroup}_{DimensionField}_DESC
巢狀維度每一級都參與拼接:
Trade_Buy_Amount_ASC
Trade_Buy_PriceInUSD_DESC
Block_Time_ASC

常見 orderBy 取值

Enum ValueCube(s)Description
Block_Time_ASCDEXTrades, Transfers, BalanceUpdates, DEXPools, TokenSupplyUpdates, Pairs, Tokens最舊在前
Block_Time_DESCDEXTrades, Transfers, BalanceUpdates, DEXPools, TokenSupplyUpdates, Pairs, Tokens最新在前
Interval_Time_Start_ASCPairs, Tokens最舊在前(區間起始時間)
Interval_Time_Start_DESCPairs, Tokens最新在前(區間起始時間)
Trade_Buy_Amount_DESCDEXTrades買入量最大在前
Trade_Buy_PriceInUSD_DESCDEXTradesUSD 價格最高在前
Transfer_AmountInUSD_DESCTransfersUSD 轉賬額最大在前
LatestBalanceUSD_DESCTokenHolders持倉 USD 最大在前
BuyVolumeUSDState_DESCWalletTokenPnL買入量 USD 最大在前
GraphQL IDE 中用自動補全檢視某 Cube 全部可用 orderBy — 輸入 orderBy: 即可列出完整列舉。

用法

orderBy 傳入單個列舉值:
query {
  DEXTrades(
    network: sol
    orderBy: Block_Time_DESC
    limit: { count: 10 }
  ) {
    Block { Time }
    Trade { Buy { Amount PriceInUSD } }
  }
}
orderBy 只接受一個列舉值。不支援多列排序 — 查詢僅按單一維度排序。

limit 引數

limit 控制返回行數,並支援基於 offset 的分頁:
input LimitInput {
  count: Int   # Number of rows to return
  offset: Int  # Number of rows to skip
}

預設與最大限制

每個 Cube 在省略 limit 時有預設行數上限,並有最大上限:
CubeDefault countMaximum count
DEXTrades2510,000
Transfers2510,000
BalanceUpdates2510,000
DEXPools2510,000
TokenSupplyUpdates2510,000
Pairs2510,000
Tokens2510,000
DEXPoolEvents2510,000
TokenHolders2510,000
WalletTokenPnL2510,000
若請求的 count 超過最大值,服務端會靜默截斷為最大值。

基於 offset 的分頁

使用 offset 翻頁,模式如下:
  • 第 1 頁limit: { count: 50, offset: 0 }
  • 第 2 頁limit: { count: 50, offset: 50 }
  • 第 3 頁limit: { count: 50, offset: 100 }

示例:Token 持有者分頁

query {
  TokenHolders(
    network: sol
    tokenAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    orderBy: LatestBalanceUSD_DESC
    limit: { count: 20, offset: 0 }
  ) {
    Holder { Address }
    LatestBalance
    LatestBalanceUSD
  }
}

分頁建議

沒有穩定排序時,行間順序可能在翻頁時變化。請始終將 limit 與能產生確定順序的 orderBy 一起使用。
很大的 offset(例如 50,000+)可能拖慢查詢,因為資料庫需要掃描並跳過行。對超大資料集,優先用 where 收窄結果,而非深度分頁。
若某頁返回行數少於請求的 count,說明已到資料集末尾。也可事先使用指標欄位 count 獲取總行數。

實用示例

最新大額成交

獲取 Solana 上最近 10 筆買入價值超過 $10,000 的 DEX 成交:
query {
  DEXTrades(
    network: sol
    where: {
      Trade: { Buy: { PriceInUSD: { gt: 10000 } } }
    }
    orderBy: Block_Time_DESC
    limit: { count: 10 }
  ) {
    Block { Time }
    Trade {
      Buy {
        Currency { MintAddress }
        Amount
        PriceInUSD
      }
      Dex { ProtocolName }
    }
  }
}

OHLC 蠟燭 — 最近 60 分鐘

獲取某 token 的 1 分鐘 K 線,按時間正序:
query {
  Trading {
    Pairs(
      where: {
        Token: { Address: { is: "So11111111111111111111111111111111111111112" } }
        Market: { Network: { is: "sol" } }
        Block: { Time: { after: "2025-03-27T09:00:00Z" } }
      }
      orderBy: Block_Time_ASC
      limit: { count: 60 }
    ) {
      Block { Time }
      Price {
        Ohlc { Open High Low Close }
      }
      Volume { Usd }
      Stats { TradeCount }
    }
  }
}

Top 50 Token 持有者

按 USD 餘額排序取前 50 名持有者:
query {
  TokenHolders(
    network: sol
    tokenAddress: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
    orderBy: LatestBalanceUSD_DESC
    limit: { count: 50 }
  ) {
    Holder { Address }
    LatestBalance
    LatestBalanceUSD
    FirstSeen
    LastSeen
  }
}

下一步

篩選

將排序與 Filter 結合,構建精確的分析查詢。

指標與聚合

使用 count、sum、avg、min、max、uniq 對已排序資料聚合。