Skip to main content
A data source is a named, saved query that returns the rows and columns a dashboard element displays. You author it once, and every element that needs that data points at it.
Creating and editing data sources requires the Manage Reporting Data Sources permission — held by whoever builds reporting, whether a customer administrator, super user, or consultant. With View Reporting Data Sources only, you can see existing data sources but not change them.

How a data source works

A data source has two states:
  • Definition — the query you author and save.
  • Materialized snapshot — the result set, captured into a snapshot table when the data source refreshes. Dashboards read from the snapshot, not from your live tables, so a heavy query runs only at refresh time and dashboards stay fast.
Reporting queries always run read-only, and only against the data an administrator has made available to reporting — never your own account’s wider access. This keeps reporting isolated from the rest of the system. Test query cost and refresh frequency with representative volumes; read-only access does not make an expensive query free of performance impact.
A data source with viewer-supplied runtime parameters runs live when the dashboard needs those values. Query parameters resolved by the platform alone do not prevent scheduled snapshots.

Approve a reporting source

Open Settings → Admin → Reporting → Allowed sources. Viewing the list requires reporting.datasources.view or reporting.sources.manage; adding and removing approvals requires reporting.sources.manage (also covered by reporting.admin).
  1. Review whether the table or view is already approved and what data it exposes.
  2. Choose Add source, enter its schema and object name, and add a description of its intended reporting use.
  3. Save. The object must exist and be readable by reporting. If the product reports missing access, ask the person responsible for the data source to make it available, then retry.
  4. Test the dependent reporting query and confirm the returned columns before publishing a dashboard.
Approval controls which source objects reporting queries may read. It does not grant every viewer direct access to those objects.

Remove approval deliberately

Identify the dependent data sources and dashboards before removing an approval. Revocation also invalidates existing snapshots backed by that approval; it is not limited to preventing the next refresh. Those dashboards can lose their data until their sources are corrected and refreshed. If removal reports an active run or another conflict, let that operation finish and retry. Check the final approval list and affected dashboards to confirm the outcome.

Create a data source

The editor is split into two panes: you author the query on the left and set its configuration — refresh schedule and run limits — on the right.
1

Open the reporting administration area

Go to the reporting administration area and choose to add a new data source.
The reporting administration data sources list, showing existing data sources with their freshness and a button to add a new one.

The data sources list in the reporting administration area.

2

Name and describe it

Give it a clear, descriptive name — this is what you pick from when adding an element. Add an optional description so other builders recognize what it returns.
3

Write the query

Enter a SELECT query that returns the columns you want to report on. Keep it to the columns you need: the column names become the field names available to every element. Common table expressions (WITH … SELECT) are supported for structuring more complex queries.
4

Test it

Click Test SQL. Nobly Insight validates the query, runs it read-only with a small preview cap, and shows you the resulting columns and a sample of rows — along with the objects the query referenced — so you can confirm the shape before saving.
The two-pane data source editor, showing the name and description, the SQL editor with Test SQL, and the Configuration pane with the Enabled toggle, refresh schedule, preferred time, row cap, and blackout window.

The data source editor: author the query and Test SQL on the left; set the refresh schedule and run limits in the Configuration pane on the right.

5

Configure refresh

In the Configuration pane, set how the source refreshes — the schedule, an optional row cap, and, if needed, a blackout window (below). Leave Enabled on so the scheduler keeps it current.
6

Save

Save the data source. It is now selectable when designing dashboards. Until the first refresh, elements bound to it show an Awaiting first run freshness state — use Refresh now to materialize the snapshot immediately rather than waiting for the schedule.

Runtime parameters

A data source can declare runtime parameters — named values the viewer fills in when the dashboard opens. Reference each one in the SQL as @Name, matching the parameter’s name. A source with at least one viewer-supplied value parameter runs live with that input. A source whose parameters are all query-based can still refresh on its schedule and serve a snapshot. The presence of a parameter alone does not determine whether execution is live. Each parameter has:
  • Name — letters, digits, and underscores, starting with a letter. Used both as the label and as the @Name reference in SQL.
  • Type — Text, Number, Date, Yes/No, or one of the two lookups, Document type group and Document type. This decides how the viewer is prompted for the value.
  • Required — whether the viewer must supply a value before the dashboard loads.
  • Test values — sample values used only when you click Test SQL; they are not saved.

Lookup parameters

A Document type group or Document type parameter is picked from a list instead of typed: the viewer sees the groups and types they are allowed to view, by name, and the selected id binds to @Name as a number. Nobody has to know an internal id, and a value outside the viewer’s own access is refused when the dashboard loads. Two options apply to lookups only:
  • Allow several — the viewer can pick more than one. The picks bind as a JSON array of ids, which the SQL expands with OPENJSON. With a documents view an administrator has made available to reporting, holding one row per document and its document type id:
  • Narrow by group parameter — on a document type parameter, names a document type group parameter of the same source. The viewer then only sees the types in the group they picked, and a type pick that no longer fits is cleared when the group changes. The group parameter itself does not have to appear in the SQL; it can exist purely to narrow the list.
An optional lookup left unpicked binds NULL, so a query can treat it as “all”: WHERE (@Group IS NULL OR DocumentTypeGroupId = @Group). The table and column names above are illustrative — the ids a lookup binds are the document type and document type group ids of Nobly Insight, and the view to match them against is whatever an administrator has made available to reporting.
A lookup parameter is viewer input, so the source runs live like any other value parameter — it cannot be scheduled as a snapshot. To let viewers narrow a scheduled source by group or type, use a dashboard filter on a column of the snapshot instead.
Check each parameter’s kind when deciding how the source refreshes. Use a viewer-supplied value when the result depends on the person’s input; use a query parameter when the platform should resolve the value. Test both execution and freshness after changing parameter kinds.

Query rules

To keep reporting safe and predictable, queries are validated before they run:
Only read queries are allowed. Statements that change data or schema are rejected at validation. A few read-only constructs are also blocked for safety — linked-server and cross-database access, OPENROWSET, EXEC, and query hints among them — so if validation rejects a query it considers unsafe, the message names the construct to remove.
Reporting can only read the data an administrator has made available to it. If your query references something reporting can’t read, the test fails with a message pointing at what’s missing — ask an administrator to make that data available to reporting, rather than changing your query.
An administrator may pin reporting to a fixed set of source tables. When that allowlist is in place, a query that references any table not on it is rejected with a message naming the table (common table expressions are exempt). If you need a table that isn’t allowed yet, ask an administrator to add it to the allowlist — and to make sure reporting can read it.
Test results are capped to a small preview so a large query stays responsive while you author it. This preview cap is separate from the data source’s row cap; the full result set is captured when the source refreshes.

Refresh and freshness

A scheduled data source refreshes automatically on its schedule, and you can also refresh it on demand with Refresh now. Each refresh re-captures the snapshot under the row cap you set; if the query’s columns have changed since the last refresh, the snapshot table is rebuilt to match — the refresh still succeeds, and the element’s freshness then shows Schema drift detected.
  • Schedule — pick how often the source refreshes. Presets range from Every 15 minutes through Hourly and Every 4 hours to Daily (at 02:00 or 06:00 UTC) and Weekly (Monday 02:00 UTC). Set a Preferred time (UTC) as advisory metadata, and use the Enabled toggle to pause scheduled runs.
  • Row cap — the maximum rows captured per refresh, up to 10,000. Leave at zero to use the server default. If a source has more rows than the cap, dashboards read only the captured rows and elements show a notice that totals, charts, and exports may be incomplete — raise the cap for sources that need the full set.
  • Blackout window — scheduled runs skip when they would fall inside this window (for example, during a nightly maintenance window). Set both a start and an end, or neither. Manual refresh is not affected.
  • Freshness — every dashboard element shows the state of its source: Updated 2 hr ago after a successful run, Awaiting first run before the first snapshot, Stale when overdue, Schema drift detected, Last run failed, or Live for a source with viewer-supplied parameters that runs on demand.
Changing a scheduled data source’s query or row cap drops its current snapshot, so dashboards bound to it report the source as stale — with no data — until the next refresh. Click Refresh now after such an edit so its dashboards don’t sit empty.
Test the query before saving. After saving, the next scheduled run picks it up — or click Refresh now if you can’t wait.

Building dashboards

Design reporting dashboards in Nobly Insight — sections, rows, elements, the column grid, and how to configure each element type.
Once a data source is saved and refreshed, you can surface it on a dashboard — see Building dashboards.