Preparing bow-tie data
Choosing between an edge list and a register, naming columns so they bind without mapping, which well each column goes in, and checks to make before binding the table.
Edge list or register
Both shapes draw the same kind of diagram. They differ in what one row describes, and so in what the table can hold.
| Edge list | Register | |
|---|---|---|
| One row describes | One connection: a node and the node it leads to. | One barrier, and the threat or consequence whose path it is on. |
| Hazard | A row of its own. | Not possible. Every register shows the warning Hazard is missing. |
| Node IDs | Your own. | Made from names. A barrier's name gets PB: or RB: in front of it. |
| Values on threats, consequences, the top event and escalation nodes | From their own rows. | Copied from a barrier's row. |
| Node Type column | Needed. | Not used. |
| Relationship Type column | Optional. | Not used. |
| Warnings on a correct table | None. | Two, both explained on Bow-tie register. |
When Node ID is mapped, the table is read as an edge list, even if it also has Threat or Barrier columns. When Node ID is not mapped and Threat, Barrier or Consequence is, the table is read as a register.
Column names that bind
Give a column one of these names and it binds to its role without mapping. Case, spaces and punctuation are ignored, so Barrier_Status, barrier status and BarrierStatus are the same name.
| Role | Recognised column names |
|---|---|
| Node ID | Node ID, Node, ID, Code, Ref, Reference, Element ID, Item ID |
| Connected node | Connected Node ID, Connected Node, Connected To, Connected, Target, Output, Feeds, Parent ID, Parent, Predecessor |
| Node type | Node Type, Type, Element Type, Classification, Category, Kind, Symbol |
| Label | Label, Description, Title, Text, Node Name, Node Label, Caption, Summary |
| Secondary label | Secondary Label, Subtitle, Subheading |
| Relationship type | Relationship Type, Relationship, Relation, Link Type, Edge Type, Connection Type |
| Order | Order, Sequence, Sort Order, Sort, Position, Rank |
| Threat | Threat, Threat Name, Cause, Cause Name, Initiating Event |
| Barrier | Barrier, Barrier Name, Control, Control Name, Safeguard, Measure |
| Consequence | Consequence, Consequence Name, Outcome, Impact, Effect |
| Top event | Top Event, Top Event Name, Central Event, Loss of Control, Hazardous Event |
| Escalation factor | Escalation Factor, Escalation, Defeating Factor, Degradation Factor |
| Escalation control | Escalation Control, Escalation Factor Control, Escalation Barrier |
| Status | Status, State, Condition, Health, Current Status, Current State, Current Condition, Barrier Status, Control Status, Operational Status, Asset Status |
| Health | Health, Health Score, Effectiveness, Effectiveness Pct, Effectiveness Percent, Barrier Effectiveness, Barrier Effectiveness Pct, Integrity, Barrier Integrity, Control Effectiveness |
| Diagram ID | Diagram ID, Diagram, Diagram Code, Model ID, Analysis ID, Study ID |
| Diagram name | Diagram Name, Diagram Title, Analysis Name, Study Name, Model Name |
Health binds only to a number column. A column named Parent ID, Parent or Predecessor binds to Connected node but is still read as the node the row leads to; see If your table names the previous node on Bow-tie edge list.
Which well each column goes in
Put text columns and Order in Data fields. Put Health and any other number column in Values, and set each one to Don't summarize.
Columns you do not map, such as an owner, a control ID or a last verified date, can go in any well. In Data fields they show in the Node Inspector. In Values or Tooltips they also show on hover.
More than one bow-tie in a table
Add a Diagram ID column and give every row of a bow-tie the same value. Add Diagram Name for a readable name in the diagram picker. A Diagram Type column holding Bow-Tie Risk Analysis, Bow-Tie, Bowtie or BT helps the visual open a bow-tie when the table also holds other diagram types.
When the table stores each bow-tie once per month, site or scenario, slice it to one of them, so each node has one set of values.
Checks before binding the table
- Trim Node ID and Connected Node ID. An identifier that differs only by a space does not join.
- In a register, write the top event the same way on every row, and a shared barrier the same way on every path. A different spelling is a different node.
- Give Health a number type, and store percentages as fractions: 0.96, not 96.
- Include Order. Power BI does not send rows in the order of your source table, so without Order the paths and barriers can come out in a different order.
- Keep node type wording as your source writes it. Unrecognised wording can be mapped under Node type values on the Data Mapping tab.









