The Head of Marketing wants to identify the top UK YouTubers in 2024 to decide which influencers to partner with for marketing campaigns throughout the year.
Create a dashboard that provides insights into the top UK YouTubers in 2024, including their:
This will enable the marketing team to make informed decisions about which YouTubers to collaborate with for their campaigns.
As the Head of Marketing, I want to use a dashboard that analyzes YouTube channel data in the UK.
This dashboard should allow me to identify the top-performing channels based on metrics such as subscriber base and average views. With this information, I can make better decisions about which YouTubers to collaborate with, thus maximizing the effectiveness of each marketing campaign.
We need data on the top UK YouTubers in 2024, including:
Channel names
Total subscribers
Total views
Total videos uploaded
Where is the data sourced from? The data is sourced from Kaggle, available as an Excel extract. You can find it here.
To determine the necessary components, we need to identify the key questions the dashboard should answer:
These questions may evolve as we progress with the analysis.
Potential data visuals include:
Tool | Purpose |
---|---|
Excel | Exploring the data |
SQL Server | Cleaning, testing, and analyzing the data |
Power BI | Visualizing the data via interactive dashboards |
GitHub | Hosting project documentation and version control |
Mokkup AI | Designing the wireframe/mockup of the dashboard |
This stage involves examining the data for errors, inconsistencies, and any unusual or corrupted characters.
The cleaned data should be structured and ready for analysis. It should meet the following criteria:
Expected schema for the cleaned data:
Column Name | Data Type | Nullable |
---|---|---|
channel_name | VARCHAR | NO |
total_subscribers | INTEGER | NO |
total_views | INTEGER | NO |
total_videos | INTEGER | NO |
/*
# 1. Select the required columns
# 2. Extract the channel name from the 'NOMBRE' column
*/
-- 1.
SELECT
SUBSTRING(NOMBRE, 1, CHARINDEX('@', NOMBRE) -1) AS channel_name, -- 2.
total_subscribers,
total_views,
total_videos
FROM
top_uk_youtubers_2024
/*
# 1. Create a view to store the transformed data
# 2. Cast the extracted channel name as VARCHAR(100)
# 3. Select the required columns from the top_uk_youtubers_2024 SQL table
*/
-- 1.
CREATE VIEW view_uk_youtubers_2024 AS
-- 2.
SELECT
CAST(SUBSTRING(NOMBRE, 1, CHARINDEX('@', NOMBRE) -1) AS VARCHAR(100)) AS channel_name, -- 2.
total_subscribers,
total_views,
total_videos
-- 3.
FROM
top_uk_youtubers_2024
Data quality tests conducted:
/*
# Count the total number of records (or rows) in the SQL view
*/
SELECT
COUNT(*) AS no_of_rows
FROM
view_uk_youtubers_2024;
/*
# Count the total number of columns (or fields) in the SQL view
*/
SELECT
COUNT(*) AS column_count
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'view_uk_youtubers_2024';
/*
# Check the data types of each column in the view by checking the INFORMATION_SCHEMA view
*/
SELECT
COLUMN_NAME,
DATA_TYPE
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'view_uk_youtubers_2024';
/*
# 1. Check for duplicate rows in the view
# 2. Group by the channel name
# 3. Filter for groups with more than one row
*/
SELECT
channel_name,
COUNT(*) AS duplicate_count
FROM
view_uk_youtubers_2024
GROUP BY
channel_name
HAVING
COUNT(*) > 1;
This shows the top UK YouTubers in 2024 so far.
Total Subscribers (M) =
VAR million = 1000000
VAR sumOfSubscribers = SUM(view_uk_youtubers_2024[total_subscribers])
VAR totalSubscribers = DIVIDE(sumOfSubscribers, million)
RETURN totalSubscribers
Total Views (B) =
VAR billion = 1000000000
VAR sumOfTotalViews = SUM(view_uk_youtubers_2024[total_views])
VAR totalViews = ROUND(sumOfTotalViews / billion, 2)
RETURN totalViews
Total Videos =
VAR totalVideos = SUM(view_uk_youtubers_2024[total_videos])
RETURN totalVideos
)
Average Views Per Video (M) =
VAR million = 1000000
VAR totalViews = SUM(view_uk_youtubers_2024[total_views])
VAR totalVideos = SUM(view_uk_youtubers_2024[total_videos])
VAR averageViewsPerVideo = DIVIDE(totalViews, totalVideos)
VAR avgViewsPerVid = ROUND(averageViewsPerVideo / million, 2)
RETURN avgViewsPerVid
Average Views Per Subscriber (M) =
VAR million = 1000000
VAR totalViews = SUM(view_uk_youtubers_2024[total_views])
VAR totalSubscribers = SUM(view_uk_youtubers_2024[total_subscribers])
VAR avgViewsPerSubscriber = DIVIDE(totalViews, totalSubscribers)
VAR avgViewsPerSub = ROUND(avgViewsPerSubscriber / million, 2)
RETURN avgViewsPerSub
Subscriber Engagement Rate (%) =
VAR totalVideos = SUM(view_uk_youtubers_2024[total_videos])
VAR totalSubscribers = SUM(view_uk_youtubers_2024[total_subscribers])
VAR subscriberEngagementRate = DIVIDE(totalSubscribers, totalVideos)
VAR subscriberEngRate = ROUND(subscriberEngagementRate, 2)
RETURN subscriberEngRate
Our goal was to identify the top-performing YouTube channels based on various metrics to provide actionable insights for our marketing client. The key questions we addressed are:
Rank | Channel Name | Subscribers (M) |
---|---|---|
1 | NoCopyrightSounds | 33.60 |
2 | DanTDM | 28.60 |
3 | Dan Rhodes | 26.50 |
4 | Miss Katy | 24.50 |
5 | Mister Max | 24.40 |
6 | KSI | 24.10 |
7 | Jelly | 23.50 |
8 | Dua Lipa | 23.30 |
9 | Sidemen | 21.00 |
10 | Ali-A | 18.90 |
Rank | Channel Name | Videos Uploaded |
---|---|---|
1 | GRM Daily | 14,696 |
2 | Manchester City | 8,248 |
3 | Yogscast | 6,435 |
Rank | Channel Name | Total Views (B) |
---|---|---|
1 | DanTDM | 19.78 |
2 | Dan Rhodes | 18.56 |
3 | Mister Max | 15.97 |
Channel Name | Average Views per Video (M) |
---|---|
Mark Ronson | 32.27 |
Jessie J | 5.97 |
Dua Lipa | 5.76 |
Rank | Channel Name | Views per Subscriber |
---|---|---|
1 | GRM Daily | 1185.79 |
2 | Nickelodeon | 1061.04 |
3 | Disney Junior UK | 1031.97 |
Rank | Channel Name | Subscriber Engagement Rate |
---|---|---|
1 | Mark Ronson | 343,000 |
2 | Jessie J | 110,416.67 |
3 | Dua Lipa | 104,954.95 |
NoCopyrightSounds
DanTDM
Dan Rhodes
Optimal choice from this category: Dan Rhodes
-- 1. Define variables
DECLARE @conversionRate FLOAT = 0.02; -- Conversion rate at 2%
DECLARE @productCost FLOAT = 5.0; -- Product cost at $5
DECLARE @campaignCost FLOAT = 50000.0; -- Campaign cost at $50,000
-- 2. Create a CTE that rounds the average views per video
WITH ChannelData AS (
SELECT
channel_name,
total_views,
total_videos,
ROUND((CAST(total_views AS FLOAT) / total_videos), -4) AS rounded_avg_views_per_video
FROM
youtube_db.dbo.view_uk_youtubers_2024
)
-- 3. Select columns and create calculated columns
SELECT
channel_name,
rounded_avg_views_per_video,
(rounded_avg_views_per_video * @conversionRate) AS potential_units_sold_per_video,
(rounded_avg_views_per_video * @conversionRate * @productCost) AS potential_revenue_per_video,
((rounded_avg_views_per_video * @conversionRate * @productCost) - @campaignCost) AS net_profit
FROM
ChannelData
-- 4. Filter results by YouTube channels
WHERE
channel_name in ('NoCopyrightSounds', 'DanTDM', 'Dan Rhodes')
-- 5. Sort results by net profit in descending order
ORDER BY
net_profit DESC;
GRM Daily
Manchester City
Yogscast
Optimal choice from this category: Yogscast
-- 1. Define variables
DECLARE @conversionRate FLOAT = 0.02; -- Conversion rate at 2%
DECLARE @productCost FLOAT = 5.0; -- Product cost at $5
DECLARE @campaignCostPerVideo FLOAT = 5000.0; -- Campaign cost per video at $5,000
DECLARE @numberOfVideos INT = 11; -- Number of videos (11)
-- 2. Create a CTE that rounds the average views per video
WITH ChannelData AS (
SELECT
channel_name,
total_views,
total_videos,
ROUND((CAST(total_views AS FLOAT) / total_videos), -4) AS rounded_avg_views_per_video
FROM
youtube_db.dbo.view_uk_youtubers_2024
)
-- 3. Select columns and create calculated columns
SELECT
channel_name,
rounded_avg_views_per_video,
(rounded_avg_views_per_video * @conversionRate) AS potential_units_sold_per_video,
(rounded_avg_views_per_video * @conversionRate * @productCost) AS potential_revenue_per_video,
((rounded_avg_views_per_video * @conversionRate * @productCost) - (@campaignCostPerVideo * @numberOfVideos)) AS net_profit
FROM
ChannelData
-- 4. Filter results by YouTube channels
WHERE
channel_name IN ('GRM Daily', 'Manchester City', 'Yogscast')
-- 5. Sort results by net profit in descending order
ORDER BY
net_profit DESC;
Campaign Concept: Influencer Marketing
DanTDM
Dan Rhodes
Mister Max
Optimal choice from this category: Mister Max
-- 1. Define variables
DECLARE @conversionRate FLOAT = 0.02; -- Conversion rate at 2%
DECLARE @productCost FLOAT = 5.0; -- Product cost at $5
DECLARE @campaignCost FLOAT = 130000.0; -- Campaign cost at $130,000
-- 2. Create a CTE that rounds the average views per video
WITH ChannelData AS (
SELECT
channel_name,
total_views,
total_videos,
ROUND((CAST(total_views AS FLOAT) / total_videos), -4) AS rounded_avg_views_per_video
FROM
youtube_db.dbo.view_uk_youtubers_2024
)
-- 3. Select columns and create calculated columns
SELECT
channel_name,
rounded_avg_views_per_video,
(rounded_avg_views_per_video * @conversionRate) AS potential_units_sold_per_video,
(rounded_avg_views_per_video * @conversionRate * @productCost) AS potential_revenue_per_video,
((rounded_avg_views_per_video * @conversionRate * @productCost) - @campaignCost) AS net_profit
FROM
ChannelData
-- 4. Filter results by YouTube channels
WHERE
channel_name IN ('Mister Max', 'DanTDM', 'Dan Rhodes')
-- 5. Sort results by net profit in descending order
ORDER BY
net_profit DESC;
Based on our analysis, partnering with Dan Rhodes for a long-term promotion would be the most effective strategy.