Query Builder lets you extract, filter, and export data from Catalyst without writing code. This article covers what it does, how to build and save reports, and how to get the most out of both query modes.
Analysis ยท Data Extraction
Query Builder
AI-Powered, No-Code Data Exploration for Every User
๐ค
AI SQL Generator
๐พ
Save & Share Reports
๐
No SQL Knowledge Needed
ย
Overview
Query Builder is a data exploration tool inside Catalyst. It lets you pull specific data out of your Catalyst scenarios and Smartload tables, filter it down to exactly what you need, and export or share the results โ all from a single workspace in the Analysis section.
There are two ways to build a query. The Columns Selector is a visual, point-and-click interface: browse the available fields, check the ones you want, and run. The SQL Generator is AI-powered: describe what you're looking for in plain English and it writes the SQL for you, which you can then review and edit. Either way, you don't need a technical background or a data team to get an answer.
Reports you build can be saved, named, and shared with colleagues, so a question you answer once becomes a report your whole team can run.
Built for everyone on your team who works with financial and operational data:
Finance & AccountingControllers, accountants, and finance managers who need GL detail, journal entry exports, or account-level reconciliation data on demand โ without a data team in the loop.
FP&A & PlanningFP&A analysts, budget owners, and CFOs who need scenario comparisons, actuals vs. budget breakdowns, or custom profitability extracts for board decks and model inputs.
Financial ConsultantsEBM-side and client-side consultants who need to pull targeted datasets during engagements โ especially ad-hoc requests that don't fit a standard report.
Operations & SalesSales operations managers, customer success leads, and operations analysts who need customer-level profitability, transaction history, or segment performance data.
Data & Business AnalystsAnalysts who want to write or refine their own SQL directly โ or start with AI-generated SQL and customize it for more complex joins, aggregations, or business logic.
Key Capabilities
These are the core capabilities available to every Query Builder user:
๐ค
Visual, No-Code Interface
Build queries via dropdowns and a column selector without writing
any SQL. The Columns Selector mode lets non-technical users browse
attributes by category, check the fields they need, and run a query
โ all without touching code.
Who benefits: Business users,
financial consultants, anyone without a SQL background
โจ
AI SQL Generator
Type a plain-English question and the system generates a SQL SELECT
query automatically, based on your selected data source's schema.
The generated SQL is fully editable โ adjust it, replace it, or upload
your own saved template. INSERT, UPDATE, and DELETE are blocked;
the editor is read-only for data modification.
Who benefits: All users
โ especially those needing complex aggregations, joins, or custom
logic
๐พ
Reusable Reports
Save, name, and share reports for future use or modification. Public
reports are visible to all Query Builder users; private reports are
yours alone. Copying a report creates a new editable version automatically
named with a "Copy" suffix.
Who benefits: Teams needing
consistent, repeatable reporting across members
๐
Real-Time Schema Discovery
The Columns Selector automatically loads the full attribute and column
list from your selected data source โ including Smartload tables
โ with parent/child grouping and a Select All control. Column counts
are shown inline, and a searchable expanded modal is available for
large schemas.
Who benefits: Users exploring
unfamiliar data sources or large schemas
๐ค
Share by Link or Email
Report owners can share a Public report to up to 5 internal recipients
via email. Recipients receive a direct link to the report and open
it in a read-only, non-owner view showing live data according to
their permissions. Private reports cannot be shared via link โ the
link is disabled if a report is made Private.
Who benefits: Analysts sharing
results with stakeholders; teams collaborating on shared datasets
๐ง
Unsaved-Change Protection
The system detects unsaved changes and surfaces warning modals in
three scenarios: leaving the page with unsaved edits, missing mandatory
fields (name or data source), and attempting to save without re-running
after column changes. The Save button is disabled until the query
has been run against the latest column configuration.
Who benefits: Anyone building
complex reports who doesn't want to lose work
Finding Query Builder
Query Builder is located in the Analysis section of the Catalyst navigation menu. Click Analysis in the left nav, then select Query Builder.
The Report Library
Opening Query Builder takes you to the report library โ your central hub for finding, managing, and acting on reports. Three tabs organize everything:
๐
My Reports
Full Control
Reports you've created, sorted by last modified date so your most
recent work stays at the top. You can edit, delete, share, download,
copy, and preview any report here. A count badge shows your total,
with a View All link when you have more than the default shown.
๐
Public Reports
View Only
Reports marked Public by their owners โ visible to all Query Builder
users. Filter by data source or owner, or search by report name.
You can preview, download, copy, or share these, but cannot edit
or delete them. A report count is shown with a filter badge.
๐
Recently Viewed
Quick Access
Reports you've opened recently, labeled with a "Last interaction:"
date. A shortcut back to work in progress or reports you return to
regularly. Common report actions are available directly from this
tab.
Searching for reports: Use the search bar (in My Reports and Public Reports) to filter by report name. Data source and owner dropdowns are also available in the Public Reports tab. Search is scoped to report names only โ not owner metadata.
Report Actions
Each report has action icons on the right. Owners see the full set; non-owners see a limited subset:
๐๏ธ
Preview
First 10 rows, inline modal
All users
๐ค
Share
Email to up to 5 internal users
All users
โฌ๏ธ
Download
Full dataset, Excel or CSV
All users
๐
Copy
Duplicate with "Copy" naming
All users
โ๏ธ
Edit
Modify columns, source, or query
Owner only
๐๏ธ
Delete
Permanently remove
Owner only
Creating a New Report
Click Add New from the report library. The creation screen has a left panel for configuration and a main area for your query and results. A three-step indicator at the top tracks your progress.
The short version
Set a name, choose a data source, pick your query mode (Columns Selector or SQL Generator), run the query, then save. Each step has options worth knowing about โ expand any step below for full detail.
Visibility
Public โ visible
to all Query Builder users.
Private โ visible
only to you. Sharing via link is disabled for Private
reports.
Report Name
Up to 50 characters. Inline validation prevents duplicates
and alerts you if the name exceeds the limit before you
try to save.
Data Source
Catalyst scenario data (Financial, Profitability) or
any Smartload-uploaded custom table. Columns load automatically
once a source is selected.
The Type toggle lets you
switch between two modes at any time within the same report.
โฐ
Columns Selector
Visual, no-code
Browse attributes, check the fields you want, and build
your output without writing anything. The attribute list
uses
parent/child groupings โ expand a category to see all
fields
within it. Use the Select All checkbox to grab every
field
in a category, or open the Select Columns modal for a
full-screen
view with search. The Run Query button only activates
once
at least one column is selected.
Best for: Structured extracts, no-join
queries,
users new to querying, repeatable reports
Tips
โ
Search the attribute list
โ type in the Columns search box to filter
fields
by name. Useful when you know what you're
looking
for but don't want to scroll through a large
schema.
โ
Use Select All with caution
โ it grabs every field in the category. Good
for exploration,
but pare back before saving. Many attributes
have ID,
Short Description, and Name variants โ you
usually only
need one.
โ
Open the Select Columns modal
for a wider view โ it shows the full attribute
tree,
supports search and Select All, and stays
in sync with
the left panel. Panel and modal selections
are always
synchronized.
โ
Collapse/Expand All
controls how categories are displayed across
both the
panel and the modal โ states stay in sync
between both
views.
Changing columns on a saved report?
The Save
button disables until you re-run the query. A tooltip
reads:
"Please run query to enable saving."
AI
SQL Generator
AI-powered
Type your question in plain English โ the AI writes a
SELECT
query based on your data source schema. The generated
SQL
appears in the dark-theme editor below. The editor is
fully
editable: adjust the generated code, replace it entirely,
or upload a saved SQL template using the upload icon.
INSERT,
UPDATE, and DELETE statements are blocked โ the editor
enforces
read-only SQL only. Your original prompt is saved with
the
report so you can see what generated the query later.
Best for: Complex aggregations, cross-table
joins, custom logic, power users
How to use it
1
Type your question in plain English
Up to 1,200 characters. Be specific โ mention
field
names, data sources, aggregations, grouping,
and sort
order. The more precise your prompt, the
better the
generated SQL.
2
Click Generate SQL
The AI produces a SELECT statement and populates
the
SQL editor. INSERT, UPDATE, and DELETE are
blocked โ
if the generated SQL contains them, an error
message
explains why they were rejected.
3
Review and edit the SQL (optional)
Edit the generated code directly in the editor,
or
discard it and write your own. You can also
upload a
saved SQL file using the upload icon โ useful
for reusing
queries from previous sessions or distributing
templates
across your team.
4
Click Run Query
Results display in the data grid to the right.
The
preview shows the first rows; downloading
gives you
the full dataset. If the SQL has validation
errors,
descriptive hints appear inline below the
editor.
Note on table names: Browse the Columns Selector
first to see the exact field names in your environment, then
switch
to SQL Generator and use those names in your prompt or SQL.
After running your query, use
Filter
to add conditions that narrow results without modifying your columns
or SQL. Filters are saved with the report and applied on every future
run. Use Revert to undo
unsaved
filter changes.
Saving
Click Save after
running.
If columns or SQL changed since the last run, Save is disabled
until you re-run. A toast confirms success; duplicate names
are
caught inline before saving.
Share & Download
Click Share/Download.
Choose Excel or CSV and click
Download,
or enter up to 5 internal email addresses to send by email.
Files over 25MB can only be downloaded, not emailed.
Reports don't auto-refresh. Data reflects the
last
time the query was run. Re-run before sharing if you need current
data.
Common SQL Examples
Ready-to-use prompts and SQL patterns for the most common Query Builder use cases. Expand any example to see the full prompt and generated SQL. Table and column names in your environment may differ โ use the Columns Selector to check exact field names first.
Prompt
"Show total gross sales grouped by customer name for the 2025 Actuals
scenario, sorted highest to lowest"
Generated SQL
SELECT CustomerName, SUM(GrossSales) AS TotalGrossSales
FROM [dynamic].[ProfitabilityDetail]
WHERE Scenario = '2025 Actuals'
GROUP BY CustomerName
ORDER BY TotalGrossSales DESC
Prompt
"Show total gross sales, COGS, and quantity per sales channel"
Generated SQL
SELECT Channel,
SUM(CAST(GrossSales AS FLOAT)) AS TotalGrossSales,
SUM(CAST(COGS AS FLOAT)) AS TotalCOGS,
SUM(CAST(Quantity AS FLOAT)) AS TotalQuantity
FROM [dynamic].[ProfitabilityDetail]
LEFT JOIN [dynamic].[CustomerAttribute]
ON [dynamic].[ProfitabilityDetail].CustomerID = [dynamic].[CustomerAttribute].CustomerID
GROUP BY Channel
Prompt
"Show all journal entries posted between January and March 2025 with
account number and amount"
Generated SQL
SELECT PostingDate, AccountNumber, JournalAmount, Description
FROM [dynamic].[FinancialJournalEntry]
WHERE PostingDate BETWEEN '2025-01-01' AND '2025-03-31'
ORDER BY PostingDate ASC
Prompt
"Show actuals vs. budget gross profit by department for 2025, with
the variance amount and variance percentage"
Generated SQL
SELECT
a.Department,
SUM(a.GrossProfit) AS ActualsGrossProfit,
SUM(b.GrossProfit) AS BudgetGrossProfit,
SUM(a.GrossProfit) - SUM(b.GrossProfit) AS Variance,
CASE
WHEN SUM(b.GrossProfit) = 0 THEN NULL
ELSE ROUND(
(SUM(a.GrossProfit) - SUM(b.GrossProfit)) / ABS(SUM(b.GrossProfit)) * 100, 2
)
END AS VariancePct
FROM [dynamic].[ProfitabilityDetail] a
LEFT JOIN [dynamic].[ProfitabilityDetail] b
ON a.Department = b.Department
AND b.Scenario = '2025 Budget'
WHERE a.Scenario = '2025 Actuals'
GROUP BY a.Department
ORDER BY Variance ASC
Prompt
"Show all open accounts payable invoices with vendor name, invoice
date, due date, and amount, for invoices due in the next 30 days"
Generated SQL
SELECT VendorName, InvoiceDate, DueDate, InvoiceAmount, Status
FROM [dynamic].[AccountsPayableDetail]
WHERE Status = 'Open'
AND DueDate BETWEEN GETDATE() AND DATEADD(day, 30, GETDATE())
ORDER BY DueDate ASC
Prompt
"Show the top 20 products by gross margin percentage for 2025 Actuals,
including total sales and COGS"
Generated SQL
SELECT TOP 20
ItemDescription,
SUM(GrossSales) AS TotalSales,
SUM(COGS) AS TotalCOGS,
SUM(GrossSales) - SUM(COGS) AS GrossMargin,
ROUND(
(SUM(GrossSales) - SUM(COGS)) / NULLIF(SUM(GrossSales), 0) * 100, 2
) AS GrossMarginPct
FROM [dynamic].[ProfitabilityDetail]
WHERE Scenario = '2025 Actuals'
GROUP BY ItemDescription
ORDER BY GrossMarginPct DESC
Note on table names: The actual table and column names in your environment will differ. Use the Columns Selector to browse available fields first, then reference those exact names in your SQL Generator prompt.
Filter Operators Explained
Filters narrow results without modifying your columns or SQL. Each condition requires a field, an operator, and a value. Here's what each operator means and when to use it:
EqualsExact match
Matches a field that equals exactly one specified value. Case-sensitive
for text fields.
Use when: You know the exact
value โ e.g. Scenario = "2025 Actuals", Company = "ACME001"
Is In ListMultiple exact matches
Matches any value in a specified list. Equivalent to SQL's IN operator.
More efficient than stacking multiple "Equals" conditions.
Use when: You want results
for several known values โ e.g. Item Category is in ["Beer", "Wine",
"Spirits"]
ContainsPartial text match
Matches any field value that includes the specified text anywhere
in the string. Equivalent to SQL LIKE '%value%'. Useful when you
don't know the exact value but know part of it.
Use when: Searching by partial
name โ e.g. Item Number contains "900" to get all 900-series items
Caution: "Contains" can return unexpected results
if the substring appears in unrelated fields. Switch to "Equals"
or "Is In List" when you want exact control.
Greater / Less ThanNumeric threshold
Filters numeric fields above (>) or below (<) a value. Optionally
inclusive (>= or <=). Works on dates too โ "PostingDate greater
than 2025-01-01" returns all entries after that date.
Use when: Filtering by amount
thresholds โ e.g. GrossSales > 10000 to see high-value transactions
only
BetweenRange (inclusive)
Matches values within a defined start and end range, inclusive of
both endpoints. Works for numeric values and dates. Equivalent to
SQL's BETWEEN operator.
Use when: Extracting a time
period โ e.g. CalendarDate between 2025-01-01 and 2025-03-31 for
Q1 2025
Does Not Equal / Not In ListExclusion
Excludes matching values. The inverse of Equals and Is In List. Useful
for removing test data, internal accounts, or specific scenarios
from results.
Use when: Excluding known
noise โ e.g. Scenario not in ["Test", "Draft", "Legacy"]
Example: Filtering 2025 Invoices by Customer and Item
To extract 2025 invoices for Acme Corporation containing 900-series items, stack three conditions:
Scenario equals "2025 Actuals"
Customer Name equals "Acme Corporation"
Item Number contains "900"
Exporting Your Data
The export format you choose determines both the file type and the maximum number of rows you can retrieve.
Excel (.xlsx)
100K
row maximum
Best for small to medium datasets, pivot tables, and formatted reports
you'll work with in Excel
CSV
1M
row maximum
Best for large datasets, database imports, and programmatic processing
CSV Extended
50M+
rows (requires enablement)
Enterprise-scale extracts via the Profitability Actual Data Query
Model
Need 50M+ Row Exports?
Contact EBM Support to enable the Profitability Actual Data Query
Model for your organization. Once enabled, CSV exports scale to 50
million+ rows.
Apply conditions before running โ unfiltered large datasets run
slowly
Test with a narrow date range first, then widen
Use "Is In List" when you need exact value matching
Save reports you'll run more than once
Name reports specifically โ include scenario, date range, or
subject
Copy a Public report to customize it rather than building from
scratch
In SQL Generator, be specific in your prompt โ mention field
names and groupings
Avoid This
Selecting all available columns "just in case"
Running a query with no filter conditions on a large data source
Using "Contains" when an exact match operator would be more precise
Including redundant ID/Name/Description variants of the same
field
Excel export for datasets over 100,000 rows
Vague report names like "Test", "My Query", or "Query1"
Writing INSERT, UPDATE, or DELETE in SQL Generator โ these are
blocked
Troubleshooting
Find your symptom below. Each issue includes what's likely causing it and how to fix it.
Symptom
Query returns no results
Likely cause: Conditions
are too restrictive or filter values don't match exactly what's
stored โ including capitalization and spacing.
Fix: Remove conditions
one at a time to find the culprit. Switch "Contains" to "Equals"
to rule out partial-match issues.
Symptom
Query runs slowly
Likely cause: Too many
columns selected, or no filter conditions limiting a large data
source.
Fix: Reduce selected
columns, narrow your date range, add more specific conditions.
In SQL Generator, check for unnecessary broad intermediate results
before aggregating.
Symptom
Export fails or times out
Likely cause: Dataset
exceeds the format limit (100K rows for Excel, 1M for CSV).
Fix: Switch from Excel
to CSV. If CSV still fails, narrow your criteria. Contact EBM
Support to enable extended exports (50M+ rows).
Symptom
Unexpected data in results
Likely cause: "Contains"
is matching partial text in unrelated records, or you're on the
wrong data source.
Fix: Switch to "Equals"
or "Is In List" for precise filtering. Verify data source is
Financial vs. Profitability. In SQL Generator, review the WHERE
clause.
Symptom
Save button is grayed out
Likely cause: Columns
or SQL changed since the last run โ the system requires you to
validate the new configuration before saving.
Fix: Click
Run Query. The tooltip reads: "Please run query
to enable saving." Save re-enables once the query completes successfully.
Symptom
Can't email โ file too large
Likely cause: Export
file exceeds the 25MB email limit.
Fix: Download the file
directly instead. To reduce size: apply tighter filter conditions
or remove columns you don't need.
Frequently Asked Questions
No โ reports are ad hoc. They show data as of when the query was
last run. To get current data, open the report and click
Run Query again before reviewing or sharing results.
No โ sharing is restricted to internal users only. Email sharing
validates addresses and blocks external recipients. You can download
the report file and share it externally through other means.
Not directly โ edit and delete are owner-only. To build on someone
else's Public report, use the Copy action. That creates
your own editable version (named with a "Copy" suffix) that you fully
own, leaving the original untouched.
Yes โ any table uploaded to Smartload appears as a data source option
in the Query Builder dropdown. No extra configuration is needed.
The Report Preview modal (from the report library) shows the first
10 rows. The in-report preview after running shows the first 1,000
rows. Downloading gives you the full dataset โ up to the format row
limit (100K for Excel, 1M for CSV).
Yes โ download as Excel (.xlsx) or CSV and open in any tool you prefer.
Reports don't sync automatically; re-run and re-export when you need
fresh data.
Use Columns Selector when you want a straightforward
extract of specific fields from a single data source โ it's faster
and requires no SQL knowledge. Use SQL Generator when
you need aggregations, calculations, joins across tables, or logic
that a column list can't express. You can switch between modes at any
time within the same report.
Query Builder removes the barrier between wanting data and having it. Pick a data source, build your query visually or let AI write the SQL, apply filters, and share or download what you need โ all without a technical team in the loop.
Comments
0 comments
Please sign in to leave a comment.