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

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.

概要

ChainStream GraphQL の各 Chain Group は、どの基盤テーブルに問い合わせるか を制御する任意パラメータを 2 つ受け取ります。用途に応じて鮮度、クエリ速度、データの網羅性を最適化できます。

dataset パラメータ

dataset パラメータは、問い合わせるデータの 時間的な範囲 を制御します。リアルタイムテーブル、アーカイブテーブル、またはその両方にヒットするかが決まります。
説明典型的な用途
combinedリアルタイムとアーカイブの 両方 をクエリ (デフォルト) — 通常は直近約 7〜10 日分をカバー全期間が必要な汎用クエリ
realtime直近データのみ(おおよそ過去 24 時間)モニタリングダッシュボード、最新取引、リアルタイムアラート
archive保持期間内の履歴データのみ(約 7〜10 日)履歴分析、バックフィル、トレンド調査

使い方

query {
  Solana(dataset: realtime) {
    DEXTrades(limit: {count: 10}, orderBy: {descending: Block_Time}) {
      Block { Time }
      Trade { Buy { Currency { MintAddress } Amount PriceInUSD } }
    }
  }
}
query {
  EVM(network: eth, dataset: archive) {
    Transfers(
      where: { Block: { Time: { after: "2026-01-01T00:00:00Z", before: "2026-02-01T00:00:00Z" } } }
      limit: {count: 100}
    ) {
      Block { Time }
      Transfer { Currency { MintAddress } Amount AmountInUSD }
    }
  }
}

履歴データのバックフィル

データパイプラインの構築やダウンタイムからの復旧では、dataset: archive と時間範囲フィルタで履歴をバックフィルできます。
  1. 最後に処理したタイムスタンプまたはブロック高を記録する
  2. 最後のチェックポイントから現在までを where で指定し、dataset: archive でクエリする
  3. バックフィルしたデータを処理する
  4. 継続的な監視には dataset: realtime に切り替える
query BackfillTrades {
  Solana(dataset: archive) {
    DEXTrades(
      where: {
        Block: {
          Time: {
            after: "2026-04-01T00:00:00Z"
            before: "2026-04-02T00:00:00Z"
          }
        }
      }
      limit: {count: 10000}
      orderBy: {ascending: Block_Time}
    ) {
      Block { Time Slot }
      Transaction { Hash }
      Trade {
        Buy { Currency { MintAddress } Amount PriceInUSD }
        Sell { Currency { MintAddress } Amount }
      }
    }
  }
}

dataset 非対応のテーブル

一部の Cube は dataset の値に関わらず常に同じテーブルを参照します。例:
  • DWS Cube: TokenHoldersWalletTokenPnLDEXPools — 現在状態のスナップショット
  • 特別なテーブル: TransactionBalancesPredictionTradesPredictionManagementsPredictionSettlements
これらの Cube では dataset は無視されます。

aggregates パラメータ

aggregates パラメータは、生の明細テーブル(DWD)ではなく 事前集計済みマテリアライズドビュー(DWM レイヤー)を使うかどうかを制御します。事前集計テーブルには通常 1 分単位で事前計算されたロールアップが含まれ、クエリがはるかに高速です。
説明典型的な用途
yes利用可能なら事前集計テーブルを優先 (デフォルトの挙動)ほとんどの分析クエリ
no生の明細テーブルのみイベント単位の粒度が必要な場合
only事前集計テーブルのみ最大のクエリ速度(取得フィールドに制限あり)

使い方

query {
  EVM(network: eth, aggregates: only) {
    Pairs(
      where: { Token: { Address: { is: "0xdac17f958d2ee523a2206206994597c13d831ec7" } } }
      limit: {count: 100}
      orderBy: {descending: Block_Time}
    ) {
      Interval { Time }
      Price { Ohlc { Open High Low Close } }
      Volume { Usd }
    }
  }
}

モードの選び方

シナリオ推奨理由
OHLC チャートの構築aggregates: only事前計算済みローソク足で最速
時系列の出来高トレンドaggregates: yes事前集計の出来高統計を利用
個別取引の分析aggregates: noロールアップにないイベント単位の詳細が必要
ユニークトレーダー数の集計aggregates: yes事前計算済みのユニーク数が利用可能

2 つのパラメータの併用

datasetaggregates は同時に指定できます。
query {
  Trading(dataset: realtime, aggregates: yes) {
    Tokens(
      where: { Token: { Address: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } }
      limit: {count: 60}
      orderBy: {descending: Block_Time}
    ) {
      Interval { Time }
      Volume { Usd BuyVolumeUSD SellVolumeUSD }
      Stats { TradeCount UniqueBuyers UniqueSellers }
    }
  }
}
このクエリは、リアルタイムデータと事前集計テーブルを組み合わせ、直近約 60 分のクロスチェーントークン取引統計を高速に取得します。

パフォーマンスの考慮

ダッシュボードには realtime

dataset: realtime はより小さいパーティションを参照するため、モニタリング用途で応答が速くなります。

分析には aggregates

aggregates: yes または only は、生イベントテーブルをフルスキャンするより桁違いに速い事前計算ロールアップを使います。
OHLC や出来高クエリを最速にしたい場合は、dataset: realtimeaggregates: only を組み合わせます。最も小さく最適化されたデータスライスを狙えます。

関連ドキュメント

スキーマ概要

datasetaggregates が全体のクエリ構造のどこに位置するかを確認します。

データ Cube

どの Cube が dataset 切り替えに対応しているかを確認します。