Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
SandoPBI
Frequent Visitor

Forecasted Volume

Hello,

 

I have 2 tables in Power BI 

1 - Actual Loan Volume which has Date and Acutal Loan Volume

2 - Pipeline Amount - Date and Incremental Pipleline Amount

I want a create a table using dax which has Date, Actual loan volume, Pipeline Amount, Forecasted Volume

The forecasted volume should take the lastest actual loan volume and add the pipeline amount. The forecast volume should contiune till the end of the month. Once the month changes, the forecasted amount should take the latest or previous forecasted volume and add the pipeline amount for the new month and continue till the end of the month, this process should continue.

If acutal volume is available the forecated vol should acutal, else it should show forecasted volume

 

Example of Final output should be like this

Date              Actual Vol   Pipeline Vol      Forecasted Vol

05/10/2024    13452        733                   13452

06/10/2024    13819        733                   13819 

07/10/2024                     733                     14552

.                                       733                    14552

.                                       733                    14552

.                                       733                    14552

31/10/2024                      733                   14552

01/11/2024                      133                    14685

02/11/2024                       133                   14685

.                                                                  14685        

.                                                                   14685        

30/11/2024                   133                       14685

01/12/2024                   -11                       14674

02/12/2024                   -11                       14674

.

.

31/12/2024                  -11                        14674

 

 

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi, @SandoPBI 

I am glad to help you.

 

Since you didn't give any specific test data, I created two table data for testing myself:

vfenlingmsft_0-1728460800504.png

 

vfenlingmsft_1-1728460819882.png

 

Then click New table to create a calculated table Forecasted Volume:

vfenlingmsft_2-1728460917284.png

 

Forecasted Volume = 
VAR _vtable =
    SELECTCOLUMNS (
        CALENDAR (
            MIN ( MIN ( 'Actual Loan Volume'[Date] ), MIN ( 'Pipeline Amount'[Date] ) ),
            MAX ( MAX ( 'Actual Loan Volume'[Date] ), MAX ( 'Pipeline Amount'[Date] ) )
        ),
        "_Date", [Date]
    )
RETURN
    ADDCOLUMNS (
        _vtable,
        "Actual Vol",
            MAXX (
                FILTER ( 'Actual Loan Volume', 'Actual Loan Volume'[Date] = [_Date] ),
                [Actual Loan Volume]
            ),
        "Pipeline Vol",
            MAXX (
                FILTER ( 'Pipeline Amount', 'Pipeline Amount'[Date] = [_Date] ),
                'Pipeline Amount'[Incremental Pipeline Amount]
            )
    )

 

Finally, create a calculated column Forecasted Vol in table Forecasted Volume:

vfenlingmsft_3-1728461019862.png

 

Forecasted Vol = 
	VAR _previousdate = CALCULATE(
		MAX('Forecasted Volume'[_Date]),
		FILTER(
			ALLSELECTED('Forecasted Volume'),
			'Forecasted Volume'[_Date] < EARLIER('Forecasted Volume'[_Date]) && 'Forecasted Volume'[Actual Vol] <> BLANK()
		)
	)
	VAR _vtable = SUMMARIZE(
		FILTER(
			SELECTCOLUMNS(
				'Forecasted Volume',
				[Pipeline Vol],
				"Y", YEAR([_Date]),
				"M", MONTH([_Date]),
				"_Actual Vol", MAXX(
					FILTER(
						'Forecasted Volume',
						YEAR('Forecasted Volume'[_Date]) = YEAR(EARLIER('Forecasted Volume'[_Date])) && MONTH('Forecasted Volume'[_Date]) = MONTH(EARLIER('Forecasted Volume'[_Date]))
					),
					'Forecasted Volume'[Actual Vol]
				)
			),
			[Pipeline Vol] <> BLANK()
		),
		[Y],
		[M],
		'Forecasted Volume'[Pipeline Vol],
		[_Actual Vol]
	)
	VAR _previousvalue = CALCULATE(
		MAX('Forecasted Volume'[Actual Vol]),
		FILTER(
			'Forecasted Volume',
			'Forecasted Volume'[_Date] = _previousdate
		)
	)
	VAR _vtable2 = ADDCOLUMNS(
		_vtable,
		"_SUMX", VAR _preDate = MAXX(
			FILTER(
				_vtable,
				[_Actual Vol] <> BLANK()
			),
			DATE([Y], [M], 1)
		)
		RETURN
			SUMX(
				FILTER(
					_vtable,
					[Y] >= YEAR(_preDate) && [M] > MONTH(_preDate) && [M] <= EARLIER([M])
				),
				[Pipeline Vol]
			)
	)
	RETURN
		IF(
			'Forecasted Volume'[Actual Vol] <> BLANK(),
			'Forecasted Volume'[Actual Vol],
			IF(
				MONTH('Forecasted Volume'[_Date]) = MONTH(_previousdate),
				_previousvalue,
				_previousvalue + SUMX(
					FILTER(
						_vtable2,
						YEAR('Forecasted Volume'[_Date]) = [Y] && MONTH('Forecasted Volume'[_Date]) = [M]
					),
					[_SUMX]
				)
			)
		)

 

vfenlingmsft_4-1728461064233.png

 

I have attached the pbix file for this example below, I hope it helps!

 

 

I hope my suggestions give you good ideas, if you have any more questions, please clarify in a follow-up reply.
Best Regards,
Fen Ling,
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

4 REPLIES 4
Anonymous
Not applicable

Hi, @SandoPBI 

I am glad to help you.

 

Since you didn't give any specific test data, I created two table data for testing myself:

vfenlingmsft_0-1728460800504.png

 

vfenlingmsft_1-1728460819882.png

 

Then click New table to create a calculated table Forecasted Volume:

vfenlingmsft_2-1728460917284.png

 

Forecasted Volume = 
VAR _vtable =
    SELECTCOLUMNS (
        CALENDAR (
            MIN ( MIN ( 'Actual Loan Volume'[Date] ), MIN ( 'Pipeline Amount'[Date] ) ),
            MAX ( MAX ( 'Actual Loan Volume'[Date] ), MAX ( 'Pipeline Amount'[Date] ) )
        ),
        "_Date", [Date]
    )
RETURN
    ADDCOLUMNS (
        _vtable,
        "Actual Vol",
            MAXX (
                FILTER ( 'Actual Loan Volume', 'Actual Loan Volume'[Date] = [_Date] ),
                [Actual Loan Volume]
            ),
        "Pipeline Vol",
            MAXX (
                FILTER ( 'Pipeline Amount', 'Pipeline Amount'[Date] = [_Date] ),
                'Pipeline Amount'[Incremental Pipeline Amount]
            )
    )

 

Finally, create a calculated column Forecasted Vol in table Forecasted Volume:

vfenlingmsft_3-1728461019862.png

 

Forecasted Vol = 
	VAR _previousdate = CALCULATE(
		MAX('Forecasted Volume'[_Date]),
		FILTER(
			ALLSELECTED('Forecasted Volume'),
			'Forecasted Volume'[_Date] < EARLIER('Forecasted Volume'[_Date]) && 'Forecasted Volume'[Actual Vol] <> BLANK()
		)
	)
	VAR _vtable = SUMMARIZE(
		FILTER(
			SELECTCOLUMNS(
				'Forecasted Volume',
				[Pipeline Vol],
				"Y", YEAR([_Date]),
				"M", MONTH([_Date]),
				"_Actual Vol", MAXX(
					FILTER(
						'Forecasted Volume',
						YEAR('Forecasted Volume'[_Date]) = YEAR(EARLIER('Forecasted Volume'[_Date])) && MONTH('Forecasted Volume'[_Date]) = MONTH(EARLIER('Forecasted Volume'[_Date]))
					),
					'Forecasted Volume'[Actual Vol]
				)
			),
			[Pipeline Vol] <> BLANK()
		),
		[Y],
		[M],
		'Forecasted Volume'[Pipeline Vol],
		[_Actual Vol]
	)
	VAR _previousvalue = CALCULATE(
		MAX('Forecasted Volume'[Actual Vol]),
		FILTER(
			'Forecasted Volume',
			'Forecasted Volume'[_Date] = _previousdate
		)
	)
	VAR _vtable2 = ADDCOLUMNS(
		_vtable,
		"_SUMX", VAR _preDate = MAXX(
			FILTER(
				_vtable,
				[_Actual Vol] <> BLANK()
			),
			DATE([Y], [M], 1)
		)
		RETURN
			SUMX(
				FILTER(
					_vtable,
					[Y] >= YEAR(_preDate) && [M] > MONTH(_preDate) && [M] <= EARLIER([M])
				),
				[Pipeline Vol]
			)
	)
	RETURN
		IF(
			'Forecasted Volume'[Actual Vol] <> BLANK(),
			'Forecasted Volume'[Actual Vol],
			IF(
				MONTH('Forecasted Volume'[_Date]) = MONTH(_previousdate),
				_previousvalue,
				_previousvalue + SUMX(
					FILTER(
						_vtable2,
						YEAR('Forecasted Volume'[_Date]) = [Y] && MONTH('Forecasted Volume'[_Date]) = [M]
					),
					[_SUMX]
				)
			)
		)

 

vfenlingmsft_4-1728461064233.png

 

I have attached the pbix file for this example below, I hope it helps!

 

 

I hope my suggestions give you good ideas, if you have any more questions, please clarify in a follow-up reply.
Best Regards,
Fen Ling,
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Thank you so much for the solution @Anonymous , sorry i didn't check the forum earlier. 

Cant thank you enough for the solution 🙏🏻

Hi Fen,

The solution is working but needs a little bit of a tweak in terms of logic i tried to explain, may be it was clear earlier. From the output table (last table screenshot) for the date 10/09/2024 there is an Actual volume of 14500, pipeline amount of 733 and hence the forecasted vol is 14500 as the actual volume is available. However the next row where date is 10/10/2024 Actual volume is blank or zero, pipeline amount is 733, hence the forecated amount should be 14500 +733 = 15233. This amount should continue in the forecasted column till 31/10/2024. On 01/11/2024 Acutal amount is zero, pipeline amount is 133, hence the forecasted amount should be 15233+133 = 15366. This amount will continue till 30/11/2024. On 01/12/2024 Actual amount is zero, pipeline amount is -11, hence the forecasted amount should be 15366-11 = 15355

 

Hope I am clear now. 

Hi Fen,

Awaiting your reply on the logic that needs a bit a tweak as explained in the earlier reply.

 

Regards,

SandoPBI

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.