Skip to main content
One row per swap, in the pool’s own token amounts. amount_in and amount_out are the two legs, and deduplicating a router’s fills on transaction_hash turns venue volume into interface volume.

Columns

ColumnTypeDescription
block_timestampTIMESTAMPTime of the block containing the swap. Partition column.
transaction_hashSTRINGHash of the transaction containing the swap. Several rows share a hash when a router splits one swap across pools.
log_indexINT64Position of the swap event in the block. (chain_id, transaction_hash, log_index) identifies a row.
dex_pool_idSTRINGPool the swap executed in, keyed like dimensions.dex_pools.
app_idSTRINGThe app operating the pool, read from the pool registry.
chain_idSTRINGChain the swap executed on.
project_idSTRINGProject the operating app belongs to.
token_in_idSTRINGToken the trader handed to the pool, keyed like dimensions.tokens.
token_out_idSTRINGToken the trader received from the pool.
fee_rateBIGNUMERICFee charged on this swap, as a decimal fraction of its size. Fixed per pool on most venues, set per swap where the venue supports dynamic fees. Null where the venue publishes no per-swap rate the catalog decodes (Aerodrome, Velodrome).
amount_inBIGNUMERICAmount of token_in_id handed over, in whole token units, always positive.
amount_outBIGNUMERICAmount of token_out_id received, in whole token units, always positive.

Sample queries

This table is large and split by day. Bound block_timestamp and filter chain_id on every query, or you read the whole table and the whole table is billed to you.
The pool here is the Uniswap v3 USDC-WETH 0.05% pool on Ethereum; find any pool’s id in dimensions.dex_pools.