Bow-tie register
Building a bow-tie from one row per barrier: what each row adds, the columns, Order, shared barriers, which node a row's values describe, a complete example and the two warnings every register shows.
One row per barrier
Each row names a barrier and the threat or consequence whose path it is on, with the top event repeated on every row. Rows with the same threat make up that threat's path, and rows with the same consequence make up that consequence's path. The visual builds the nodes and connections from the names; there is no Node ID column.
| Row has | Adds |
|---|---|
| Threat and Barrier | The barrier, as a preventive barrier on that threat's path. |
| Consequence and Barrier | The barrier, as a recovery barrier on that consequence's path. |
| Threat, Consequence and Barrier | The barrier on both paths, as two separate barriers. |
| Threat and no Barrier | The threat with nothing in its way. It is reported as a threat with no preventive barrier. |
| Escalation Factor | An escalation factor weakening this row's barrier. |
| Escalation Control | A control managing this row's escalation factor. |
Columns
| Column | Maps to | Well | Fill it in on |
|---|---|---|---|
| Threat | Threat | Data fields | Rows on a threat's path. |
| Barrier | Barrier | Data fields | Every row. |
| Order | Order | Data fields | Every row. |
| Top Event | Top event | Data fields | Every row, worded the same way. |
| Consequence | Consequence | Data fields | Rows on a consequence's path. |
| Escalation Factor | Escalation factor | Data fields | The row of the barrier it weakens. |
| Escalation Control | Escalation control | Data fields | The same row as its escalation factor. |
| Status | Status | Data fields | Every row. |
| Health | Health | Values | Every row. |
| Diagram ID | Diagram ID | Data fields | Every row, when the table holds more than one bow-tie. |
| Diagram Name | Diagram name | Data fields | Every row, for a readable name in the diagram picker. |
Node Type, Label, Secondary label and Relationship Type are not used in a register. Without a Top Event column the centre is drawn and labelled Top event.
Order
- Within a path, barriers follow Order, lowest first. On a threat's path the lowest is nearest the threat. On a consequence's path it is nearest the top event.
- A path's position from the top is set by the lowest Order on it.
- Continue the numbers down each side instead of starting again at 1 for every path. Two paths on the same side starting from the same Order are reported with Two or more threat lanes share an Order value, so their top-to-bottom position is not deterministic.
- Rows with no Order keep the order in which Power BI sends them, which is not the order of your source table.
A complete example
The same bow-tie as the edge list example, apart from the hazard, which a register cannot hold. It draws with no errors, and with the two warnings described at the end of this page. Health is in Values, set to Don't summarize.
| Threat | Barrier | Order | Top Event | Consequence | Status | Health | Escalation Factor | Escalation Control |
|---|---|---|---|---|---|---|---|---|
| Internal corrosion | Inspection programme | 1 | Loss of containment | Effective | 0.96 | |||
| Internal corrosion | Internal coating | 2 | Loss of containment | Degraded | 0.71 | |||
| Overpressure | High-pressure alarm | 3 | Loss of containment | Effective | 0.99 | |||
| Overpressure | Relief valve | 4 | Loss of containment | Effective | 0.98 | Instrument air failure | Backup air receiver | |
| Gas detection | 1 | Loss of containment | Jet fire | Effective | 0.98 | |||
| Deluge system | 2 | Loss of containment | Jet fire | Failed | 0.42 | |||
| Automatic isolation | 3 | Loss of containment | Environmental release | Effective | 0.95 |
Write the barrier's name the same way on each row. On one side, rows with the same barrier name are one barrier, on every path that names it. The same name on the threat side and the consequence side makes two barriers, one on each side.
The top event
Every row must name the same top event. A register naming two draws only the first, and reports This register names 2 top events (Loss of containment, Structural failure). A bow-tie has one. Add a Diagram ID column so each is its own diagram; only "Loss of containment" is drawn.
Escalation factors
Put an escalation factor, and its control if it has one, on the row of the barrier it weakens. On a row with a threat the factor weakens the preventive barrier; on a row without one it weakens the recovery barrier.
Which node a row's values describe
Every value on a register row describes that row's barrier. The threat, consequence and top event have no rows of their own, so each takes its values from the first row that names it. An escalation factor and its control take the values of the barrier row they are on.
Node IDs
A threat, consequence, top event or escalation node is identified by its name. A barrier is identified by its name with PB: in front on the threat side or RB: on the consequence side, such as PB:Relief valve. That is the Node ID shown in the Node Inspector and, for barriers, in tooltips.
Two warnings every register shows
| Warning | Why |
|---|---|
| Hazard is missing. | A register has no column for the hazard. Use an edge list to draw one. |
| A node is described by rows that disagree about Health, Status; the first row's values are shown. | The top event is named on every row, and those rows carry different barrier values. The column names in the message are your own. |
Both are warnings. The bow-tie still draws and every other rule is checked as usual.









