Data apps: open, run, inspect and share
A data app is a saved page that runs queries against your warehouse and renders the result. This guide is about reading one: finding it, re-running it, reading an older run, and saying exactly where a number on the page came from.
What a data app is
A data app is a dashboard, tracker, scorecard or report that someone saved so the rest of the team can open it. Behind it sits a workflow: the steps that fetch data, run SQL and render the output. You do not need to open the workflow to use the app, but it is what produces everything you see.
Each execution is a run. Runs are kept, so last Monday's figures stay available exactly as they were on Monday. Opening an app does not re-run it, you land on the most recent run. Running it queries your warehouse as it stands right now.
Find and open one
- Click Data Apps in the Build group of the left rail. The page lives at
/data-apps. - The page is headed Data Apps with a count beside it, and below that a grid of cards, one per app.
- Narrow the grid with the search box (Search data apps…) or the All / Favourites / Drafts pills. Group by folder switches between folder grouping and a flat grid; the same control reads Ungroup once grouping is on.
- Click a card. You land on that app's most recent run.
Nearly every app works this way. A small number are persistent apps: they hold a standing list of cases people work through rather than a series of runs. Clicking one of those cards opens the cases view, there is no Run Now (the toolbar has Update Now instead, with a status beside it reading Updated 5m ago or Updating…), and there is no run selector until you switch to the runs view with the toolbar's view toggle. From there, everything below applies unchanged.
Run Now and run history
Use Run Now to query the data currently in your warehouse. A new run does not refresh the source data itself; check Connections or ask your admin when the source last synced. If the app takes parameters, a Run Parameters popover asks for them first. Rig selects the new run straight away and confirms with Data app started. The run happens in the background, so the page stays usable, and while it is queued or running a red Cancel button takes the place of Run Now.
The run selector at the top of the page lists RECENT RUNS with a total count. Pick an earlier entry and the page re-renders with that run's numbers. This is how you answer "what did this say last week?" without rebuilding anything. A run you start joins the list as soon as you click Run Now.
The Inspector
The Inspector is a panel on a run that shows the machinery behind it. Which tabs appear depends on what the app does. Three matter to you as a reader:
- SQL Queries: the queries that actually ran for this run.
- Data: the rows those queries came back with.
- Report: the rendered output you see on the page.
The rest are there for whoever built the app: Raw JSON, State, Metrics, LLM Prompts, Template, Data Flow, Tables, Volume and Markdown. You can open them, but you do not need them to read a result.
Trace a number to its SQL
This is the single most useful thing the Inspector gives you, and it takes under a minute.
- Pick a figure on the page that you want to defend or question.
- Open SQL Queries and find the query that produced it. Note the tables it reads from.
- Open Data and find the matching row. Confirm it agrees with what the page shows.
Figure, query, source table and row together make up the audit trail. When someone asks "where does this number come from?", you can answer with a table name and a query rather than forwarding the question to an engineer.
Links that open the latest run
For colleagues who already have access to the app, share its address without a run in it. Copy link, at the bottom of the People tab, gives you exactly that: a /view?workflow=… link that opens the app on its own, without the Rig menus, after the usual sign-in. The address in your browser works too once you delete the &execution=… part.
A link with no run in it opens the newest run that person can see, going by when each run started, so it moves on every time the app runs. That can be a run that is still going or one that failed, and the run selector shows which. A link that still has execution= in it, or a /data-apps/<run id> address, always opens that one run.
Which runs someone can see depends on their access rules. If none of their role's row filters, column masks or blocked tables apply to what the app reads, they see every run, scheduled ones included. If any do, the app's runs are private to each viewer: they see the runs they started themselves plus any run shared with them, so the link opens their own latest run. Scheduled runs count as started by the app's creator, so a viewer whose runs are private does not see them unless you share them All runs (incl. future), as Which runs people see describes. An app whose AI step picks its tables while it runs, or that reads a virtual data model, is treated as narrowed whenever the role has any such rule at all. Apps that read a user-scoped table work differently again, as row scoping explains.
The public equivalent is an embed link set to Always show latest successful run, which shows the app's newest completed run each time someone opens it. Rig refuses that option when your own access rules narrow the app in the way described above, because the embed would show the latest run, whoever started it, to anyone holding the link. Create share link then fails with Couldn't create share and the message Your access rules narrow this data app's results, so its runs are private to each viewer. Only a snapshot of your own run can be shared externally. The check is made against the person creating the link, so it can fail for you and work for a colleague whose rules do not touch what this app reads. You can do either of these instead:
- Start a run yourself with Run Now, open it and pick Just this run. A snapshot of a run someone else started gets the same message, and that includes the app's scheduled runs unless you created the app.
- Share the app with people, a role or a team from the People tab, then send them the Copy link link. Each of them sees the app under their own access.
Sharing runs with a person from the People tab has the same limit, covered in Which runs people see.
Download and export
- Download PDF saves the run as a PDF. On an interactive dashboard it keeps the filters and tab you have selected; a report is saved in its default state.
- Export CSV downloads the rows a data step returned. When more than one step returned rows, it becomes a menu with one entry per step, named by its step ID and row count, such as data_1 (1,234 rows). If no step returned rows, there is no button. A run keeps only a capped number of rows per step, so a large step can export fewer rows than it returned. When that happens Rig says Export truncated and Exported first N of M rows — the stored run output is capped.
Scheduling
An app can run on a clock, but that is set up deliberately by whoever built it. You cannot tell from the grid card whether an app is scheduled, and the card does not show a schedule. If you need to know when an app last refreshed, read the run selector; if you need to know when it next will, ask the person who built it.
Common problems
For a run that failed, with a red Run Failed panel in place of the report, see When a data app run fails.
- You get "Run already in progress". Another run of the app is still going, perhaps one a colleague started. Wait for it to finish, which can take minutes for a long query, then run again. On an app that shows each viewer their own rows there is no pop-up: a grey note reads Another refresh is in progress — this app updates per viewer, and Rig tries your refresh again once that run has finished.
- The app shows old numbers. You are looking at a saved run. Check the run selector and re-run to query the warehouse again. If the numbers are still old, check when the source last synced or ask your admin.
- It says there are no runs yet. The app has been created but never executed. Run it once.
- The numbers do not match your old system. A data app reads live warehouse data, which is not the same thing as a validated, signed-off figure. Report the difference rather than assuming either side is wrong.
- You cannot see an app a colleague mentions. Data apps respect access. If the app has never been shared, whether you see it depends on your role being able to read the data it uses, so an owner can fix it by granting your role that data. Otherwise ask the person who built it to share it from the People tab; only they can change its sharing. Apps Rig built for you have no creator in your workspace, so ask Rig to share those.
- You get "Only the owner can change sharing". You opened Share on someone else's app. The button is shown to everyone; the grant is not.
- Create share link fails with "Your access rules narrow this data app's results". Your role's rules filter or mask something this app reads, so an embed that always shows the latest run is refused. Use Just this run on a run you started, or share from the People tab, as Links that open the latest run describes.
- An embed link now says "This data app's runs are private to each viewer and cannot be embedded". Something changed after the link was made (the access rules, the app's queries or the run it shows), and the rules of the person who created it now narrow the app. Replace it with a Just this run link or a People tab share.