<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GAURANGSURTE</title>
    <description>The latest articles on DEV Community by GAURANGSURTE (@gaurangsurte).</description>
    <link>https://dev.to/gaurangsurte</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F733185%2F6b8466af-f968-41b6-8451-2293157a618e.png</url>
      <title>DEV Community: GAURANGSURTE</title>
      <link>https://dev.to/gaurangsurte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gaurangsurte"/>
    <language>en</language>
    <item>
      <title>From Raw Sales to KPIs: DAX, DAX Studio and a Power BI Dashboard on Adventure Works</title>
      <dc:creator>GAURANGSURTE</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:04:42 +0000</pubDate>
      <link>https://dev.to/gaurangsurte/from-raw-sales-to-kpis-daxdax-studio-and-a-power-bidashboard-on-adventure-works-c0k</link>
      <guid>https://dev.to/gaurangsurte/from-raw-sales-to-kpis-daxdax-studio-and-a-power-bidashboard-on-adventure-works-c0k</guid>
      <description>&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;br&gt;
Adventure Works sold $24.91M of goods between January 2020 and June 2022 and kept&lt;br&gt;
$10.46M of it as profit, a margin of 42.0%. Bikes bring in 95% of sales, Australia is the&lt;br&gt;
biggest single region, and December is the strongest month every year. The rest of this post&lt;br&gt;
shows how I built every number with DAX, checked it in a query editor, and put it on a&lt;br&gt;
dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aim&lt;/strong&gt;: To design KPIs and custom DAX calculations on the Adventure Works dataset, validate them&lt;br&gt;
with DAX Studio, and present them in an interactive Power BI dashboard with KPI cards, at&lt;br&gt;
least four visuals and slicers for year, product category and region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A quick DAX primer&lt;/strong&gt;&lt;br&gt;
A calculated column is worked out row by row when the data loads and takes up space in&lt;br&gt;
the model. A measure is worked out when a visual asks for it, using whatever filters that&lt;br&gt;
visual applies. Almost every KPI should be a measure.&lt;br&gt;
Two ideas explain most of DAX. Row context means “this one row”, which is what SUMX uses&lt;br&gt;
when it multiplies quantity by price line by line. Filter context means “the rows the visual lets&lt;br&gt;
through”, such as one year or one region. CALCULATE changes the filter context, which is why&lt;br&gt;
it sits behind most of the interesting measures below.&lt;br&gt;
DAX Studio is a separate tool that connects to the open Power BI model. You write a DAX&lt;br&gt;
query, run it, and see the result as a table, which makes it a good place to test a measure&lt;br&gt;
before trusting a card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The data&lt;/strong&gt;&lt;br&gt;
The dataset arrives as a set of CSV files that together describe a bicycle company: three&lt;br&gt;
sales files (one per year), lookup tables for products, categories, subcategories, customers&lt;br&gt;
and territories, and a returns table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22kuwmjzubm9hs0j4vzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22kuwmjzubm9hs0j4vzo.png" alt=" " width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The relationships are simple one-to-many links from each lookup table into Sales :&lt;br&gt;
Products[ProductKey] , Territories[SalesTerritoryKey] , Customers[CustomerKey] and&lt;br&gt;
Calendar[Date] to Sales[OrderDate] . Subcategories link to Products and Categories link to&lt;br&gt;
Subcategories. The three sales files are appended into one Sales table in Power Query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cleaning checks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The combined sales table has 56,046 rows with no blank cells and no duplicate rows.&lt;/li&gt;
&lt;li&gt;Every ProductKey and TerritoryKey in Sales finds a match in its lookup table, so nothing drops out of a relationship.&lt;/li&gt;
&lt;li&gt;The customer file is not UTF-8, so I loaded it with the Western European encoding to keep names with accents intact.&lt;/li&gt;
&lt;li&gt;The Sales data stops on 30 June 2022, so 2022 is only a half year. I keep that in mind whenever I compare years.&lt;/li&gt;
&lt;li&gt;The Components category exists in the lookup table but has no sales, so it never shows up in the charts.
The calendar file has only a Date column, so I added four calculated columns to give the&lt;/li&gt;
&lt;li&gt;slicers and the monthly axis something to use. The table is marked as the date table, which the time functions need.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdgvh1mgy0tryc8wlwjq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdgvh1mgy0tryc8wlwjq3.png" alt=" " width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: The ten KPI measures&lt;/strong&gt;&lt;br&gt;
The data has no sales amount column, so Sales is worked out as quantity times the product price, row by row. RELATED pulls the price from the Products table into each sales row. Cost works the same way, and everything else builds on those two.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbgpopc26iwhhs4jfzzsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbgpopc26iwhhs4jfzzsu.png" alt=" " width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two choices worth stating. Average Sales is the average value of one order line ($444.54),&lt;br&gt;
while Average Order Value is total sales divided by the number of distinct orders ($990.09),&lt;br&gt;
because one order can hold several lines. Average Product Price averages the price list of all 293 products, not the prices of what actually sold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Seventeen more measures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The brief asks for at least twenty measures. These seventeen take the total to twenty-seven.&lt;br&gt;
They cover returns, share of total, filtered totals, ranking and the time-based set used in the next step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fucotyyusalt4nfnbb74x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fucotyyusalt4nfnbb74x.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqfsfwdxiv88apbuq2g0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqfsfwdxiv88apbuq2g0i.png" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The functions the brief asked for all appear: SUM , AVERAGE , COUNT , DISTINCTCOUNT, CALCULATE, DIVIDE, FILTER and RANKX . I used DIVIDE instead of the / operator&lt;br&gt;
everywhere, since it returns blank instead of an error when the denominator is zero. That matters for the first month of data, which has no previous month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Time-based analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Four measures make up the month-over-month view. Monthly Sales is the sales in the month on the axis. Previous Month Sales shifts the date filter back one month with PREVIOUSMONTH .&lt;br&gt;
Sales Variance is the difference, and Sales Growth % is that difference as a share of the previous month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxckqn7nafsd1dh2lfg3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxckqn7nafsd1dh2lfg3z.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvgi8hiusyelsa0nkeg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvgi8hiusyelsa0nkeg4.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Monthly sales against the previous month. Sales stayed near $0.5M a month through mid-2021, then climbed to $1.83M in June 2022.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs44vrmr5qjabfv30xjq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs44vrmr5qjabfv30xjq7.png" alt=" " width="799" height="338"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sales growth % by month. Blue is growth, orange is decline. The same pattern repeats: a big jump in December and a drop in January.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Checking everything in DAX Studio&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Power BI file, then open DAX Studio and choose PBI / SSDT Model to connect to it.&lt;/li&gt;
&lt;li&gt;In the left pane, confirm the eight tables and the measures from steps 1 to 3 are listed.&lt;/li&gt;
&lt;li&gt;Write one query that returns all ten KPIs in a single row using EVALUATE ROW(...) .&lt;/li&gt;
&lt;li&gt;Run it with F5 and compare each value with the matching card in Power BI.&lt;/li&gt;
&lt;li&gt;Run a second query with SUMMARIZECOLUMNS to get monthly sales, previous month, variance
and growth, and compare it with the table above.&lt;/li&gt;
&lt;li&gt;To look at performance, switch on Server Timings, run the query again, and see how the time splits between the Storage Engine and the Formula Engine. &lt;/li&gt;
&lt;li&gt;A measure that needs a lot of Formula Engine time is the first place to simplify.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ferw241nlcu7vhf79tmqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ferw241nlcu7vhf79tmqc.png" alt=" " width="735" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70on02nhloxegxzychla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70on02nhloxegxzychla.png" alt=" " width="799" height="404"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Screenshot 1: steps performed. The query that returns the ten KPI measures, with the model tables and measures in the left pane and the result grid below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: The Power BI dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layout&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Top row&lt;/strong&gt;: KPI cards for Total Sales, Total Profit, Total Orders, Total Customers and Profit Margin %.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slicers down the side&lt;/strong&gt;: Year (from Calendar[Year] ), Product Category and Region.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend&lt;/strong&gt;: line chart with Month Year on the axis and Monthly Sales and Previous Month Sales as values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparison&lt;/strong&gt;: a column chart of Total Sales by category, a bar chart of Total Sales by region, and a bar chart of the top 10 products by Total Sales (a Top N filter on ProductName ).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How I built it&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load the CSV files from a folder, append the three Sales files, and set column types in Power Query.&lt;/li&gt;
&lt;li&gt;Create the relationships in Model view and mark Calendar as the date table.&lt;/li&gt;
&lt;li&gt;Add the calculated columns to Calendar, then write the measures from steps 1 to 3 in a dedicated measures table.&lt;/li&gt;
&lt;li&gt;Insert one Card visual per KPI and format the numbers: currency for money, whole numbers for counts, two decimals for percentages.&lt;/li&gt;
&lt;li&gt;Add the line, column and bar charts, then three slicers. Slicers filter every visual on the page at once.&lt;/li&gt;
&lt;li&gt;Keep one colour theme: a single accent for the main metric, grey for comparison series, and the same font throughout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mnu7pk9n1exk4burgw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mnu7pk9n1exk4burgw2.png" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Screenshot 2: output through cards. The ten KPI measures as cards with no slicer applied. They match the DAX Studio result exactly.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers say
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Sales stepped up in mid-2021, and 2022 is on track to be the biggest year&lt;/strong&gt;&lt;br&gt;
Sales were $6.40M in 2020 and $9.32M in 2021, an increase of 46%. The half year of 2022 already reached $9.19M, almost the whole of 2021. Comparing the same six months, January to June 2022 is 211% higher than January to June 2021 ($9.19M against $2.95M).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp2581m64nzosbrnaf4ct.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp2581m64nzosbrnaf4ct.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sales and profit by year. 2022 covers January to June only.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bikes are the revenue, accessories are the margin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bikes produce 94.9% of sales ($23.64M) at a 41.1% margin. Accessories are 69% of all units sold but only 3.6% of sales, and they earn the highest margin at 62.8%. Clothing is the smallest category at $0.37M. Accessories and clothing first appear in the data in July 2021, so they only explain a small part of the growth since then. Most of it comes from bikes: bike sales in the second half of 2021 were nearly double those of the first half.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F00k6ojawvkstutywv28h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F00k6ojawvkstutywv28h.png" alt=" " width="798" height="251"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sales and profit margin by category.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Top-selling products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All six Mountain-200 variants sit at the top of the revenue list and together bring in $7.17M.&lt;br&gt;
The Mountain-200 Black, 46 is the number one product at $1.24M. By units it is a different list: the 30 oz water bottle leads with 7,967 units, followed by the patch kit and the mountain tyre tube. Cheap accessories give volume, expensive bikes give revenue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs7bqui792nvo6qja1j7w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs7bqui792nvo6qja1j7w.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Top 10 products by sales&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Australia leads, and two US regions carry the United States&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Australia is the largest region with $7.42M, which is 29.8% of sales. The Southwest ($4.82M) and Northwest ($3.10M) are next, and together they make up almost all US sales. The Central, Northeast and Southeast US regions are almost empty, each under $12K. Canada, France and Germany are mid-sized, and the United Kingdom is the strongest European region.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnsglj3aimfp78zvmtj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnsglj3aimfp78zvmtj6.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sales by region&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Seasonality, order value and returns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;December is the peak&lt;/strong&gt;: sales rose 73% over November in 2020 and 44% in 2021. January then fell 23% and 22%.&lt;br&gt;
&lt;strong&gt;Average order value fell **from $2,435 in 2020 to $872 in 2021 and $776 in 2022. Orders more than quadrupled once accessories and clothing arrived, and those orders are small.&lt;br&gt;
**Profitability is steady&lt;/strong&gt;: the margin was 40.6% in 2020, 42.5% in 2021 and 42.3% in 2022.&lt;br&gt;
&lt;strong&gt;Returns are low&lt;/strong&gt;: 1,828 units came back, which is 2.17% of units sold.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do next
&lt;/h2&gt;

&lt;p&gt;Stock up and promote ahead of December, and plan for the January dip instead of being surprised by it.&lt;br&gt;
Push accessories alongside bike orders. Their margin is 22 points higher than bikes and they already sell in volume.&lt;br&gt;
Look into why the Central, Northeast and Southeast US regions sell almost nothing, since the product clearly sells in the Southwest and Northwest.&lt;br&gt;
Review jersey pricing or cost, as their margin is well below everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Writing the measures taught me that most of the work in a KPI dashboard is deciding what each number means. Sales had to be built from quantity and price, an order and an order line are not the same thing, and a growth percentage on a half year is easy to misread. &lt;br&gt;
Checking the same values in DAX Studio and on the cards made me trust them. The result is a set of 27 measures, a dashboard that answers the six questions in the brief, and a clear picture of a business that grows fast, depends on bikes, and peaks every December.&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>dev</category>
      <category>analytics</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Power Query Deep Dive — Transforming &amp; Analyzing the AdventureWorks</title>
      <dc:creator>GAURANGSURTE</dc:creator>
      <pubDate>Fri, 21 Aug 2026 06:44:50 +0000</pubDate>
      <link>https://dev.to/gaurangsurte/power-query-deep-dive-transforming-analyzing-the-adventureworks-34k2</link>
      <guid>https://dev.to/gaurangsurte/power-query-deep-dive-transforming-analyzing-the-adventureworks-34k2</guid>
      <description>&lt;h1&gt;
  
  
  Power Query Deep Dive: Transforming &amp;amp; Analyzing the AdventureWorks Sales Dataset in Power BI
&lt;/h1&gt;

&lt;p&gt;If you've ever wondered how a pile of raw CSV exports turns into a clean, business-ready Power BI dashboard, this post walks through exactly that — using Power Query's four core transformation techniques (&lt;strong&gt;Grouping, Pivoting/Unpivoting, Appending, and Merging&lt;/strong&gt;) on the classic &lt;strong&gt;AdventureWorks&lt;/strong&gt; retail dataset, then layering on DAX measures and a full sales-analysis report.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe74d3qqbkaz2saifdjkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe74d3qqbkaz2saifdjkl.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The dataset
&lt;/h2&gt;

&lt;p&gt;AdventureWorks is a sample dataset for a fictional bicycle manufacturer: Internet Sales order lines joined to Product, Subcategory, Category, Customer, and Territory lookup tables — a textbook star schema with one fact table and several dimension tables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Grouping
&lt;/h2&gt;

&lt;p&gt;Grouping collapses transaction-level rows into summarized metrics. A few of the groupings I built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Category → Sum of Sales Amount&lt;/strong&gt; — total sales per product category&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer → Average of Sales Amount&lt;/strong&gt; — average spend per customer, plus a Top N filter for the top 10 customers by total sales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subcategory → Sum of Order Quantity&lt;/strong&gt; — units sold per subcategory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Territory → Average of Order Quantity&lt;/strong&gt; — average basket size by region&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer → Count Distinct of Order Number&lt;/strong&gt; — orders placed per customer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category → Max of Sales Amount&lt;/strong&gt; — highest single sale per category&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Territory → Sum of Tax Amount&lt;/strong&gt; — total tax collected per region&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmqre59ci25k59yqovu4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmqre59ci25k59yqovu4j.png" alt=" " width="220" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzlgvmeebfbcgp6zn2rxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzlgvmeebfbcgp6zn2rxm.png" alt=" " width="217" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg130l6dxzilw14rfn5ul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg130l6dxzilw14rfn5ul.png" alt=" " width="218" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6nbq5xlyhrdute9dfwx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6nbq5xlyhrdute9dfwx.png" alt=" " width="217" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb18fnt0is5nod2nmlily.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb18fnt0is5nod2nmlily.png" alt=" " width="217" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe07htykv9q1icptrwhn4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe07htykv9q1icptrwhn4.png" alt=" " width="217" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Pivoting &amp;amp; Unpivoting
&lt;/h2&gt;

&lt;p&gt;To prove the transformation is lossless, I built a small reference table with Category, Sales Amount, Tax Amount, and Order Quantity, then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Unpivoted&lt;/strong&gt; the three numeric columns into a tall &lt;code&gt;Attribute&lt;/code&gt; / &lt;code&gt;Value&lt;/code&gt; layout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renamed&lt;/strong&gt; them to &lt;code&gt;Metric&lt;/code&gt; / &lt;code&gt;Amount&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pivoted&lt;/strong&gt; the &lt;code&gt;Metric&lt;/code&gt; column back on &lt;code&gt;Values = Amount&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The row and column counts matched the original table exactly after the round trip — confirming nothing was lost in translation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Appending
&lt;/h2&gt;

&lt;p&gt;I split Internet Sales into two queries by Order Date/Year (&lt;strong&gt;First Half&lt;/strong&gt; and &lt;strong&gt;Second Half&lt;/strong&gt;) and combined them with &lt;strong&gt;Append Queries → Append as New&lt;/strong&gt;. The resulting row count matched the sum of both halves exactly, with no duplicates or schema mismatches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Merging
&lt;/h2&gt;

&lt;p&gt;This is where the star schema comes together:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Merge &lt;code&gt;FactInternetSales&lt;/code&gt; with &lt;code&gt;DimProduct&lt;/code&gt; on &lt;code&gt;ProductKey&lt;/code&gt; (Left Outer Join) → expand Product Name, Color, Standard Cost&lt;/li&gt;
&lt;li&gt;Merge the result with &lt;code&gt;DimProductSubcategory&lt;/code&gt; → expand Subcategory Name&lt;/li&gt;
&lt;li&gt;Merge again with &lt;code&gt;DimProductCategory&lt;/code&gt; → expand Category Name&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After &lt;code&gt;Close &amp;amp; Apply&lt;/code&gt;, &lt;strong&gt;Manage Relationships&lt;/strong&gt; confirmed every fact-to-dimension link was Active with the correct cardinality.&lt;/p&gt;

&lt;h2&gt;
  
  
  DAX measures
&lt;/h2&gt;

&lt;p&gt;With a clean star schema in place, six measures power the whole report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Sales =
SUMX(
    'Sales Data',
    RELATED('AdventureWorks Product Lookup'[ProductPrice]) *
    'Sales Data'[OrderQuantity]
)

Total Cost =
SUMX(
    'Sales Data',
    RELATED('AdventureWorks Product Lookup'[ProductCost]) *
    'Sales Data'[OrderQuantity]
)

Total Profit = [Total Sales] - [Total Cost]

Total Orders = DISTINCTCOUNT('Sales Data'[OrderNumber])

Total Customers = DISTINCTCOUNT('Sales Data'[CustomerKey])

Total Quantity = SUM('Sales Data'[OrderQuantity])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The results
&lt;/h2&gt;

&lt;p&gt;Once the model was built, the numbers told a clear story:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total Sales&lt;/td&gt;
&lt;td&gt;24.91M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Cost&lt;/td&gt;
&lt;td&gt;14.46M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Profit&lt;/td&gt;
&lt;td&gt;10.46M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Orders&lt;/td&gt;
&lt;td&gt;25,164&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Customers&lt;/td&gt;
&lt;td&gt;17K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Quantity Sold&lt;/td&gt;
&lt;td&gt;84K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few standout findings from the sales analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bikes dominate&lt;/strong&gt; — the category alone drives roughly &lt;strong&gt;95%&lt;/strong&gt; of total revenue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Territory 9 leads by a mile&lt;/strong&gt; — 29.8% of total sales, about 54% ahead of the second-place territory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mountain-200 Black, 46&lt;/strong&gt; is the single highest-selling product/size, at ~1.24M in sales.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales peak in June&lt;/strong&gt; (~3.0M) then fall off a cliff in July (~1.15M) before slowly recovering into December — a pattern that repeats across all three years in the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekday vs weekend basket size is nearly identical&lt;/strong&gt; (~446 vs ~441 average sale), so weekday revenue is simply higher because there are more weekdays, not because people spend more on them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3e3u9nmmvl6hp5bkepu1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3e3u9nmmvl6hp5bkepu1.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F12yl4skjafrjg57d07wh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F12yl4skjafrjg57d07wh.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced tasks
&lt;/h2&gt;

&lt;p&gt;On top of the core analysis, I added a few DAX/Power-Query extras:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ranking&lt;/strong&gt; product categories by total sales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Above-average product detection&lt;/strong&gt; — 39 of 130 products (~30%) sit above the average of ~191,650 in cumulative sales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conditional-Column customer bands&lt;/strong&gt; — Low / Medium / High spending tiers based on the 25th/75th percentile of customer spend (17,343 customers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conditional-Column sales bands&lt;/strong&gt; — Low / Medium / High per order line based on Sales Amount&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru1poa68mfdqnwpuurn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru1poa68mfdqnwpuurn3.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vsduibwvj4fffq7ba2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vsduibwvj4fffq7ba2c.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Grouping, Pivoting/Unpivoting, Appending, and Merging cover almost everything you need to turn messy multi-table exports into a trustworthy star schema — and once that's in place, a handful of DAX measures is enough to power a complete sales dashboard. If you're learning Power BI, working through all four transformations on a real dataset like AdventureWorks (rather than just one) is the fastest way to actually understand &lt;em&gt;why&lt;/em&gt; each one exists.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Territory
&lt;/h1&gt;

&lt;p&gt;The Mountain-200 family dominates the top of the ranking, led by Mountain-200 Black, 46 at roughly 1.24M in total sales the single highest-selling product/size combination in the catalogue. Road-250 and Road-150 variants fill most of the remaining top-20 slots, with Touring-1000 models appearing further down. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe9o396943cq7l3zvz3yb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe9o396943cq7l3zvz3yb.png" alt=" " width="247" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Calendar Sales
&lt;/h1&gt;

&lt;p&gt;Aggregated across the full 2020–2022 date range, monthly sales climb steadily from January (~2.3M) through a June peak (~3.0M), then drop sharply in July (~1.15M) and stay low through Q3 before recovering toward year-end, closing December at roughly 2.2M. This first-half-heavy, third-quarter-dip pattern is consistent across the three years in the underlying data. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3ao2tvvakovka4gs8k9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3ao2tvvakovka4gs8k9.png" alt=" " width="227" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjynowai7fy4ge9r6dig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjynowai7fy4ge9r6dig.png" alt=" " width="225" height="88"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;*Full write-up with all steps and screenshots: see my &lt;a href="https://1drv.ms/w/c/70201b25f03037d4/IQCfxH5eIuXtSKltpP5bKTA2AaY4gLJKsGtUgg4PeX8eFg8?e=HTC7T2" rel="noopener noreferrer"&gt;https://1drv.ms/w/c/70201b25f03037d4/IQCfxH5eIuXtSKltpP5bKTA2AaY4gLJKsGtUgg4PeX8eFg8?e=HTC7T2&lt;/a&gt; *&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>dataanlysis</category>
      <category>dax</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>24 Years of Climate Data, Cleaned and Built a Dashboard and Here is the analysis of What I Found</title>
      <dc:creator>GAURANGSURTE</dc:creator>
      <pubDate>Wed, 15 Jul 2026 20:07:59 +0000</pubDate>
      <link>https://dev.to/gaurangsurte/24-years-of-climate-data-cleaned-and-built-a-dashboard-and-here-is-the-analysis-of-what-i-found-34mn</link>
      <guid>https://dev.to/gaurangsurte/24-years-of-climate-data-cleaned-and-built-a-dashboard-and-here-is-the-analysis-of-what-i-found-34mn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Climate change is no longer a prediction&lt;/strong&gt;;&lt;br&gt;
it's something we experience every year. Rising temperatures, increasing sea levels, extreme weather events, and changing forest cover are all interconnected. While reports and datasets contain enormous amounts of information, understanding the relationship between these indicators becomes much easier through interactive visualizations.&lt;/p&gt;

&lt;p&gt;For this project, I built a Climate Change Dashboard in Power BI that combines multiple environmental indicators into a single analytical view. Instead of focusing on one metric, the dashboard brings together temperature trends, carbon emissions, renewable energy adoption, sea level rise, forest coverage, population, and extreme weather events to help identify patterns across countries and over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why I Built This Dashboard&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Are countries investing more in renewable energy?&lt;/li&gt;
&lt;li&gt;Does higher renewable energy usage always correspond to lower carbon emissions?&lt;/li&gt;
&lt;li&gt;How has average temperature changed over time?&lt;/li&gt;
&lt;li&gt;Which countries experience more extreme weather events?&lt;/li&gt;
&lt;li&gt;Is forest cover changing alongside emissions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The primary challenge:&lt;/strong&gt; involved selecting visualizations capable of representing multiple environmental indicators without overwhelming users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preventing information overload.&lt;/li&gt;
&lt;li&gt;Ensuring readability across multiple countries.&lt;/li&gt;
&lt;li&gt;Balancing analytical depth with dashboard simplicity.&lt;/li&gt;
&lt;li&gt;Data visualization addresses this challenge by presenting multiple variables simultaneously in a structured and interactive format. Rather than displaying numerical values in tables, dashboards enable users to identify trends, compare countries, explore geographical distributions, and investigate the interaction between different environmental factors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built a simple dashboard that contains the all required information and relevance with the components of PowerBI with visualization as the image are the simplest but technical things that humans are mastered to figure and identify patterns from them the current tools such as PowerBI does the same with the low efforts and efficient way&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg6gbplpflzqfvnbgqs4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg6gbplpflzqfvnbgqs4.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Performance Indicators (KPI Cards)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;KPI cards provide an overview of the most important environmental metrics within the dataset.&lt;/p&gt;

&lt;p&gt;The dashboard displays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average Temperature&lt;/li&gt;
&lt;li&gt;Sea Level Rise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These metrics function as summary indicators, allowing users to understand the current state of environmental conditions before exploring detailed visualizations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scatter Plot Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The scatter chart represents one of the most informative visualizations within the dashboard.&lt;/p&gt;

&lt;p&gt;It establishes a relationship between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Renewable Energy Percentage (X-axis)&lt;/li&gt;
&lt;li&gt;CO₂ Emissions per Capita (Y-axis)&lt;/li&gt;
&lt;li&gt;Population (Bubble Size)&lt;/li&gt;
&lt;li&gt;Year (Animation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This visualization enables multidimensional analysis by simultaneously displaying four variables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Line Chart for Temperature Trends&lt;/strong&gt;&lt;br&gt;
Temperature values are visualized using a line chart to represent changes across multiple years.&lt;/p&gt;

&lt;p&gt;Each line corresponds to a country, enabling direct comparison of warming patterns over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filled Map for CO₂ Emissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Geographical visualization is achieved through a filled map representing CO₂ emissions across countries, the map introduces spatial context that cannot be captured using conventional charts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forest Area Comparison&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Forest coverage is displayed using a horizontal bar chart, countries are ranked according to their forest area percentage, allowing users to compare environmental resources efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decomposition Tree&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The decomposition tree is used to analyze Extreme Weather Events through hierarchical exploration.&lt;/p&gt;

&lt;p&gt;Users can progressively drill down by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Country&lt;/li&gt;
&lt;li&gt;Year&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This transforms static reports into an interactive analytical experience.&lt;/p&gt;

&lt;p&gt;Analytical Interpretation: Trend Analysis, Correlation Analysis, Comparative Analysis, Spatial Analysis, Hierarchical Analysis&lt;/p&gt;

&lt;p&gt;The Climate Change Dashboard illustrates how Business Intelligence tools can be applied to environmental datasets to support data-driven analysis. By integrating multiple climate indicators into a single interactive platform, the dashboard enables users to explore relationships, compare countries, investigate trends, and gain a comprehensive understanding of global environmental changes.&lt;/p&gt;

&lt;p&gt;Rather than functioning as a static reporting system, the dashboard promotes exploratory analysis through interactive filtering, hierarchical drill-down, and multidimensional visualization. This approach not only improves accessibility but also enhances the ability to derive actionable insights from complex climate data.&lt;/p&gt;

&lt;p&gt;Ultimately, the project demonstrates that effective dashboard design is not solely about creating visually appealing charts but about selecting appropriate visualizations that communicate information clearly, support analytical thinking, and facilitate informed decision-making.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
