Start here. This is the direct spoken answer to practice first.
Why this question matters
Analytics dashboards trade freshness against query cost and explainability. Each metric needs a definition, source, freshness target, and failure behavior before the backend chooses live queries, aggregates, or a separate read model.
I would first clarify what each metric means, how fresh it needs to be, and which filters users need. For small data, the API might query SQL directly with good indexes. For larger data, I would build read models or aggregate tables refreshed by background jobs or events. The dashboard API would return summary cards, chart series, and paged drill-down data through separate endpoints so one slow table does not block the whole page.