Part 4
Part 4
Part 4
f
a
r
D
Maji Ndogo: Visualizing the currents of change in Maji Ndogo
O n l i n e
I n t r o d u c t i o n
Firstly, thank you for the detailed report the team sent me! We could use it to plan out some budgets and even show it to an international funder,
U p d a t i n g o u r d a t a who is helping us fund the solution to this crisis.
T h e s t a r t o f t h e f i n a l
I wanted to update you on the Maji Ndogo water source improvement project. We've decided to engage local vendors for this initiative, following a
s t r e t c h
thorough vetting process. Each team has been operational for over five years, has clean and updated financial records, and has undergone
P r i o r i t i z i n g u s e r s
extensive training. This is to ensure they fully understand the responsibility of their role and the consequences of any dishonesty.
C r a f t i n g u s e r - f o c u s e d
To streamline our monitoring and decision-making process, I am requesting a dashboard to be created. The dashboard should provide clear insights
v i s u a l s
C r e a t i n g t h e c a n v a s o f
• Current progress status of the project.
h o p e
o n e s o u r c e a t a t i m e
• Specifics on what the funds have been used for.
T h e c o s t o f c h a n g e • Forecasting whether the allocated budget will suffice for project completion.
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
• Comprehensive data representation at national, provincial, and town levels.
O n e y e a r u p d a t e
• Provide some insight into what the teams are doing on the ground.
T h e f i n a l u p d a t e
This dashboard will be instrumental in guiding our next steps and ensuring efficient use of resources.
J o u r n e y ’s e n d
All the best,
Aziza
07:25]
2
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f i n a l
Hello! Well, here we are... The project just kicked off, and we have our first few water sources completed!
s t a g e
U p d a t i n g o u r d a t a
07:28
T h e s t a r t o f t h e f i n a l
s t r e t c h
Can you believe it is finally happening? We have one more thing to help out with... We need to build a dashboard for the public so they can see
P r i o r i t i z i n g u s e r s where the money went. We want to show them where the money is being spent, and what the effect is. That dashboard will also be useful for the
C r a f t i n g u s e r - f o c u s e d project decision-makers, to make sure our project is on track, and our resources are put to good use.
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
07:36
C r e a t i n g t h e c a n v a s o f
h o p e
I noticed my PowerBI is getting a bit slow, so if yours is too, these steps will help optimize our pbix file a bit:
I m p r o v i n g l i v e s
• Make a copy of the pbix file from last time and put it into a new folder and save this one as Public_dashboard using "Save As...". Then
U p g r a d i n g M a j i N d o g o
delete all of the visual pages. These will slow down Power BI quite a bit, so let's start fresh.
o n e s o u r c e a t a t i m e
• I removed some of the data we don't need anymore, so if you are seeing empty columns it's ok.
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
• You are welcome to remove the following columns:
O n e y e a r u p d a t e
– date, biological, description, and pollutant_ppm columns from well_pollution
– address column from location
T h e f i n a l u p d a t e
• Remove the queue_composition table, water_source_related_crime tables.
J o u r n e y ’s e n d
07:42
3
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Next up, we have to update the dataset. I sent you an Excel file with some of the new data. If you replace the Excel file you have, it will load the
d a t a e x p l o r a t i o n j o u r n e y .
new data in our model. But, remember, this might break our report from last time, so to avoid that, you can store the Excel file somewhere else, and
U p d a t i n g o u r d a t a
then edit the Data source settings in the power query editor to link to the new location.
T h e s t a r t o f t h e f i n a l
s t r e t c h
07:46
P r i o r i t i z i n g u s e r s
V i s u a l i s i n g t h e c h a n g e
Md_water_services_data.xlsx
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
07:50
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
Ok, make sure your model loads correctly, and that there are no errors, and look at project_progress. You will notice some new columns.
T h e c o s t o f c h a n g e
province is gone, and now town has town names, but now Amina and Harare have the first letter of the province at the end so we know which
W h e r e w i l l t h e m o n e y g o
Harare we're talking about and rural areas are also now appended with the name of the province! This is updated in the location too.
07:58
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
4
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
This update will break the budgeted_improvement_cost column in the project_progress table we calculated last time. Here is the DAX to fix it.
d a t a e x p l o r a t i o n j o u r n e y .
Since rural areas now have a province name attached, we need to search for a string rather than having to match it exactly:
U p d a t i n g o u r d a t a
budgeted_improvement_cost =
T h e s t a r t o f t h e f i n a l
IF(
s t r e t c h
CONTAINSSTRING(
'project_progress'[town],
P r i o r i t i z i n g u s e r s
"Rural*"
C r a f t i n g u s e r - f o c u s e d
),
v i s u a l s
RELATED('infrastructure_cost'[Rural_adjusted_cost]), RELATED('infrastructure_cost'[unit_cost_USD])
)
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
08:03
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o Your calculated [Rural_adjusted_cost] column in infrastructure may have a different name than mine.
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
08:07
W h e r e w i l l t h e m o n e y g o
T h e f i n a l u p d a t e • cost, the actual cost of the project in USD($). This cost is the amount we paid to make the upgrade. It includes travel costs, materials and
J o u r n e y ’s e n d labour. In an ideal world, this would match the Budgeted_improvement_cost column we created to budget for the project.
08:13
5
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Make sure that all of the data types are correct, and the dates are set to dates in this format (YYYY/MM/DD). If the date filters we're going to make
d a t a e x p l o r a t i o n j o u r n e y .
don't work, check this step again.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
08:19
s t r e t c h
P r i o r i t i z i n g u s e r s
Finally, check the relationships and directionalities. What should the water_source-to-project_progress relationship be? These may have
C r a f t i n g u s e r - f o c u s e d changed when we import data, so make sure these are correct, and what we expect.
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
08:25
C r e a t i n g t h e c a n v a s o f
h o p e
Next up, vendor_ID's are a little impersonal, so if you import the Excel file again, you will see a table called vendors. We won't use it, but here you
can see who the heroes are on the ground, improving the lives of our people!
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
08:29
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
Choose vendors only, and import it into the data model. Make sure it imports correctly and you will see information like the company name, who
owns it, and what they do:
T h e f i n a l u p d a t e
• Water Purification System Installation teams install the UV and RO well filters.
J o u r n e y ’s e n d
• Civil Infrastructure Assessment teams are working on the broken infrastructure.
08:36
6
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Let's check the data in project_progress. For each project, we now know if it is Complete, or still in the Backlog, and once it is complete, we
d a t a e x p l o r a t i o n j o u r n e y .
can see which team worked on it when the team started working on the project, when they completed it, and how much we paid them for the
U p d a t i n g o u r d a t a
improvements. We have all of the other data we had before, so we are going to make some amazing things!
T h e s t a r t o f t h e f i n a l
s t r e t c h
08:44
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d Let's think through the stories a bit before we make the dashboard. We have two requests from Aziza. The dashboard has to make the work we're
v i s u a l s
doing visible to the public and help decision-makers monitor the progress of the project.
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
08:49
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
7
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
So, as a member of the public, I want to see:
d a t a e x p l o r a t i o n j o u r n e y .
1. How the project is going. Very simply: Which sources have been completed?
U p d a t i n g o u r d a t a
C r a f t i n g u s e r - f o c u s e d
4. What the money was spent on?
v i s u a l s
C r e a t i n g t h e c a n v a s o f
08:55
h o p e
o n e s o u r c e a t a t i m e
1. How far is the project?
T h e c o s t o f c h a n g e
2. How much money has been spent so far?
W h e r e w i l l t h e m o n e y g o
3. Where was the money spent?
J o u r n e y ’s e n d
7. I want to see data at the national, provincial and town level.
08:58
8
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Their stories are quite similar, so we can build one dashboard for both purposes and create detailed drill-throughs for more specific content when
d a t a e x p l o r a t i o n j o u r n e y .
we need it.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l 09:03
s t r e t c h
P r i o r i t i z i n g u s e r s
So let's create a basic layout of our dashboard, then dive into what we need to calculate.
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
09:06
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
9
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
This is how I laid out mine:
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
09:10
10
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
I hope you did something else! But did you notice my little orange rulers? I use them to make sure the spacing of my visuals is consistent across
d a t a e x p l o r a t i o n j o u r n e y .
the page, so there is a little "nugget" for you, as I used to tell Chidi. I am also still unsure about the "Top vendors" section. Maybe it will be better to
U p d a t i n g o u r d a t a
put page controls there.
T h e s t a r t o f t h e f i n a l
s t r e t c h
09:16
P r i o r i t i z i n g u s e r s
• A map that will show us how far along the project is. Users should be able to see visually how far the project is. Users should also be able to
V i s u a l i s i n g t h e c h a n g e select any town, or rural area, and know immediately how the project is doing.
C r e a t i n g t h e c a n v a s o f
h o p e
• A cost tracking visual. A KPI plot is a nice option that will show us how much we thought it would cost, vs. how much it is really costing us.
I m p r o v i n g l i v e s
• Break down the cost of the project so people can see where the money was spent.
U p g r a d i n g M a j i N d o g o
• Summaries of key metrics:
o n e s o u r c e a t a t i m e
W h e r e w i l l t h e m o n e y g o – Basic access to water (%), updated now that the new water sources are installed.
– How many people are affected by the changes.? Remember, we're doing this for the citizens of Maji Ndogo!
W a t e r f l o w s – How far to go before the project is complete?
O n e y e a r u p d a t e
We may add more, but this is my plan for now. Each of these visuals needs to be interactive at the national, provincial, and local levels but also has
to interact with the data over time.
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
09:19
11
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
To make the new and improved map, you are going to need this shape map JSON file as our Map:
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l MD_Full_map.json
s t r e t c h
P r i o r i t i z i n g u s e r s
09:23
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
The town column in project_progress is the column we use in the location well. If you drag source_status into the Color saturation well,
V i s u a l i s i n g t h e c h a n g e you should see it light up! This now just shows us how many water sources there are in each location, not their actual status, or how many are
C r e a t i n g t h e c a n v a s o f
complete. So, we need to create a measure to make this visual effective. We need the same data for the Project progress (%) metric too, so
h o p e
let's make a measure for it.
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o 09:31
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
The problem is that the measures we create this time need to interact with the location and date filters properly. The calculations are simple, but
W h e r e w i l l t h e m o n e y g o
the filters are going to complicate things.
09:38
W a t e r f l o w s
O n e y e a r u p d a t e
To calculate the Project progress (%), we need to calculate the number of complete projects divided by all of the projects. At a national level, it
includes all of the projects in Maji Ndogo, but for Djenne, it will be the number of projects completed in Djenne, divided by the number of projects in
T h e f i n a l u p d a t e
Djenne in total. So we need the measure to always take into account the town filter.
J o u r n e y ’s e n d
09:44
12
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
The total number of improvements is:
d a t a e x p l o r a t i o n j o u r n e y .
total_improvements =
U p d a t i n g o u r d a t a
CALCULATE(
T h e s t a r t o f t h e f i n a l
COUNTROWS('project_progress'),
s t r e t c h
ALLEXCEPT('project_progress','project_progress'[town]))
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d 09:50
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
Let's unpack it together.
C r e a t i n g t h e c a n v a s o f
h o p e
09:53
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o First up, we have CALCULATE. It lets us modify how we calculate a measure based on specific conditions, which in this case are set by two
o n e s o u r c e a t a t i m e
conditions ALLEXCEPT(project_progress, project_progress[town]) and ALL(project_progress[date_of_completion]).
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o 09:59
W a t e r f l o w s
Inside CALCULATE, there's COUNTROWS(project_progress). This part is straightforward – it's just counting how many rows are in our
O n e y e a r u p d a t e
project_progress table.
10:03
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
Now, the interesting part: ALLEXCEPT(project_progress, project_progress[town]). This bit is telling Power BI to ignore all filters except for
the ones in the town column. So, no matter what other filters are applied elsewhere, the only one that will apply is the town column. Adding a date
slicer as a filter will create problems. When we change the date, the rows are filtered by the date, which means we don't get the total number of
projects.
10:08
13
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
What we get is the total number of projects in the project_progress table, but if we select a town, it calculates all of the improvements in that town.
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a 10:14
T h e s t a r t o f t h e f i n a l
s t r e t c h
Next up, the number_completed_projects. What is the most reliable way to know whether a project is complete? Well, we can count the number
P r i o r i t i z i n g u s e r s
of rows that satisfy the condition for a project being complete. You should get a number of 29.
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
10:22
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f Now that we have that, go ahead and calculate the percentage (pct_project_complete). Remember to format it so it will show up as a % with no
h o p e
decimals.
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
10:31
o n e s o u r c e a t a t i m e
Your value should be 0% at the start on a national level, but Serowe, for example, is 1% done. Check that your values are the same as mine, and
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
add them to the dashboard as cards.
10:43
W a t e r f l o w s
O n e y e a r u p d a t e
I added another metric there; "More sources to go". You can calculate that one on your own.
T h e f i n a l u p d a t e
10:47
J o u r n e y ’s e n d
Now we also have a good metric to show progress on the map, so use pct_project_complete as the colour saturation variable. Since we used
percentages, the visual will scale better, so the colours are now more informative than before.
10:51
14
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
This is what my map looks like:
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
10:54
15
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Towns like Zuri, Mrembo, and Isiqalo are grey in mine. What does that represent? Then there are coloured towns in mine. What do these colours
d a t a e x p l o r a t i o n j o u r n e y .
represent? Hover your mouse over them. Also add some information like number_completed_projects in the tooltips to make it more informative.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l 11:02
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
16
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Next up, we calculate the Basic access to water numbers. We did something like this last week, but now we need to do it in a way that includes the
d a t a e x p l o r a t i o n j o u r n e y .
new water sources. Rivers were replaced by wells, wells are clean once they are complete, so these citizens now have basic access to water from
U p d a t i n g o u r d a t a
an improved water source, so: Basic access to water = (population_with_basic_access + population_improved)/total_population
T h e s t a r t o f t h e f i n a l
s t r e t c h
11:09
P r i o r i t i z i n g u s e r s
total_population =
V i s u a l i s i n g t h e c h a n g e CALCULATE(
C r e a t i n g t h e c a n v a s o f <BLANK>('water_source'[<BLANK>]), −− Sum of people
h o p e ALLEXCEPT(
'project_progress',
I m p r o v i n g l i v e s 'project_progress'[<BLANK>]
U p g r a d i n g M a j i N d o g o ) −−Only keep [town] as a filter.
o n e s o u r c e a t a t i m e )
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o 11:17
O n e y e a r u p d a t e
11:21
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
You should get 28M people for the population of Maji Ndogo, and 3M people for the population of Kilimani. Make sure it updates correctly! Do you
see that the total population calculation works just like the total_improvements one did, but we just aggregate using a different method?
11:31
17
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Now we calculate population_with_basic_access. Last time we used a column to classify sources as Basic or not, then added the rows. Since
d a t a e x p l o r a t i o n j o u r n e y .
our dashboard is slowing down, let's use some DAX magic to put it into a measure all in one go. This way, Power BI doesn't have to store all of
U p d a t i n g o u r d a t a
those strings in the table, so it calculates faster and takes up less space. Since we did it last time, I'll give you all of the code you need to do it.
T h e s t a r t o f t h e f i n a l
s t r e t c h
11:35
P r i o r i t i z i n g u s e r s
population_with_basic_access =
V i s u a l i s i n g t h e c h a n g e CALCULATE( −− Calculate with some conditions
C r e a t i n g t h e c a n v a s o f SUM('water_source'[number_of_people_served]),−− Population when....
h o p e FILTER(
ALL(water_source),
I m p r o v i n g l i v e s OR(−− Nested or to have well, OR tap_in_home OR shared tap
U p g r a d i n g M a j i N d o g o OR(
o n e s o u r c e a t a t i m e AND( −− When it is a well, it must be clean too
'water_source'[type_of_water_source] = "well",
T h e c o s t o f c h a n g e RELATED(well_pollution[results]) = "Clean"
W h e r e w i l l t h e m o n e y g o ),
'water_source'[type_of_water_source] = "tap_in_home"
),
W a t e r f l o w s
AND( −− When it is a shared tap, it must have a short queue time
O n e y e a r u p d a t e
'water_source'[type_of_water_source] = "shared_tap",
'water_source'[Average_queue_time] < 30
)
T h e f i n a l u p d a t e
)
J o u r n e y ’s e n d
)
)
11:39
18
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Much more complex than last time, right? But this is a bit more efficient. Power BI does tend to slow down as a project progresses, so we need to
d a t a e x p l o r a t i o n j o u r n e y .
clean up now and again, and this measure avoids creating a column full of data. Here we basically calculate the sum of people who use sources
U p d a t i n g o u r d a t a
that fulfill the conditions of basic water.
T h e s t a r t o f t h e f i n a l
s t r e t c h
11:45
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
Next up, we need to calculate the number of people who now have basic access, once their source is improved. How would we calculate it? The
v i s u a l s worst thing is how nested the conditions become.
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
11:49
h o p e
Calculate the number of people who will have access to basic water once the water source is improved as population_now_basic_access. Make
I m p r o v i n g l i v e s
sure that the column you use to filter with will accurately show if a source is improved or not. You should get 10760 people who now have access
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
to basic water (excluding everyone who already had basic access).
T h e c o s t o f c h a n g e
11:53
W h e r e w i l l t h e m o n e y g o
Calculate the number of people that will have access to basic water once all the improvements are complete (including those that had access
W a t e r f l o w s
already), pct_population_now_basic_access, and remember to format it to display a percentage. It should be 34% at the start, and if
O n e y e a r u p d a t e
you select the town of Serowe in Hawassa, you should see 57% access. Basic access to water = (population_with_basic_access +
population_improved)/total_population
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
12:00
19
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Great! Now, let's jump into costs! The main thing we need to know about our finances is how much we have spent so far, and whether we have
d a t a e x p l o r a t i o n j o u r n e y .
spent more than we wanted to. Our budget from last time is our target, and ideally, we want to spend less than the budget. The KPI visual is an
U p d a t i n g o u r d a t a
excellent tool to visualise this since it will track our progress over time.
T h e s t a r t o f t h e f i n a l
s t r e t c h
12:11
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d For this visual to work well, we need a date slicer so we can select data between some dates. Add a date slicer to the visual.
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
12:18
C r e a t i n g t h e c a n v a s o f
h o p e
For this visual, we need to calculate two measures; the running cost (cumulative_cost) and running budget (cumulative_budget). These
numbers should sum up all of the budgeted costs and real costs, up to a date, respectively. For example, if we paid vendors $100 000 on day one
I m p r o v i n g l i v e s
and $150 000 on day two, the running cost is $250 000 on day two.
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
12:24
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
Our calculation for cumulative_budget should sum up all of the budget costs for projects with completion dates <= the current date. Blanks are
going to be a pain when we compare dates, so we need to remove them in the DAX. Try to create this measure on your own first. You should get a
W a t e r f l o w s
number of $128 450 for the data we currently have.
O n e y e a r u p d a t e
12:27
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
20
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
This is how I calculated cumulative_budget. Some of the fields missing <BLANK>:
d a t a e x p l o r a t i o n j o u r n e y .
cumulative_budget =
U p d a t i n g o u r d a t a
CALCULATE(
T h e s t a r t o f t h e f i n a l
SUM('<BLANK>'[<BLANK>]),
s t r e t c h
FILTER(
ALL('project_progress'[<BLANK>]),
P r i o r i t i z i n g u s e r s
'project_progress'[<BLANK>] <= MAX('project_progress'[date_of_completion]) &&
C r a f t i n g u s e r - f o c u s e d
<BLANK>(ISBLANK('project_progress'[<BLANK>])) −−This line removes blank\null values.
v i s u a l s
)
)
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
12:31
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e To calculate cumulative_cost, we can simply copy-paste the budget and change the columns to use the correct data. You should get an amount
of $131 914.91.
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
12:39
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
21
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
To set it up, create a KPI visual, and drag the cumulative_cost into the Value well, the cumulative_budget into the Target well, and
d a t a e x p l o r a t i o n j o u r n e y .
'project_progress'[date_of_completion] into the Trend axis well. Once these are set up, you should see a visual like this:
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
12:51
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
This format is not quite correct, so we have to change some of the settings. First, you will notice that the Goal is $98.70K, and we spent $131.91K.
o n e s o u r c e a t a t i m e
So we have spent more than we budgeted for, but the KPI is interpreting this as a good thing with a correct tick mark. To change this, change the
Trend axis to Low is good. Next change the Target label to Budget
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
12:54
W a t e r f l o w s
J o u r n e y ’s e n d
• How much money we have spent;
• With colours and icons, clearly show whether we have over-spent (Budget deficit) or if we spent less (Budget surplus).
13:00
22
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Add metrics like People helped (population_now_basic_access), number of sources to still improve (which is total_improvements -
d a t a e x p l o r a t i o n j o u r n e y .
number_of_completed_projects), and use the Aggregated_improvements column from last time to break down costs per improvement type.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
13:03
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
23
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Update your dashboard to have all of the visuals and slicers I made. Make sure to format all values, titles and labels that are displayed, unlike mine:
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
13:06
24
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Let's recap if we achieved the user stories we started with:
d a t a e x p l o r a t i o n j o u r n e y .
C r a f t i n g u s e r - f o c u s e d
4. What the money was spent on?
v i s u a l s
h o p e
7. I want to see data at the national, provincial and town level.
I m p r o v i n g l i v e s It's ok that we could not finish 6. We don't know where we can cut costs before the project starts, so let's wait for some data to come in, and we
U p g r a d i n g M a j i N d o g o
can try to help decision-makers with this once we know more.
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e 13:11
W h e r e w i l l t h e m o n e y g o
Then, take a few minutes to clean up all of the titles, text, and tooltips, make sure your spacing is correct, remove your rulers, and get ready to
W a t e r f l o w s
launch this dashboard to the public!
O n e y e a r u p d a t e
13:18
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
25
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
4 January 2024
S e t t i n g t h e s t a g e f o r o u r
d a t a e x p l o r a t i o n j o u r n e y .
Hello! It has been a while! After a year of upgrades, we have an update on our data, and now you will see the power of a dashboard. So let's get it
U p d a t i n g o u r d a t a
going!!
T h e s t a r t o f t h e f i n a l
s t r e t c h
13:22
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
Md_water_services_data.xlsx
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o 13:25
o n e s o u r c e a t a t i m e
Here is a visual I made to show how the sources are being upgraded across Maji Ndogo:
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
O n e y e a r u p d a t e
13:33
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
Overwrite the last Excel file with this one, or link it as the new source.
13:39
26
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Once you're all done, head back to your visual, and be prepared! Your date slider expanded, and now we can select data up to 2024! With no extra
d a t a e x p l o r a t i o n j o u r n e y .
modelling and no copy-pasting results into spreadsheets, we have an update of our story! If we accessed a SQL database, it would even happen
U p d a t i n g o u r d a t a
automatically!
T h e s t a r t o f t h e f i n a l
s t r e t c h
13:47
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d Everything is updated, so let's see what happened last year. We started at 34% access at the start, up to 48% now! That is massive, right?
v i s u a l s The project is 22% complete, so we still have a long while to go. If we got this far in one year, it will probably take 5 years in total! Ok.
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
13:52
h o p e
The bad news is money! If you look at the KPI plot, we can see we're about 10% over budget at the moment. Let's look around, and try to
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
understand why.
o n e s o u r c e a t a t i m e
13:56
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
If we look at the different provinces, we can see that Sokoto has taken a large part of the budget, but we knew it would be expensive since we had
to drill many wells.
W a t e r f l o w s
O n e y e a r u p d a t e
14:01
T h e f i n a l u p d a t e
If you select Sokoto, you will see it is almost 40% over budget already. Sokoto is a rough place with few roads, so it makes sense that it is so
J o u r n e y ’s e n d
expensive for teams to work there. We didn't take that into account.
14:07
27
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Open up a new visual page and create a key indicators visual. Think about what we want to analyse and what could explain the high costs.
d a t a e x p l o r a t i o n j o u r n e y .
Examples could include the town, province, location type, or even the time it takes to complete a project (calculate the time difference with a
U p d a t i n g o u r d a t a
column).
T h e s t a r t o f t h e f i n a l
s t r e t c h
14:14
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
What I could see from the key influencers:
v i s u a l s
• When we have to drill wells, it is expensive. We took this into account in our budget, so this is not the reason for the high costs.
V i s u a l i s i n g t h e c h a n g e
• When sources are in rural areas, costs are higher. We took this into account in our budget, so this is not the reason for the high costs.
C r e a t i n g t h e c a n v a s o f
h o p e
• When jobs take long, costs go up. This has two components if you think about it. One is, that certain jobs take longer. Installing 8 taps at a
I m p r o v i n g l i v e s
location takes much longer than installing a filter. But the second component of why a job can take so long is the time it takes to travel to a
U p g r a d i n g M a j i N d o g o
new location. These travel days can add up a lot over the course of a project, and add costs.
o n e s o u r c e a t a t i m e
14:18
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
Create a new visuals page and make several charts examining the effect on the average cost of an improvement and try to show the following
results:
W a t e r f l o w s
O n e y e a r u p d a t e • It is almost twice as expensive to improve a source in a rural area, compared to an urban area.
• Sokoto has a very high average cost of improvement, both rurally and in urban areas.
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
• We are over budget in every province.
14:22
28
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
While this data is useful to know, we can't do anything about it. Rural areas need larger vehicles that use more fuel. Sources are far apart, and
d a t a e x p l o r a t i o n j o u r n e y .
there are many of them. But we can't change that. So let's focus on finding a change we can make to make sure we stay on budget.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l 14:30
s t r e t c h
P r i o r i t i z i n g u s e r s
Let's look at the vendors. If we see vendors that are asking too much, we stop using them. Simple!
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
14:37
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f Create a new page showing the average cost vendors' are asking for improvements, and sort the table from most expensive to the cheapest teams.
h o p e
I m p r o v i n g l i v e s
14:44
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
So some teams are way more expensive than others, right? But we need to compare apples to apples. Teams that drill wells will naturally charge
T h e c o s t o f c h a n g e
more than teams installing filters, and we also saw that it also costs more to improve sources in Sokoto and Kilimani, so that's another factor.
W h e r e w i l l t h e m o n e y g o
14:49
W a t e r f l o w s
O n e y e a r u p d a t e Create a slicer for a date, improvement type (aggregated_improvements), and rural/urban split and add our map to this page.
T h e f i n a l u p d a t e
14:52
J o u r n e y ’s e n d
So now we can filter by "Drill well", and compare the prices of the vendors.
14:57
29
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
If you select the most expensive vendor, MBS605, what do you notice? Where are they upgrading sources?
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a 15:02
T h e s t a r t o f t h e f i n a l
s t r e t c h
MBS605 is drilling wells across the rural parts of Sokoto only! So they are working in the harshest conditions. Can we blame them if it costs more?
P r i o r i t i z i n g u s e r s
The four most expensive vendors are working either in Sokoto, or Kilimani.
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
15:09
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f The cheapest four drilling teams are in urban areas and outside of Sokoto, where it is easier to access. So which team is actually expensive, and
h o p e
who isn't?
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
15:15
o n e s o u r c e a t a t i m e
Isn't that beautiful? As people, we often make choices simple for ourselves, but here, the data tells us if we fired the expensive teams, it would
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
have been a mistake.
15:19
W a t e r f l o w s
O n e y e a r u p d a t e
Don't believe me yet? Select all of the teams installing filters, RO and RO + UV, and we're going to look at two vendors, ERI893, the best water
purification installers in the whole of Maji Ndogo, Entebbe RO Installers, and OW290 a "not so good" company called Ouagadougou Waterworks.
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
15:25
Did you notice ERI893 is the most expensive filter installer in Maji Ndogo? They are asking almost 50% more than the cheapest team! "How can
Dalila then say they are the best team in Maji Ndogo?"
15:30
30
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Haha, where did they work?
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a 15:35
T h e s t a r t o f t h e f i n a l
s t r e t c h
Why do I say they're the best team? Well, first, add the count of completed projects to the table. Who finished the most projects? I won't laugh
P r i o r i t i z i n g u s e r s
again.
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
15:40
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f You are still doubting me, right? "Dalila, they are expensive!!"
h o p e
I m p r o v i n g l i v e s
15:45
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
Let's compare Entebbe RO Installers to companies who work in a similar environment. Try this before you go on.
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
15:48
W a t e r f l o w s
Filter the table to only include the data for rural areas and the Sokoto province.
O n e y e a r u p d a t e
15:53
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
Hmm...
15:56
That's right...
16:03 31
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
d a t a e x p l o r a t i o n j o u r n e y .
Entebbe RO Installers is the best team in Maji Ndogo! Look how cheap they are when we compare them to the other teams in the right context.
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l 16:09
s t r e t c h
Now I am being playful, but there is a very hard truth in this exercise. Complex real-world data is difficult to work with! Sometimes we may think
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
we have an answer, but often we are wrong. So we keep exploring the data, and finding the truth! In the next 5 years of your career, this is the skill
v i s u a l s that you will develop and one day, you will sniff around in the data like I did to find this nugget.
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
16:17
h o p e
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e 16:22
T h e c o s t o f c h a n g e
Look at how Entebbe RO Installers (Blue) moved throughout Maji Ndogo, completing jobs, compared to Ouagadougou Waterworks (Orange):
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
ERI893 and OW290 journey
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
16:30
J o u r n e y ’s e n d
Entebbe RO Installers stayed in one place, picking up new projects near them, keeping their travel costs low, while Ouagadougou Waterworks is
moving from town to town, between rural areas travelling a lot between the projects. Perhaps they are not considering that less travel, means they
can start new projects quicker.
16:37
32
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Entebbe RO Installers has made the most out of all the purification teams, not because they charged a lot, but because their choices mean they get
d a t a e x p l o r a t i o n j o u r n e y .
more projects done! Cool right?
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l 16:41
s t r e t c h
P r i o r i t i z i n g u s e r s
So what can we do? Well, I'll get our designers and animators to make a video, and create some digital infographics we can send to the teams,
C r a f t i n g u s e r - f o c u s e d explaining how they can improve, and how to search for jobs closer to them on the system.
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
16:49
C r e a t i n g t h e c a n v a s o f
h o p e
If one team follows our advice, we make a small change, but hopefully all of them take note, and pick jobs that are more optimal. If this worked, we
might even get our budget under control.
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
16:54
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
Last thing. Isn't it amazing that all of this insight is hidden in the data? We could spend another year just learning from it. By being curious and
determined, we can uncover the truth hidden within.
W a t e r f l o w s
O n e y e a r u p d a t e
16:59
We'll check in again once we have more data. Until then, take care!
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
17:06
33
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
3 December 2027
S e t t i n g t h e s t a g e f o r o u r
d a t a e x p l o r a t i o n j o u r n e y .
Hello! Can you believe it has been almost 4 years? It feels like yesterday!
U p d a t i n g o u r d a t a
T h e s t a r t o f t h e f i n a l
s t r e t c h 17:10
P r i o r i t i z i n g u s e r s
Here is the final data:
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e Md_water_services_data.xlsx
C r e a t i n g t h e c a n v a s o f
h o p e
17:13
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
34
D a l i l a L e s e d i
O n l i n e
I n t r o d u c t i o n
S e t t i n g t h e s t a g e f o r o u r
Did it work?
d a t a e x p l o r a t i o n j o u r n e y .
U p d a t i n g o u r d a t a
17:19
T h e s t a r t o f t h e f i n a l
s t r e t c h
P r i o r i t i z i n g u s e r s
C r a f t i n g u s e r - f o c u s e d
v i s u a l s
V i s u a l i s i n g t h e c h a n g e
C r e a t i n g t h e c a n v a s o f
h o p e
I m p r o v i n g l i v e s
U p g r a d i n g M a j i N d o g o
o n e s o u r c e a t a t i m e
T h e c o s t o f c h a n g e
W h e r e w i l l t h e m o n e y g o
W a t e r f l o w s
O n e y e a r u p d a t e
T h e f i n a l u p d a t e
J o u r n e y ’s e n d
35