Before
Each area with its own number
- Reports are assembled by hand from several databases and spreadsheets.
- The same metric changes definition by department.
- Almost anyone can export; there is no record of who queried what.
Method
First we agree what each number means. Then we unify it and publish a dashboard people can use. Software exists so that rule holds: the same in the database, on the panel, and in the report.
I agree the meaning of each metric with the people who use it and the people who decide. Without that, a dashboard only speeds up the error.
Inventory of databases, APIs, and files. The source system is not rewritten: it is exposed with agreed fields and frequency.
I unify and clean so the dashboard and the report do not contradict each other. The debate is the problem, not which spreadsheet is true.
Quality checks, ranges, and a reusable model. The rule does not depend on the engine (Airflow, Spark, or Celery).
I publish the dashboard where people work: clear, usable, with what each role needs.
Apache Superset or Power BI on already-consolidated data. Not a file circulating by email.
If a load fails, it is flagged. The number does not sit only on a chart: it supports operations.
Retries, query and export logs, and an alert if the job does not finish.
Each person sees what they are allowed to see. Queries are logged. If an update fails, someone is told.
In practice
The pattern is institutional. Information lives in several systems; the figure changes with whoever calculates it; exports leave no trail.
Before
After
What remains One rule, visible on the dashboard and in the export, with a query log. The debate is the problem, not which spreadsheet is true.