CIRING CISSE — Finance Performance Actual expressions extracted from the delivered PBIX. TABLE: FinanceData Total Revenue = SUM(FinanceData[Revenue]) TABLE: FinanceData Gross Profit = SUM(FinanceData[GrossProfit]) TABLE: FinanceData Gross Margin % = DIVIDE( [Gross Profit], [Total Revenue], 0 ) TABLE: FinanceData Total Budget = SUM(FinanceData[BudgetRevenue]) TABLE: FinanceData Budget Variance = [Total Revenue] - [Total Budget] TABLE: FinanceData Budget Variance % = DIVIDE( [Budget Variance], [Total Budget], 0 ) TABLE: FinanceData Revenue LY = CALCULATE( [Total Revenue], SAMEPERIODLASTYEAR(DateTable[Date]) ) TABLE: FinanceData YoY Growth % = DIVIDE( [Total Revenue] - [Revenue LY], [Revenue LY], 0 ) TABLE: FinanceData Vs Budget Display = VAR BudgetVarPct = [Budget Variance %] RETURN IF( ISBLANK(BudgetVarPct), BLANK(), FORMAT( BudgetVarPct, "+0.0%;-0.0%;0.0%" ) ) TABLE: FinanceData Revenue YoY Display = FORMAT( [YoY Growth %], "+0.00%;-0.00%;0.00%" ) TABLE: FinanceData Gross Profit LY = CALCULATE( [Gross Profit], SAMEPERIODLASTYEAR(DateTable[Date]) ) TABLE: FinanceData Gross Profit YoY % = DIVIDE( [Gross Profit] - [Gross Profit LY], [Gross Profit LY], 0 ) TABLE: FinanceData Gross Margin LY = CALCULATE( [Gross Margin %], SAMEPERIODLASTYEAR(DateTable[Date]) ) TABLE: FinanceData Gross Margin vs LY = [Gross Margin %] - [Gross Margin LY] TABLE: FinanceData Net Contribution = SUM(FinanceData[NetContribution]) TABLE: FinanceData Net Contribution LY = CALCULATE( [Net Contribution], SAMEPERIODLASTYEAR(DateTable[Date]) ) TABLE: FinanceData Net Contribution YoY % = DIVIDE( [Net Contribution] - [Net Contribution LY], [Net Contribution LY], 0 ) TABLE: FinanceData Gross Margin vs LY Display = VAR Change = [Gross Margin vs LY] * 100 RETURN FORMAT( Change, "+0.00;-0.00;0.00" ) & " pp" TABLE: FinanceData Months Above Budget = COUNTROWS( FILTER( VALUES(DateTable[Year Month]), [Budget Variance] > 0 ) ) TABLE: FinanceData Months Below Budget = COUNTROWS( FILTER( VALUES(DateTable[Year Month]), [Budget Variance] < 0 ) ) TABLE: FinanceData Top Revenue Product = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Total Revenue], DESC ) RETURN CONCATENATEX( ProductTable, FinanceData[ProductCategory], ", " ) TABLE: FinanceData Top Revenue Product Value = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Total Revenue], DESC ) RETURN CALCULATE( [Total Revenue], KEEPFILTERS(ProductTable) ) TABLE: FinanceData Highest Margin Product = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Gross Margin %], DESC ) RETURN CONCATENATEX( ProductTable, FinanceData[ProductCategory], ", " ) TABLE: FinanceData Highest Product Margin = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Gross Margin %], DESC ) RETURN CALCULATE( [Gross Margin %], KEEPFILTERS(ProductTable) ) TABLE: FinanceData Top Revenue Region = VAR RegionTable = TOPN( 1, VALUES(FinanceData[Region]), [Total Revenue], DESC ) RETURN CONCATENATEX( RegionTable, FinanceData[Region], ", " ) TABLE: FinanceData Top Revenue Region Value = VAR RegionTable = TOPN( 1, VALUES(FinanceData[Region]), [Total Revenue], DESC ) RETURN CALCULATE( [Total Revenue], KEEPFILTERS(RegionTable) ) TABLE: FinanceData Profitability Key Insights = VAR TopProduct = [Top Revenue Product] VAR TopProductRevenue = [Top Revenue Product Value] VAR MarginProduct = [Highest Margin Product] VAR MarginValue = [Highest Product Margin] VAR TopRegion = [Top Revenue Region] VAR TopRegionRevenue = [Top Revenue Region Value] RETURN "REVENUE LEADER" & UNICHAR(10) & TopProduct & " generates " & FORMAT(TopProductRevenue / 1000000, "£0.00") & "M in revenue." & UNICHAR(10) & UNICHAR(10) & "MARGIN LEADER" & UNICHAR(10) & MarginProduct & " delivers the strongest gross margin at " & FORMAT(MarginValue, "0.0%") & "." & UNICHAR(10) & UNICHAR(10) & "TOP REGION" & UNICHAR(10) & TopRegion & " leads regional revenue at " & FORMAT(TopRegionRevenue / 1000000, "£0.00") & "M." TABLE: FinanceData Largest Negative Variance Product = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Budget Variance], ASC ) RETURN CONCATENATEX( ProductTable, FinanceData[ProductCategory], ", " ) TABLE: FinanceData Largest Negative Product Variance = VAR ProductTable = TOPN( 1, VALUES(FinanceData[ProductCategory]), [Budget Variance], ASC ) RETURN CALCULATE( [Budget Variance], KEEPFILTERS(ProductTable) ) TABLE: FinanceData Largest Negative Variance Region = VAR RegionTable = TOPN( 1, VALUES(FinanceData[Region]), [Budget Variance], ASC ) RETURN CONCATENATEX( RegionTable, FinanceData[Region], ", " ) TABLE: FinanceData Largest Negative Region Variance = VAR RegionTable = TOPN( 1, VALUES(FinanceData[Region]), [Budget Variance], ASC ) RETURN CALCULATE( [Budget Variance], KEEPFILTERS(RegionTable) ) TABLE: FinanceData Budget Status = VAR VariancePct = [Budget Variance %] RETURN SWITCH( TRUE(), VariancePct >= 0.05, "SIGNIFICANTLY AHEAD OF PLAN", VariancePct >= 0, "AHEAD OF PLAN", VariancePct >= -0.05, "SLIGHTLY BELOW PLAN", VariancePct >= -0.10, "BELOW PLAN", "SIGNIFICANTLY BELOW PLAN" ) TABLE: FinanceData Budget Key Insights = VAR BudgetStatusText = [Budget Status] VAR VarianceValue = [Budget Variance] VAR VariancePct = [Budget Variance %] VAR WorstProduct = [Largest Negative Variance Product] VAR ProductVariance = [Largest Negative Product Variance] VAR WorstRegion = [Largest Negative Variance Region] VAR RegionVariance = [Largest Negative Region Variance] VAR VarianceText = IF( VarianceValue >= 0, "+" & FORMAT(VarianceValue / 1000, "£0") & "K", FORMAT(VarianceValue / 1000, "£0") & "K" ) RETURN BudgetStatusText & UNICHAR(10) & UNICHAR(10) & "Overall performance is " & VarianceText & " versus budget (" & FORMAT(VariancePct, "+0.0%;-0.0%;0.0%") & ")." & UNICHAR(10) & UNICHAR(10) & "PRODUCT PRESSURE" & UNICHAR(10) & WorstProduct & " has the weakest product variance at " & FORMAT(ProductVariance / 1000, "£0") & "K." & UNICHAR(10) & UNICHAR(10) & "REGIONAL PRESSURE" & UNICHAR(10) & WorstRegion & " has the weakest regional variance at " & FORMAT(RegionVariance / 1000, "£0") & "K." TABLE: FinanceData Executive Financial Summary = VAR RevenueValue = [Total Revenue] VAR GrowthPct = [YoY Growth %] VAR MarginPct = [Gross Margin %] VAR BudgetVariancePct = [Budget Variance %] VAR GrowthText = IF( GrowthPct >= 0, "Revenue is up ", "Revenue is down " ) & FORMAT(ABS(GrowthPct), "0.0%") & " year-on-year" VAR BudgetText = IF( BudgetVariancePct >= 0, " and is currently ahead of budget by ", " and is currently below budget by " ) & FORMAT(ABS(BudgetVariancePct), "0.0%") RETURN GrowthText & BudgetText & ". Gross margin currently stands at " & FORMAT(MarginPct, "0.0%") & "." TABLE: FinanceData Base Forecast Revenue = SUM(FinanceForecast[BaseForecastRevenue]) TABLE: FinanceData Forecast Gross Profit = SUM(FinanceForecast[ForecastGrossProfit]) TABLE: FinanceData Forecast Net Contribution = SUM(FinanceForecast[ForecastNetContribution]) TABLE: FinanceData Forecast Gross Margin % = DIVIDE( [Forecast Gross Profit], [Base Forecast Revenue], 0 ) TABLE: FinanceData Actual YTD Revenue = CALCULATE( [Total Revenue], DateTable[Date] < DATE(2026, 9, 1), DateTable[Date] >= DATE(2026, 3, 1) ) TABLE: FinanceData Actual YTD Gross Profit = CALCULATE( [Gross Profit], DateTable[Date] < DATE(2026, 9, 1), DateTable[Date] >= DATE(2026, 3, 1) ) TABLE: FinanceData FY Revenue Forecast = [Actual YTD Revenue] + [Base Forecast Revenue] TABLE: FinanceData FY Gross Profit Forecast = [Actual YTD Gross Profit] + [Forecast Gross Profit] TABLE: FinanceData FY Forecast Gross Margin % = DIVIDE( [FY Gross Profit Forecast], [FY Revenue Forecast], 0 ) TABLE: FinanceData FY Budget = VAR ActualPeriodBudget = CALCULATE( [Total Budget], DATESBETWEEN( DateTable[Date], DATE(2026, 3, 1), DATE(2026, 8, 31) ) ) VAR ForecastPeriodBudget = CALCULATE( SUM(FinanceForecast[BudgetRevenue]), DATESBETWEEN( DateTable[Date], DATE(2026, 9, 1), DATE(2027, 2, 28) ) ) RETURN ActualPeriodBudget + ForecastPeriodBudget TABLE: FinanceData Forecast vs Budget = [FY Revenue Forecast] - [FY Budget] TABLE: FinanceData Forecast vs Budget % = DIVIDE( [Forecast vs Budget], [FY Budget], 0) TABLE: Forecast Adjustment Forecast Adjustment Value =SELECTEDVALUE('Forecast Adjustment'[Forecast Adjustment], 0) TABLE: FinanceData Scenario Future Revenue = [Base Forecast Revenue] * (1 + [Forecast Adjustment Value]) TABLE: FinanceData Scenario FY Revenue = [Actual YTD Revenue] + [Scenario Future Revenue] TABLE: FinanceData Scenario Future Gross Profit = [Scenario Future Revenue] * [Forecast Gross Margin %] TABLE: FinanceData Scenario FY Gross Profit = [Actual YTD Gross Profit] + [Scenario Future Gross Profit] TABLE: FinanceData Scenario FY Gross Margin % = DIVIDE( [Scenario FY Gross Profit], [Scenario FY Revenue], 0 ) TABLE: FinanceData Scenario vs Budget = [Scenario FY Revenue] - [FY Budget] TABLE: FinanceData Scenario vs Budget % = DIVIDE( [Scenario vs Budget], [FY Budget], 0 ) TABLE: FinanceData Scenario Name = VAR Adjustment = [Forecast Adjustment Value] RETURN SWITCH( TRUE(), Adjustment <= -0.10, "SEVERE DOWNSIDE", Adjustment < 0, "DOWNSIDE", Adjustment = 0, "BASE CASE", Adjustment < 0.10, "UPSIDE", "STRONG UPSIDE" ) TABLE: FinanceData Actual Monthly Revenue = CALCULATE( [Total Revenue], KEEPFILTERS( DateTable[Date] >= DATE(2026, 3, 1) && DateTable[Date] < DATE(2026, 9, 1) ) ) TABLE: FinanceData Monthly Forecast Revenue = VAR ForecastValue = CALCULATE( [Base Forecast Revenue], KEEPFILTERS( DateTable[Date] >= DATE(2026, 9, 1) && DateTable[Date] <= DATE(2027, 2, 28) ) ) VAR AugustActual = CALCULATE( [Total Revenue], KEEPFILTERS( DateTable[Date] >= DATE(2026, 8, 1) && DateTable[Date] < DATE(2026, 9, 1) ) ) VAR FiscalMonth = MAX(DateTable[Fiscal Month Number]) RETURN IF( FiscalMonth = 6, AugustActual, ForecastValue ) TABLE: FinanceData Monthly FY Budget = VAR ActualPeriodBudget = CALCULATE( [Total Budget], KEEPFILTERS( DateTable[Date] >= DATE(2026, 3, 1) && DateTable[Date] < DATE(2026, 9, 1) ) ) VAR FuturePeriodBudget = CALCULATE( SUM(FinanceForecast[BudgetRevenue]), KEEPFILTERS( DateTable[Date] >= DATE(2026, 9, 1) && DateTable[Date] <= DATE(2027, 2, 28) ) ) VAR FiscalMonth = MAX(DateTable[Fiscal Month Number]) RETURN IF( FiscalMonth <= 6, ActualPeriodBudget, FuturePeriodBudget ) TABLE: FinanceData Scenario Revenue Impact = [Scenario FY Revenue] - [FY Revenue Forecast] TABLE: FinanceData Forecast Outlook = VAR ForecastRevenue = [FY Revenue Forecast] VAR BudgetValue = [FY Budget] VAR VarianceValue = [Forecast vs Budget] VAR VariancePct = [Forecast vs Budget %] VAR ScenarioAdjustment = [Forecast Adjustment Value] VAR ScenarioRevenue = [Scenario FY Revenue] VAR ScenarioVariance = [Scenario vs Budget] VAR ScenarioVariancePct = [Scenario vs Budget %] VAR ScenarioLabel = [Scenario Name] VAR BaseStatus = SWITCH( TRUE(), ABS(VariancePct) <= 0.01, "broadly in line with plan", VariancePct > 0.01, "ahead of plan", "below plan" ) VAR ScenarioStatus = SWITCH( TRUE(), ABS(ScenarioVariancePct) <= 0.01, "broadly in line with plan", ScenarioVariancePct > 0.01, "ahead of plan", "below plan" ) VAR AdjustmentDescription = SWITCH( TRUE(), ScenarioAdjustment = 0, "No adjustment to future revenue assumptions", ScenarioAdjustment > 0, FORMAT(ScenarioAdjustment, "0%") & " improvement in future revenue assumptions", FORMAT(ABS(ScenarioAdjustment), "0%") & " reduction in future revenue assumptions" ) RETURN "BASE OUTLOOK" & UNICHAR(10) & "Full-year revenue is forecast at " & FORMAT(ForecastRevenue / 1000000, "£0.00") & "M, " & BaseStatus & " at " & FORMAT(VariancePct, "+0.0%;-0.0%;0.0%") & " versus budget." & UNICHAR(10) & UNICHAR(10) & ScenarioLabel & UNICHAR(10) & AdjustmentDescription & " would result in full-year revenue of " & FORMAT(ScenarioRevenue / 1000000, "£0.00") & "M. This leaves the scenario " & ScenarioStatus & " at " & FORMAT(ScenarioVariancePct, "+0.0%;-0.0%;0.0%") & " versus budget." TABLE: FinanceData Actual Period Budget = CALCULATE( [Total Budget], DateTable[Date] >= DATE(2026, 3, 1), DateTable[Date] < DATE(2026, 9, 1) ) TABLE: FinanceData Future Period Budget = CALCULATE( SUM(FinanceForecast[BudgetRevenue]), DateTable[Date] >= DATE(2026, 9, 1), DateTable[Date] <= DATE(2027, 2, 28) ) CALCULATED TABLE: DateTable = VAR StartDate = MIN(FinanceData[Date]) VAR EndDate = MAX(FinanceForecast[ForecastDate]) RETURN ADDCOLUMNS( CALENDAR(StartDate, EndDate), "Year", YEAR([Date]), "Month", FORMAT([Date], "MMM"), "Month Number", MONTH([Date]), "Year Month", FORMAT([Date], "YYYY-MM"), "Fiscal Year", VAR FYStart = IF( MONTH([Date]) >= 3, YEAR([Date]), YEAR([Date]) - 1 ) RETURN FORMAT(FYStart, "00") & "/" & RIGHT(FORMAT(FYStart + 1, "0000"), 2), "Fiscal Month Number", MOD(MONTH([Date]) - 3, 12) + 1 ) CALCULATED TABLE: Financial Metric ={ ("Total Revenue", NAMEOF('FinanceData'[Total Revenue]), 0), ("Gross Profit", NAMEOF('FinanceData'[Gross Profit]), 1), ("Net Contribution", NAMEOF('FinanceData'[Net Contribution]), 2), ("Gross Margin %", NAMEOF('FinanceData'[Gross Margin %]), 3) } CALCULATED TABLE: DimRegion = DISTINCT( UNION( SELECTCOLUMNS( FinanceData, "Region", FinanceData[Region] ), SELECTCOLUMNS( FinanceForecast, "Region", FinanceForecast[Region] ) ) ) CALCULATED TABLE: DimProduct = DISTINCT( UNION( SELECTCOLUMNS( FinanceData, "ProductCategory", FinanceData[ProductCategory] ), SELECTCOLUMNS( FinanceForecast, "ProductCategory", FinanceForecast[ProductCategory] ) ) ) CALCULATED TABLE: DimDepartment = DISTINCT( UNION( SELECTCOLUMNS( FinanceData, "Department", FinanceData[Department] ), SELECTCOLUMNS( FinanceForecast, "Department", FinanceForecast[Department] ) ) ) CALCULATED TABLE: Forecast Adjustment =GENERATESERIES(-0.2, 0.2, 0.01)