You voted for it — Power BI this week.
I'll be honest: Power BI is harder to explain in a newsletter than SQL or Python. There's no code to paste. It's all clicks, drag and drop, and visuals. But we are going to try, and I think if you follow these steps you will have a working dashboard by the end.
This is tutorial for beginners.
If you have never opened Power BI before — download it first. It's free. Just search "Power BI Desktop download" and install it. It runs on Windows only. Mac users can use the browser version at app.powerbi.com, but honestly, it’s such a pain.
The dataset
We are using the Marketing Campaign Performance dataset from Kaggle.
Download it here: https://www.kaggle.com/datasets/manishabhatt22/marketing-campaign-performance-dataset
Before we proceed, a small ad. Your clicks on ads help me to cover hosting fees.
By the way WisprFlow is an amazing tool that I use myself - it understands various accents and languages, removes Umm, Ahh in your sentences and can understand you even if you whisper, which is convenient when you are in a public places!
Speak messy. Prompt clean.
Go on tangents. Change your mind mid-sentence. Say "um" twelve times. Wispr Flow doesn't care — it takes everything you say, strips the filler, and gives you clean, structured text ready to paste into any AI tool.
The result: prompts with the full context your AI tools need to give you useful answers. Not the abbreviated version you'd type because typing is slow.
Works inside ChatGPT, Claude, Cursor, and every app on your screen. Millions of users worldwide, including teams at OpenAI, Vercel, and Clay.
The dataset covers multiple marketing campaigns across different channels. The columns we will be working with:
Campaign_Type — Email, Social Media, Influencer, Display, Search
Impressions — how many times the ad was seen (we also call it ‘eyeballs’ sometimes)
Clicks — how many people clicked
Conversion_Rate — percentage of people who converted
ROI — return on investment
Engagement_Score — overall engagement metric
Customer_Segment — audience segment (Fashionistas, Foodies, etc.)
Age and Gender — demographic breakdown
The business question: which channels and audience segments are actually delivering results?
If it is hard to view images, you can always find Web version of this newsletter here - https://karina-datascientist.beehiiv.com/
Step 1 — Load your data
Open Power BI Desktop. Select Blank Report

On the home ribbon click Get Data → Text/CSV or Excel Workbook.
Find your downloaded file and click Open.


You will see a preview of your data. It should look clean — no missing values, no obvious errors. Click Load.

On the right side you will now see the Fields panel with all your columns listed. On the left side there are three icons — Report view (the chart icon), Data view (the table icon), and Model view (the diagram icon). You will spend most of your time in Report view.

Before building anything, click the Data view icon and scroll through your data. Get familiar with what you have. This is the Power BI version of df.head() or opening a file in Excel.
Step 2 — Create your first visual — Campaign performance by channel
Go back to Report view. You are now looking at a blank canvas.

Click on the Bar Chart icon in the Visualisations panel on the right. A blank chart placeholder appears on the canvas.
Now drag Campaign_Type into the Y-axis field and ROI into the X-axis field. Power BI will automatically aggregate ROI by averaging it across all rows for each campaign type.

You now have a bar chart showing average ROI by campaign channel. Resize it by dragging the corners.
To make it cleaner: click on the visual, then click the Format visual paintbrush icon in the Visualisations panel.

Here you can change colours, add data labels, adjust the title. Change the title to "Average ROI by Campaign Type."
What you are looking for: which channel delivers the best return? Influencer and Search campaigns tend to come out on top in this dataset.
Step 3 — Add a conversion rate visual
Click on an empty area of the canvas so nothing is selected. Then click the Clustered Column Chart icon.

Drag Campaign_Type to the X-axis and Conversion_Rate to the Y-axis.
Change Sum of Conversion_Rate to Average. Click on the arrow at the field, you will see a drop down where you can make these changes.
We need to make the same adjustment to the previous visual, to change Sum of ROI to Average of ROI

Change title of the visual to "Conversion Rate by Campaign Type."
Now you have two visuals side by side. Already you can start asking: does the channel with the highest ROI also have the highest conversion rate? Or are they telling different stories?
Step 4 — Add a KPI card for total impressions
KPI cards are the big numbers at the top of every dashboard. They give stakeholders a quick summary before they look at anything else.
Click on an empty area of the canvas. In the Visualisations panel find the Card visual (it looks like a rectangle with a number). Click it.

Drag Impressions into the Fields area. Power BI will sum all impressions automatically and display a single big number.

Format it: go to Format visual → Callout value → change the font size to something large and readable. Add a title "Total Impressions."


Create two more cards the same way — one for total Clicks, one for average Conversion_Rate. Line them up across the top of your canvas.
Step 5 — Break down performance by audience segment
Click on empty canvas space. Add a Donut Chart.

Drag Customer_Segment to the Legend field and Engagement_Score (Average) to the Values field.
This shows which audience segment is most engaged. Foodies and Outdoor Adventurers tend to show slightly higher engagement in this dataset — useful for a marketing team deciding where to focus.
Step 6 — Add a slicer to make it interactive
This is where Power BI becomes more powerful than a static Excel chart.
Click on empty canvas space. In the Visualisations panel find the Slicer visual (it looks like a funnel). Click it.

Drag Campaign_Type into the Field area.
You can change Style to Dropdown, Tile or a Vertical list. Here you can also select if you want to allow Multi-select, or users can select only 1 item at a time. Here you also can add select all option (Show “Select all“ is off on the image below)


Now you have a filter on your canvas. Click "Email" in the slicer and watch all your other visuals update automatically to show only email campaign data. Click "Social Media" and everything updates again.
This is the feature that makes stakeholders go "oh, this is useful." One click filters the entire dashboard.
You can add several more slicers, for example for Target_Audience.
Step 7 — Arrange and tidy your dashboard
You now have: 3 KPI cards, 2 bar/column charts, 1 donut chart, 2 slicers.
Arrange them so the KPI cards sit across the top, the charts fill the middle, and the slicers sit on the left or right side. Think about where a stakeholder's eye travels — summary numbers first, detail second.
A few finishing touches:
Add a title text box at the top: Insert → Text Box → type "Marketing Campaign Performance Dashboard"

Click View → check Gridlines and Snap to Grid to align visuals neatly
Right click on the canvas background → Format Page → set a background colour if you want

What you just built
A fully interactive marketing dashboard with KPI cards, channel performance charts, audience breakdowns, and dynamic slicers — all from a CSV file loaded in under 5 minutes.
This is exactly what a marketing analyst would build to present campaign results to a leadership team.
How to turn this into a portfolio project
Follow the same four-part structure as our previous projects:
Overview — what the dataset is, what business question you are answering. A marketing team wants to understand which channels and audience segments deliver the best ROI and engagement.
Approach — what visuals you built and why you chose them. Why a bar chart for ROI, why cards for KPIs, why slicers for interactivity.
Findings — what the dashboard shows. Which channel has the highest ROI? Which audience segment is most engaged? Are there any surprises?
Limitations — what you cannot answer. No time dimension in this dataset so you cannot see trends over time. ROI is a single number per campaign with no cost breakdown. Audience segments appear to be pre-assigned rather than behavioural.
To share it: you can export as PDF (File → Export → Export to PDF) or publish to Power BI Service (free with a work or school email) and share a link.
Keep pushing 💪,
Karina
Grab your freebies if you haven’t done already:
Data Playbook (CV template, Books on Data Analytics and Data Science, Examples of portfolio projects)
Need more help?
Just starting with Python? Wondering if programming is for you?
Master key data analysis tasks like cleaning, filtering, pivot and grouping data using Pandas, and learn how to present your insights visually with Matplotlib with ‘Data Analysis with Python’ masterclass.

Data Analyst & Data Scientist

