Skip to main content
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
Showing results for 
Search instead for 
Did you mean: 
Creator III
Creator III

How to use Sankey Chart to show a process flow

Hi All,

I have to create a viz to show how data is flowing sequentially through different steps in a process .  We are looking to use Sankey chart (Vizlib or Qlik Viz bundle) to make this.

We have a field where we capture all the steps that an ID goes through. Take the below view as an example, when this ID is selected, we would like to see 5 slabs(horizontal) for every Step.

ID Step
1 Step 1
1 Step 2
1 Step 3
1 Step 4
1 Step 5


If I use the Step field as my dimension then all the 5 Steps will come in one vertical line but the requirement is to show them horizontally in 5 different slabs to show the actual flow.

Please keep in mind that we have around 20 distinct Steps currently and flow is bi-directional so we can go back and forth which means total number of steps could be greater than 20.

Any suggestion will be highly appreciated. I am also open to other charts suggestions if they serve the purpose.



Labels (1)
1 Reply
Creator III
Creator III

Hi @pranaview,

I would consider not using so many slabs going across your Sankey but instead simplifying it down to a "From" and "To" slab. This will demonstrate backward movement from Step 3 to Step 2 perhaps more clearly as you would have to introduce slabs that only show movement from Step 3 to Step 2. I think this would cause an exponential problem as you'd have to account for every possible recursive movement.

Here's an example I created based on your data and I think you can see where the ratio of ID's that have progressed through to the next step and those that have reverted back a step. This will also demonstrate where an ID has skipped a step. (If that's possible in your process)


This code creates a column showing where the step moved to for purposes of the dimension in the Sankey.

load Inline [
ID Step TransferDate
1 Step 1 1/01/2020
1 Step 2 3/01/2020
1 Step 3 5/01/2020
1 Step 4 6/01/2020
1 Step 5 10/01/2020
2 Step 1 1/01/2020
2 Step 2 3/01/2020
2 Step 1 5/01/2020
2 Step 2 6/01/2020
2 Step 3 10/01/2020
3 Step 1 1/01/2020
3 Step 2 3/01/2020
3 Step 3 5/01/2020
3 Step 4 6/01/2020
3 Step 3 10/01/2020
3 Step 4 12/01/2020
3 Step 5 15/01/2020
](delimiter is '\t');

load *,
if(peek(ID) <> ID,
null(), peek(Step)) as StepTo

resident Data
order by ID, TransferDate desc;

drop table Data;