Skip to main content
Two registry tables describe who runs what. Both come from the registry we author by hand, so a row exists because somebody wrote it down, not because we detected activity.
  • dimensions.projects: one row per project.
  • dimensions.apps: one row per app, meaning one deployed version of a protocol that a project runs, such as uniswap-v3 or hyperliquid-spot.

Tables

dimensions.projects contains one row per project: the protocol or company behind one or more live apps.
ColumnTypeDescription
project_idSTRINGIdentifier of the project. Every table that mentions a project joins on this.
nameSTRINGDisplay name.
symbolSTRINGTicker of the project’s token, where one exists.
market_sectorsARRAY<STRING>Every market sector tag the project carries.
primary_market_sectorSTRINGThe first element of market_sectors. One value per row.

Sample queries

Look up one project’s identity and sectors.

Notes

market_sectors is a list, so joining through unnest(market_sectors) yields one row per tag. A daily table joined that way counts a project once for every tag it carries, and any total you take off it comes out too high. The hazard is built into the shape of the query, whatever the tagging holds. Grouping by primary_market_sector keeps one row per project however the tagging changes later. Metrics shows the sector totals this protects.