メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.chainstream.io/llms.txt

Use this file to discover all available pages before exploring further.

orderBy InputObject

各 Cube は {Cube}OrderBy 入力オブジェクトを生成し、ascendingdescending フィールドを持ちます。各フィールドはディメンションパスをアンダースコアでつないだ CompareFields 列挙値を受け取ります:
{DimensionGroup}_{DimensionField}
ネストしたディメンションでは、レベルごとに結合します:
Block_Time
Trade_Buy_Amount
Trade_Buy_PriceInUSD
使用例:
orderBy: {descending: Block_Time}      # newest first
orderBy: {ascending: Trade_Buy_Amount}  # smallest amount first

よく使う CompareFields の値

CompareFields の値使用例Cube説明
Block_TimeorderBy: {descending: Block_Time}DEXTrades, Transfers, BalanceUpdates, DEXPools, TokenSupplyUpdates, Pairs, Tokens新しい順
Block_TimeorderBy: {ascending: Block_Time}DEXTrades, Transfers, BalanceUpdates, DEXPools, TokenSupplyUpdates, Pairs, Tokens古い順
Interval_Time_StartorderBy: {ascending: Interval_Time_Start}Pairs, Tokens古い順(区間開始時刻)
Trade_Buy_AmountorderBy: {descending: Trade_Buy_Amount}DEXTrades買い数量の大きい順
Trade_Buy_PriceInUSDorderBy: {descending: Trade_Buy_PriceInUSD}DEXTradesUSD 価格の高い順
Transfer_AmountInUSDorderBy: {descending: Transfer_AmountInUSD}TransfersUSD 転送額の大きい順
LatestBalanceUSDorderBy: {descending: LatestBalanceUSD}TokenHolders保有額の大きい順
BuyVolumeUSDStateorderBy: {descending: BuyVolumeUSDState}WalletTokenPnL買いボリュームの大きい順
GraphQL IDE のオートコンプリートで、Cube ごとに利用可能なすべての CompareFields を確認できます — orderBy: {descending: と入力すると IDE が候補を表示します。

使い方

descending または ascending のどちらか一方に CompareFields の値を指定した orderBy 入力オブジェクトを渡します:
query {
  Solana {
    DEXTrades(
      orderBy: {descending: Block_Time}
      limit: { count: 10 }
    ) {
      Block { Time }
      Trade { Buy { Amount PriceInUSD } }
    }
  }
}
orderBy1 組の方向/フィールドのみ受け付けます。複数列ソートはサポートされず、一度に 1 ディメンションで並べ替えます。

limit 引数

limit 引数は返す行数を制御し、オフセットベースのページネーションをサポートします:
input LimitInput {
  count: Int   # Number of rows to return
  offset: Int  # Number of rows to skip
}

既定値と最大値

各 Cube には limit を省略したときの既定の件数と、最大の上限があります:
Cube既定の count最大 count
DEXTrades2510,000
Transfers2510,000
BalanceUpdates2510,000
DEXPools2510,000
TokenSupplyUpdates2510,000
Pairs2510,000
Tokens2510,000
DEXPoolEvents2510,000
TokenHolders2510,000
WalletTokenPnL2510,000
要求した count が最大を超える場合、サーバーは黙って最大値に切り詰めます。

オフセットベースのページネーション

offset で結果セットをページングします。パターンは次のとおりです。
  • ページ 1: limit: { count: 50, offset: 0 }
  • ページ 2: limit: { count: 50, offset: 50 }
  • ページ 3: limit: { count: 50, offset: 100 }

例: トークン保有者のページング

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

ページネーションのヒント

安定した並び順がないと、ページ間で行がずれることがあります。決定的な順序になるよう、常に limitorderBy を組み合わせてください。
大きな offset(例: 50,000 以上)は、DB がスキャンしてスキップするため性能が落ちることがあります。非常に大きなデータセットでは、深くページングするより where でクエリを狭めてください。
1 ページの行数が要求した count より少なければ、データセットの終端に達しています。別法として、事前に総行数を得る count メトリクスフィールドも使えます。

実践例

直近の大口取引

Solana で買い価値が 10,000 ドル超の、直近 10 件の DEX 取引を取得:
query {
  Solana {
    DEXTrades(
      where: {
        Trade: { Buy: { PriceInUSD: { gt: 10000 } } }
      }
      orderBy: {descending: Block_Time}
      limit: { count: 10 }
    ) {
      Block { Time }
      Trade {
        Buy {
          Currency { MintAddress }
          Amount
          PriceInUSD
        }
        Dex { ProtocolName }
      }
    }
  }
}

OHLC ローソク — 直近 60 分

トークンの 1 分足を時系列で取得:
query {
  Trading {
    Pairs(
      where: {
        Token: { Address: { is: "So11111111111111111111111111111111111111112" } }
        Market: { Network: { is: "sol" } }
        Block: { Time: { after: "2025-03-27T09:00:00Z" } }
      }
      orderBy: {ascending: Block_Time}
      limit: { count: 60 }
    ) {
      Block { Time }
      Price {
        Ohlc { Open High Low Close }
      }
      Volume { Usd }
      Stats { TradeCount }
    }
  }
}

トップ 50 保有者

USD 残高でソートした上位 50 保有者:
query {
  Solana {
    TokenHolders(
      tokenAddress: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
      orderBy: {descending: LatestBalanceUSD}
      limit: { count: 50 }
    ) {
      Holder { Address }
      LatestBalance
      LatestBalanceUSD
      FirstSeen
      LastSeen
    }
  }
}

次のステップ

フィルタリング

並び順とフィルターを組み合わせて、精密な分析クエリを構築します。

メトリクスと集計

count、sum、avg、min、max、uniq で並べたデータを集計します。