SQL is where trustworthy reports start: a query states exactly which rows and which measures a figure comes from. The trouble begins afterwards — the result is pasted into a spreadsheet, the date is edited by hand each morning, and nobody can say which version of the query produced last month's numbers. This guide covers what a SQL reporting tool should do between the query and the reader, and how ATX AnalyticsTable keeps the SQL, the report and its schedule together.
SQL reporting treats the query as the definition of the report. The result lands in a sheet, a chart, a dashboard or a PDF; the query is saved, parameterised and re-run on a schedule; and anyone reviewing a number can open the SQL behind it. The report is never a copy of a result — it is a result that can be produced again.
Data sources are defined once and reused everywhere: DuckDB, SQLite, PostgreSQL, Microsoft SQL Server, Oracle (thin mode) and Google BigQuery. The SQL editor is bound to a named connection — and its picker distinguishes nothing chosen, the local DuckDB chosen deliberately, and a named connection, so a query never runs against the wrong database by default.
Two editors write to the same saved-query library. The SQL editor highlights the ranges a statement references, runs in a new tab (Ctrl+Enter) or in place (Ctrl+Shift+Enter), pages results and saves straight back to the file. The visual query builder covers the common shape of a question: drag a column into SELECT, WHERE or ORDER BY, apply SUM, AVG, MIN, MAX, COUNT or an explicit GROUP BY, and read the generated SQL live underneath — then copy it out.
A report that needs editing every morning is not automated. Named parameters — ${name}, $(name) or $name — are resolved from the project's parameters before the statement reaches the database, so one date range or region drives every query, filter, file name and export folder at once.
A parameter that resolves to nothing stops the run before the database sees it and names the missing parameter, rather than leaving you to decode a bind error.
A query result reaches the sheet as a pin, and the Pinned Queries board shows every pin, the sheet and cell it landed in, and the schedule that refreshes it.
Raw column names are not business language. The semantic layer defines reusable business objects with friendly names, descriptions and relationships, addressed by stable identifiers, validated for broken references and cycles, and expanded into SQL by the engine — so 'net revenue' means the same calculation wherever it is used.
Any pinned query can be refreshed on a schedule, alone or as part of a numbered sequence that recalculates the sheet and then exports Excel, a PDF or an e-mail. Each saved query is a SQL file in the project, so the Git panel commits a query change and the schedule that runs it in the same reviewable commit. Audit records keep a hash of the SQL, row counts and outcomes — never the query results themselves.
A background-job monitor names each running query, shows its SQL and can stop any one of them without leaving a half-filled tab.
Ask Greg can list and describe tables, profile a column and run SQL against your own database to answer a question, then propose the saved or pinned query that would answer it every day. Its SQL is SELECT-only and classified rather than pattern-matched, and the same contract applies to every SQL step in anything it proposes — a pipeline step, a report block or an alert source.
Software that turns saved SQL queries into reports — tables, charts, dashboards, PDFs or e-mails — and re-runs them with parameters and on a schedule, so the report always matches its query.
Yes. In ATX AnalyticsTable any pinned query can be refreshed on a schedule, and numbered schedules run strictly in order, so the data refresh, the recalculation and the export or e-mail happen in sequence.
DuckDB, SQLite, PostgreSQL, Microsoft SQL Server, Oracle and Google BigQuery, plus Parquet, CSV, JSON and Excel files imported from Azure Blob Storage, Google Cloud Storage or S3-compatible storage.
Ask Greg runs only SELECT statements, classified rather than pattern-matched, and proposes queries for you to review and place — it cannot change data or save anything on its own.
This site needs JavaScript for the full experience. Every page above is reachable without it.