Forum Discussion

AnkitaaMishra's avatar
AnkitaaMishra
Icon for Super User rankSuper User
10 months ago
Solved

How to Create a 4-Quadrant (Urgent vs Important) Decision Matrix in Power BI?

Hi everyone,

I’m looking to build a visual in Power BI that shows a 4-quadrant decision matrix based on Urgency and Importance. The quadrants should clearly represent:

  • Not Urgent & Not Important

  • Urgent but Not Important

  • Important but Not Urgent

  • Urgent and Important

    Ideally, the visual should also show how many items fall into each quadrant and help with decision-making or prioritization.

    What’s the best way to visualize this in Power BI?
    Should this be done using a scatter plot with constant lines, custom visuals, or any other recommended approach?

    Any examples or guidance would be appreciated. Thanks!

     
  •  

    Hi AnkitaaMishra , you can try these steps to get the desired results :

    1. Data model

    Your table should have:

    Item_ID
    Item_Name
    Urgency_Score (numeric, e.g., 1–10)
    Importance_Score (numeric, e.g., 1–10)

    2. Create quadrant classification

    DAX 
    Decision Quadrant =
    SWITCH (
        TRUE(),
        [Urgency_Score] >= 5 && [Importance_Score] >= 5, "Urgent & Important",
        [Urgency_Score] >= 5 && [Importance_Score] < 5,  "Urgent but Not Important",
        [Urgency_Score] < 5  && [Importance_Score] >= 5, "Important but Not Urgent",
        "Not Urgent & Not Important"
    )

     

    3. Build the scatter plot

    Field Value

    X-axisUrgency_Score
    Y-axisImportance_Score
    DetailsItem_ID
    LegendDecision Quadrant
    Tooltips

    Item_Name, Owner, Due Date

     

    4. Add quadrant boundaries

    Analytics pane → Constant Lines

    X-axis constant line: 5 (Urgency)

    Y-axis constant line: 5 (Importance)

     

    5. Show counts per quadrant

    KPI Cards

    Items Count = COUNTROWS ( 'Table' )

     

    Add 4 cards, each filtered by:

    Decision Quadrant = <quadrant>

     

    ⭐Hope this solution helps you make the most of Power BI! If it did, click 'Mark as Solution' to help others find the right answers.
    💡Found it helpful? Show some love with kudos 👍 as your support keeps our community thriving!
    🚀Let’s keep building smarter, data-driven solutions together!🚀 [Explore More]

5 Replies

  •  

    Hi AnkitaaMishra , you can try these steps to get the desired results :

    1. Data model

    Your table should have:

    Item_ID
    Item_Name
    Urgency_Score (numeric, e.g., 1–10)
    Importance_Score (numeric, e.g., 1–10)

    2. Create quadrant classification

    DAX 
    Decision Quadrant =
    SWITCH (
        TRUE(),
        [Urgency_Score] >= 5 && [Importance_Score] >= 5, "Urgent & Important",
        [Urgency_Score] >= 5 && [Importance_Score] < 5,  "Urgent but Not Important",
        [Urgency_Score] < 5  && [Importance_Score] >= 5, "Important but Not Urgent",
        "Not Urgent & Not Important"
    )

     

    3. Build the scatter plot

    Field Value

    X-axisUrgency_Score
    Y-axisImportance_Score
    DetailsItem_ID
    LegendDecision Quadrant
    Tooltips

    Item_Name, Owner, Due Date

     

    4. Add quadrant boundaries

    Analytics pane → Constant Lines

    X-axis constant line: 5 (Urgency)

    Y-axis constant line: 5 (Importance)

     

    5. Show counts per quadrant

    KPI Cards

    Items Count = COUNTROWS ( 'Table' )

     

    Add 4 cards, each filtered by:

    Decision Quadrant = <quadrant>

     

    ⭐Hope this solution helps you make the most of Power BI! If it did, click 'Mark as Solution' to help others find the right answers.
    💡Found it helpful? Show some love with kudos 👍 as your support keeps our community thriving!
    🚀Let’s keep building smarter, data-driven solutions together!🚀 [Explore More]

  • AnkitaaMishra 

     

    Use a scatter chart with constant lines.

    Create numeric columns: UrgencyScore, ImportanceScore (e.g. 1–10).

    Scatter visual:

    X‑axis = UrgencyScore

    Y‑axis = ImportanceScore

    Details = Task ID / Name

    Add constant line on X and Y at your threshold (e.g. 5). That creates the 4 quadrants.

     

    If this answer helped, please click Kudos or Accept as Solution.
    -Kedar
    LinkedIn: https://www.linkedin.com/in/kedar-pande

  • v-karpurapud's avatar
    v-karpurapud
    Icon for Community Support rankCommunity Support

    Hi AnkitaaMishra 

    Thank you for reaching out to the Microsoft Fabric community forum.

     

    I would also like to thank you GrowthNatives  and Kedar_Pande for your active participation and for sharing solutions within the community forum. Your contributions are truly valuable.

    I hope the information provided helps resolve your issue. If you have any further questions or need additional assistance, please feel free to contact us. We are always here to help.

     

    Best regards,
    Community Support Team.

  • AnkitaaMishra Hey,
    Few suggested steps

     

    Recommended (native) — Scatter with dynamic quadrant lines

    • Data: make sure Urgency and Importance are numeric measures/columns.
    • Thresholds: create What‑If parameters (or measures) for the split points.


    - XThreshold =
    COALESCE(SELECTEDVALUE('UrgencyThreshold'[UrgencyThreshold Value]),
    MEDIANX(ALLSELECTED(Items), Items[Urgency]))
    - YThreshold =
    COALESCE(SELECTEDVALUE('ImportanceThreshold'[ImportanceThreshold Value]),
    MEDIANX(ALLSELECTED(Items), Items[Importance]))

    • Quadrant label (for tooltip/legend if needed):


    - Quadrant =
    VAR u = MAX(Items[Urgency])
    VAR i = MAX(Items[Importance])
    VAR x = [XThreshold]
    VAR y = [YThreshold]
    RETURN
    SWITCH(TRUE(),
    u <= x && i <= y, "Not Urgent & Not Important",
    u > x && i <= y, "Urgent but Not Important",
    u <= x && i > y, "Important but Not Urgent",
    "Urgent and Important"
    )

    • Counts per quadrant (for cards/tooltip):


    - Q1_NotUrg_NotImp =
    COUNTROWS(FILTER(ALLSELECTED(Items), Items[Urgency] <= [XThreshold] && Items[Importance] <= [YThreshold]))
    - Q2_Urg_NotImp =
    COUNTROWS(FILTER(ALLSELECTED(Items), Items[Urgency] > [XThreshold] && Items[Importance] <= [YThreshold]))
    - Q3_NotUrg_Imp =
    COUNTROWS(FILTER(ALLSELECTED(Items), Items[Urgency] <= [XThreshold] && Items[Importance] > [YThreshold]))
    - Q4_Urg_Imp =
    COUNTROWS(FILTER(ALLSELECTED(Items), Items[Urgency] > [XThreshold] && Items[Importance] > [YThreshold]))

    • Visual setup:


    - Scatter: X = Urgency, Y = Importance, Details = Item ID, Tooltips = Quadrant + counts.
    - Analytics pane: add X and Y constant lines using [XThreshold]/[YThreshold]; show data labels (names) to label axes.
    - Optional: Size by impact, Legend by Quadrant.

    Quadrant shading (optional)

    • Native scatter doesn’t shade quadrants. Use:


    - Deneb (Vega‑Lite) to add two rect backgrounds for quadrant shading, or
    - AppSource custom visuals: “Quadrant Chart by MAQ”, “xViz Quadrant Chart”, “ZoomCharts Advanced Scatter” (built‑in shading, labels, count aggregates).

    Alternative 2×2 grid (counts only)

    • If you just need counts per quadrant, no coordinates:


    - Create the four count measures above.
    - Use a Matrix with a small helper table for Rows = Importance bucket (Important/Not), Columns = Urgency bucket (Urgent/Not), Values = a measure selected via SWITCH(TRUE()) to return the right count (or place four Cards).

    Tips

    • Decide if thresholds are fixed, average, or median; What‑If parameters give users control.
    • Add a tooltip page to show count and examples for each quadrant on hover.
    • Use ALLSELECTED(...) in counts so slicers affect both points and counts consistently.

     


    Thanks

    Haish K 

    If I resolve your issue. Kindly give kudos to this post and accept it as a solution so other can refer this.

  • v-karpurapud's avatar
    v-karpurapud
    Icon for Community Support rankCommunity Support

    Hi AnkitaaMishra 

    We have not received a response from you regarding the query and were following up to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.

     

    Thank You.