Skip to main content
Every active-user figure in the daily asset tables is worked out from these two tables. facts_asset_tokens.senders records one row for each day, each deployment and each address that sent it; facts_asset_tokens.senders_hll summarizes the same addresses as one sketch per day per deployment. Counts of distinct addresses behave differently from amounts. If 100 addresses sent USDC on Monday and 100 sent it on Tuesday, the figure over the two days sits somewhere between 100 and 200, and the counts alone leave the answer open; the same holds across chains, deployments and assets. So a daily user_* column describes the day it is stamped with, and a wider figure comes from the addresses or from the sketches. A sketch is a small summary of a set of addresses, a few kilobytes however large the set, and two sketches combine into one before anything is counted. Combine the sketches for a stretch of days, a group of chains or a basket of assets and count once, and every address counts once. The technique is called HyperLogLog++, hence the _hll in the table name, and a count off a sketch is an estimate that agrees with the user_* figures published in the daily tables.

Tables

One row per (timestamp, asset_token_id, sender_address). The addresses themselves answer questions of identity: how far two assets’ users overlap, or whether the addresses that showed up in March are still active in June.
ColumnTypeDescription
timestampTIMESTAMPDay the address sent the deployment. The partition column.
asset_token_idSTRINGDeployment the address sent, formatted {asset_id}-{token_address}-{chain_id}.
asset_idSTRINGAsset the deployment belongs to.
token_idSTRINGKey of the deployment in dimensions.tokens.
chain_idSTRINGChain the deployment lives on.
symbolSTRINGTicker symbol of the asset.
asset_typeSTRINGClassification of the asset.
bridged_statusSTRINGIssuance classification of the deployment: native, bridged or unclassified.
token_addressSTRINGAddress of the token contract.
sender_addressSTRINGAddress that sent the token that day.

Sample queries

count(distinct sender_address) over the addresses is exact, and over one deployment and one day it reads a single partition. Widen either bound and it reads every row in the range.