Skip to content

sumanndass/Eisenhower-Matrix-Framework-PowerBI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Eisenhower Matrix Framework PowerBI

The Eisenhower Matrix is a task prioritization framework that helps decision-makers focus on what truly matters instead of reacting to everything.

  • It classifies work using two dimensions:
    • Urgency – How time-sensitive the task is
    • Importance – How much business impact the task has
  • The 4 Quadrants
    • Quadrant Meaning Action
      Urgent + Important Critical tasks Do Now
      Important, Not Urgent Strategic work Plan
      Urgent, Not Important Interruptions Delegate
      Not Urgent, Not Important Low value Remove
  • Business Examples
    • Do Now → Production server down
    • Plan → Employee training roadmap
    • Delegate → Routine reporting emails
    • Remove → Unproductive meetings

📌 Project Overview

  • This project implements an advanced Eisenhower Matrix in Power BI to help organizations prioritize tasks dynamically based on urgency and importance, instead of relying on static rules or scatter plots.
  • Unlike traditional Eisenhower visuals, this solution:
    • Uses What-If thresholds for urgency & importance
    • Avoids scatter-plot legend limitations
    • Implements a 4-quadrant canvas layout
    • Provides actionable KPIs, task tables, and drill-through insights
    • Automatically adapts recommendations as thresholds change
  • The result is a manager-ready prioritization dashboard that answers:
    • What needs immediate action, what should be planned, what can be delegated, and what should be eliminated—right now?

🗂️ Data Source & Structure

  • Source Files
    • Tasks are stored department-wise as separate Excel files.
    • Each file contains similar data but may have inconsistent column names, which are standardized during ingestion.

🔄 Power Query – Data Cleaning & Consolidation

  • 1️⃣ Folder Parameter
    • A parameterized folder path allows plug-and-play scalability:
      #"Folder Path" = "C:\Users\user\Desktop\Dept Wise Task"
      
  • 2️⃣ Combine All Excel Files
    • Key logic:
      • Read all files from folder
        Source = Folder.Files(#"Folder Path")
        
      • Convert binary Excel content into tables
        // convert Binary type of Content column to Table type
        BinaryToTable = Table.TransformColumns(Source, {{"Content", each Excel.Workbook(_)}})
        
      • Extract all sheets
      • Combine into one unified dataset
      • Promote headers
        // select each Table in Content column and select the Data column and convert it Final table with promoting headers
        #"Tbl to actual Table" = Table.TransformColumns(
          BinaryToTable, 
          {
            {
              "Content", 
              (t as table) =>
                let
                  sheet   = Table.SelectRows(t, each [Kind] = "Sheet"), 
                  combine = Table.Combine(sheet[Data]), 
                  promote = Table.PromoteHeaders(combine)
                in
                  promote
            }
          }
        )
        
  • 3️⃣ Column Name Standardization
    • Since departments may use different column headers:
      • All unique column names are extracted
        let
          Source = Value.Metadata(#"Dept Wise Task"), 
          COLNAME = Source[COLNAME], 
          // extracting each table col names
          #"Unique Col Names" = List.Distinct(
            List.Combine(Table.TransformColumns(COLNAME, {{"Content", each Table.ColumnNames(_)}})[Content])
          )
        in
          #"Unique Col Names"
        
      • A rename mapping (NewColName) is applied
        let
            Source = Excel.CurrentWorkbook(){[Name="ColName"]}[Content],
            Custom1 = Table.ToRows(Source)
        in
            Custom1
        
      • Missing columns are ignored safely
        #"Rename Table Cols" = Table.TransformColumns(
            #"Tbl to actual Table", 
            {{"Content", each Table.RenameColumns(_, NewColName, MissingField.Ignore)}}
          )
        
      • This makes the model robust against schema drift.
  • 4️⃣ Final Output Table
    • Unified dataset (Dept_Wise_Task) with clean types:
      #"Select Cols" = Table.SelectColumns(#"Rename Table Cols", {"Content", "Name"}), 
      #"Expanded Content" = Table.ExpandTableColumn(
        #"Select Cols", 
        "Content", 
        {
          "Task ID", 
          "Task Name", 
          "Department", 
          "Owner", 
          "Urgency Score", 
          "Importance Score", 
          "Due Date", 
          "Estimated Hour", 
          "Status", 
          "Task Type", 
          "Created Date"
        }
      ), 
      #"Changed Type" = Table.TransformColumnTypes(
        #"Expanded Content", 
        {
          {"Task ID", type text}, 
          {"Task Name", type text}, 
          {"Department", type text}, 
          {"Owner", type text}, 
          {"Urgency Score", Decimal.Type}, 
          {"Importance Score", Decimal.Type}, 
          {"Due Date", type date}, 
          {"Estimated Hour", Int64.Type}, 
          {"Status", type text}, 
          {"Task Type", type text}, 
          {"Created Date", type date}, 
          {"Name", type text}
        }
      )
        meta [COLNAME = #"Tbl to actual Table"]
      
    • the last meta is for reserver the intermediate data to use in future case, like we had used the same in the unique column extraction.
  • 5️⃣ Final Cleaned Table

📊 Power BI DAX Logic and Visualization

  • Power BI File
  • 🧮 Base Measure
    • Total Estimated Hours
      _Total Estimated Hours = SUM ( Dept_Wise_Task[Estimated Hour] )
      
    • Total Tasks
      _Total Tasks = COUNT ( Dept_Wise_Task[Task ID] )
      
  • 🎚️ Dynamic What-If Parameters
    • Urgency Threshold
      Urgency Threshold = GENERATESERIES(1, 10, 1)
      Urgency Threshold Value = SELECTEDVALUE('Urgency Threshold'[Urgency Threshold], 7)
      
    • Importance Threshold
      Importance Threshold = GENERATESERIES(1, 10, 1)
      Importance Threshold Value = SELECTEDVALUE('Importance Threshold'[Importance Threshold], 7)
      
    • 🔑 These sliders redefine what “urgent” and “important” mean in real time.
  • 🧩 Eisenhower Logic (Core Intelligence)
    • Quadrant Classification\
      _Eisenhower Quadrant = 
      VAR IsUrgent =
          SELECTEDVALUE(Dept_Wise_Task[Urgency Score]) >= 'Urgency Threshold'[Urgency Threshold Value]
      VAR IsImportant =
          SELECTEDVALUE(Dept_Wise_Task[Importance Score]) >= 'Importance Threshold'[Importance Threshold Value]
      RETURN
      SWITCH (
          TRUE(),
          IsUrgent && IsImportant, "Do Now",
          NOT IsUrgent && IsImportant, "Plan",
          IsUrgent && NOT IsImportant, "Delegate",
          NOT IsUrgent && NOT IsImportant, "Eliminate"
      )
      
    • Boolean Flags (Performance-Optimized)
      • Boolean Flags (Performance-Optimized)
        • _Is Do Now
        • _Is Plan
        • _Is Delegate
        • _Is Eliminate
      • These are reused across KPIs, tables, narratives, and drill-throughs.
  • 📊 Main Canvas – 4 Quadrant Layout
    • Why Not Scatter Plot?
      • Scatter charts fail when:
        • Thresholds change dynamically
        • Legends need to reflect quadrant logic
        • Business users need lists, not dots
    • Solution: Quadrant Canvas
      • Each quadrant includes:
        • KPI cards (Task Count & Hours)
        • Task table with conditional formatting
        • Clear action-oriented titles
  • 🔴 DO NOW – Immediate Execution Required
    • High Urgency + High Importance
    • KPIs
      • Tasks requiring immediate attention
      • Total workload (hours)
    • Table Highlights
      • Overdue tasks in red
      • Sorted by Due Date
    • Measure
      _Is Do Now = 
      IF (
          MAX ( Dept_Wise_Task[Urgency Score] ) >= [Urgency Threshold Value]
              && MAX ( Dept_Wise_Task[Importance Score] ) >= [Importance Threshold Value],
          1,
          0
      )
      
      _Do Now Task = 
      CALCULATE(
          [_Total Tasks],
          FILTER(
              Dept_Wise_Task,
              [_Is Do Now] = 1
          )
      )
      
      _Do Now Hours = 
      CALCULATE(
          [_Total Estimated Hours],
          FILTER(
              Dept_Wise_Task,
              [_Is Do Now] = 1
          )
      )
      
  • 🟣 PLAN – Schedule & Protect
    • Low Urgency + High Importance
    • Focus:
      • Strategic tasks
      • Prevent future crises
      • Block calendar time
    • Measure
      _Is Plan = 
      IF (
          MAX ( Dept_Wise_Task[Urgency Score] ) < [Urgency Threshold Value]
              && MAX ( Dept_Wise_Task[Importance Score] ) >= [Importance Threshold Value],
          1,
          0
      )
      
      _Plan Task = 
      CALCULATE(
          [_Total Tasks],
          FILTER(
              Dept_Wise_Task,
              [_Is Plan] = 1
          )
      )
      
      _Plan Hours = 
      CALCULATE(
          [_Total Estimated Hours],
          FILTER(
              Dept_Wise_Task,
              [_Is Plan] = 1
          )
      )
      
  • 🟠 DELEGATE – Assign or Automate
    • High Urgency + Low Importance
    • Focus:
      • Reduce manager workload
      • Automate or reassign
    • Measure
      _Is Delegate = 
      IF (
          MAX ( Dept_Wise_Task[Urgency Score] ) >= [Urgency Threshold Value]
              && MAX ( Dept_Wise_Task[Importance Score] ) < [Importance Threshold Value],
          1,
          0
      )
      
      _Delegate Task = 
      CALCULATE(
          [_Total Tasks],
          FILTER(
              Dept_Wise_Task,
              [_Is Delegate] = 1
          )
      )
      
      _Delegate Hours = 
      CALCULATE(
          [_Total Estimated Hours],
          FILTER(
              Dept_Wise_Task,
              [_Is Delegate] = 1
          )
      )
      
  • ⚫ ELIMINATE – Low Value Work
    • Low Urgency + Low Importance
    • Focus:
      • Stop doing
      • Reduce noise
      • Capacity optimization
    • Measure
      _Is Eliminate = 
      IF (
          MAX ( Dept_Wise_Task[Urgency Score] ) < [Urgency Threshold Value]
              && MAX ( Dept_Wise_Task[Importance Score] ) < [Importance Threshold Value],
          1,
          0
      )
      
      _Eliminate Task = 
      CALCULATE(
          [_Total Tasks],
          FILTER(
              Dept_Wise_Task,
              [_Is Eliminate] = 1
          )
      )
      
      _Eliminate Hours = 
      CALCULATE(
          [_Total Estimated Hours],
          FILTER(
              Dept_Wise_Task,
              [_Is Eliminate] = 1
          )
      )
      
  • 🧠 Executive Narrative (Dynamic Title)
    _Canvas Title = 
    VAR u = 'Urgency Threshold'[Urgency Threshold Value]
    VAR i = 'Importance Threshold'[Importance Threshold Value]
    VAR cnt =
        COUNTROWS (
            FILTER (
                Dept_Wise_Task,
                [_Is Do Now] = 1 && Dept_Wise_Task[Task Type] <> "Completed"
            )
        )
    VAR hrs =
        SUMX (
            FILTER (
                Dept_Wise_Task,
                [_Is Do Now] = 1 && Dept_Wise_Task[Task Type] <> "Completed"
            ),
            [_Do Now Hours]
        )
    VAR dept =
        CONCATENATEX (
            TOPN (
                3,
                ADDCOLUMNS (
                    FILTER (
                        Dept_Wise_Task,
                        [_Is Do Now] = 1 && Dept_Wise_Task[Task Type] <> "Completed"
                    ),
                    "Rank",
                        RANKX (
                            FILTER (
                                Dept_Wise_Task,
                                [_Is Do Now] = 1 && Dept_Wise_Task[Task Type] <> "Completed"
                            ),
                            Dept_Wise_Task[Due Date],
                            ,
                            ASC,
                            DENSE
                        )
                ),
                [Rank], ASC
            ),
            Dept_Wise_Task[Department],
            ", ",
            Dept_Wise_Task[Estimated Hour], DESC
        )
    RETURN
        "At current thresholds (Urgency ≥ " & u & ", Importance ≥ " & i & "), " & cnt & " tasks (" & hrs & " hrs) require immediate action, primarily in " & dept & "."
    
    • This converts raw data into a management-ready insight sentence.
  • 🔎 Drill-Through: Task Intelligence Page
    • Clicking any task opens a decision explainer page.
    • Shown Metrics
      • Days to due / overdue
      • Urgency gap vs threshold
      • Importance gap vs threshold
      • Current quadrant
      • Quadrant explanation
      • Recommended action
    • Example: PLAN Quadrant
      • “Important work that should be scheduled and protected from interruptions.”
    • Example: DO NOW Quadrant
      • “Execute immediately and monitor daily.”
    • This turns the dashboard into a coaching system, not just a report.
  • 🎨 Conditional Formatting & UX
    • Quadrant color logic via DAX
    • Overdue highlighting
    • Clear slicers:
      • Department
      • Owner
      • Status
      • Task Type
    • “Clear all slicers” UX button

📈 Business Value Delivered

  • ✔ Replaces gut-feel prioritization
  • ✔ Makes urgency & importance adjustable
  • ✔ Reveals hidden workload concentration
  • ✔ Encourages elimination of low-value work
  • ✔ Enables delegation conversations
  • ✔ Scales across teams & departments

🚀 What Makes This Project Advanced

  • Dynamic thresholds (rarely implemented correctly)
  • Canvas-based Eisenhower layout
  • Narrative DAX (not just metrics)
  • Drill-through with recommendations
  • Real-world task management use case
  • Production-grade Power Query design

🧩 Possible Enhancements (Next Level)

  • SLA breach prediction
  • Owner capacity scoring
  • Weekly trend movement between quadrants
  • Automation candidate flag
  • Power Automate alerts for “Do Now” overload

🏁 Final Thoughts

  • This is portfolio-grade Power BI work.
  • It demonstrates:
  • Strong DAX modeling
  • Real business thinking
  • UX awareness
  • Storytelling with data

About

An advanced task prioritization framework in Power BI based on the Eisenhower Matrix. Features dynamic "What-If" thresholds for Urgency/Importance, quadrant-based decision logic, and automated executive narratives using DAX.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors