Docs · Concepts
Drilldowns
More about any row of a Check, matching or not — one query, run with that row's values when somebody presses its button.
A Check says whether two systems agree about a line. It does not say what the line is: the item's description, its pack size, the store's address, who last touched the document. That lives in some other table, and the question comes up on matching rows as often as on differing ones.
A drilldown answers it. It is one query, bound to the row, run when somebody presses the ⓘ at the start of a row:
Shows more about any row of the result, matching or not: press the ⓘ at the start of a row and this query runs with that row's values in it.
#A drilldown and an investigation
They are easy to mix up, and they answer different questions.
| Drilldown | Investigation | |
|---|---|---|
| Asks | What is this row? | Why does this row disagree? |
| Offered on | Every row, matching or not | Rows that disagree |
| Made of | One query | Steps, questions, branches, agents, a conclusion |
| Runs | When somebody presses the row's button, for that row | On demand, or with the Check |
| Gives | The rows the query returned | A verdict on the row |
#Making one
Drilldowns are in the Check's tree, under Drilldowns. Each one asks for:
| Field | Notes |
|---|---|
| Drilldown name | Shown on the button: More about this row: Item master |
| Description | A line for whoever presses the button, shown in the row's window: what these specs are and where they come from |
| Query | One of this check's data sources, or one from the library |
The row's values reach the query the way they reach an investigation's step: as {{row.…}} tokens, one per key and one per carried column, and, through the bindings, under the names the query already uses. A query that says WHERE item_id = {{sku}} is bound sku → row.item_id, and needs no rewriting.
A value from a row goes into SQL as data, never as SQL, so a row cannot change what the statement does.
Try it runs the drilldown on a row of the Check's last run, matching or not, before anyone else presses the button. Run the Check once first.
A Check can have several drilldowns. Each gets its own entry on the row's button, in the order they are listed.
#Reading the answer
The row's window shows what came back:
- One row reads as the row's specs: a name beside each value.
- Several rows read as a table, which says how many it shows of how many when there are more.
- Nothing reads Nothing came back for this row.
While it runs, the window says so, with a moving bar and the seconds. Stop drops the request, and the server cancels the query; Run again asks once more.
What was sent shows the statement as it went to the system, with the row's values in it. It is open on its own when nothing came back, since a query filled from a row has three places to go wrong and a driver's error names none of them.
#Who can do what
Making, changing and deleting a drilldown is an editor's. Pressing the button is a viewer's: anyone who can read the Check can ask about one of its rows.