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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
gumis_rulez
Helper I
Helper I

Need help with summarized table

Hi,

 

I am trying to make a new table using dax.

I am almost there but cannot make the last column. The last column should sum the values from total: for current year + previous years. (meaning for 2010, it should sum 2009 and 2010; for 2011 it should sum 2009, 2010, 2011). How I can achieve this:

 

01.JPG

 

The dax formula as follows:

 

All test =
VAR CustomerOrders = ADDCOLUMNS(
    SUMMARIZE(
        Orders,
        Orders[Klient_Nazwa],
        Orders[Data Zamówienia],
        "Year", YEAR(Orders[Data Zamówienia]),
        "TotalSales", SUM(Orders[Sprzedaż]),
        "TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
    ),
    "TotalOrdersByClient",
    CALCULATE(
        SUMX(
            SUMMARIZE(
                Orders,
                Orders[Klient_Nazwa],
                "TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
            ),
            [TotalOrders]
        ),
        ALLEXCEPT(Orders, Orders[Klient_Nazwa])
    ),
    "Segment",
    IF(
        CALCULATE(
            SUMX(
                SUMMARIZE(
                    Orders,
                    Orders[Klient_Nazwa],
                    "TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
                ),
                [TotalOrders]
            ),
            ALLEXCEPT(Orders, Orders[Klient_Nazwa])
        ) <= 'Customer Segmentation 2'[Customer Segmentation 2 Value],
        "New",
        "Returning"
    )
)

VAR CustomerOrdersGrouped =
        GROUPBY(
            FILTER(CustomerOrders, [Segment] = "Returning"),
            [Year],
            "TOTAL", SUMX(CURRENTGROUP(), [TotalSales])
        )

VAR Final =
    ADDCOLUMNS(
        CustomerOrdersGrouped,
        "Cummulative",
        CALCULATE(
            SUMX(CustomerOrdersGrouped, [TOTAL]),
            FILTER(
                CustomerOrdersGrouped,
                [Year] <= EARLIER([Year])
            )
        )
    )

RETURN Final
 
Link to test file: test file 

 

1 ACCEPTED SOLUTION
Jihwan_Kim
Super User
Super User

Hi,

I am not sure about the logic of creating [Total] column in the new table, but please try something like below to have one more column in the new table.

EVALUATE
	VAR CustomerOrders = ADDCOLUMNS(
		SUMMARIZE(
			Orders,
			Orders[Klient_Nazwa],
			Orders[Data Zamówienia],
			"Year", YEAR(Orders[Data Zamówienia]),
			"TotalSales", SUM(Orders[Sprzedaż]),
			"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
		),
		"TotalOrdersByClient", CALCULATE(
			SUMX(
				SUMMARIZE(
					Orders,
					Orders[Klient_Nazwa],
					"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
				),
				[TotalOrders]
			),
			ALLEXCEPT(
				Orders,
				Orders[Klient_Nazwa]
			)
		),
		"Segment", IF(
			CALCULATE(
				SUMX(
					SUMMARIZE(
						Orders,
						Orders[Klient_Nazwa],
						"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
					),
					[TotalOrders]
				),
				ALLEXCEPT(
					Orders,
					Orders[Klient_Nazwa]
				)
			) <= 2,
			"New",
			"Returning"
		)
	)

	VAR CustomerOrdersGrouped = GROUPBY(
		FILTER(
			CustomerOrders,
			[Segment] = "New"
		),
		[Year],
		"TOTAL",
		SUMX(
			CURRENTGROUP(),
			[TotalSales]
		)
	)
	RETURN
		ADDCOLUMNS(
			CustomerOrdersGrouped,
			"Cumulative", SUMX(
				FILTER(
					CustomerOrdersGrouped,
					[Year] <= EARLIER([Year])
				),
				[TOTAL]
			)
		)

If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.


Click here to visit my LinkedIn page

Click here to schedule a short Teams meeting to discuss your question.

View solution in original post

2 REPLIES 2
Jihwan_Kim
Super User
Super User

Hi,

I am not sure about the logic of creating [Total] column in the new table, but please try something like below to have one more column in the new table.

EVALUATE
	VAR CustomerOrders = ADDCOLUMNS(
		SUMMARIZE(
			Orders,
			Orders[Klient_Nazwa],
			Orders[Data Zamówienia],
			"Year", YEAR(Orders[Data Zamówienia]),
			"TotalSales", SUM(Orders[Sprzedaż]),
			"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
		),
		"TotalOrdersByClient", CALCULATE(
			SUMX(
				SUMMARIZE(
					Orders,
					Orders[Klient_Nazwa],
					"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
				),
				[TotalOrders]
			),
			ALLEXCEPT(
				Orders,
				Orders[Klient_Nazwa]
			)
		),
		"Segment", IF(
			CALCULATE(
				SUMX(
					SUMMARIZE(
						Orders,
						Orders[Klient_Nazwa],
						"TotalOrders", DISTINCTCOUNT(Orders[ ID Zamówienia])
					),
					[TotalOrders]
				),
				ALLEXCEPT(
					Orders,
					Orders[Klient_Nazwa]
				)
			) <= 2,
			"New",
			"Returning"
		)
	)

	VAR CustomerOrdersGrouped = GROUPBY(
		FILTER(
			CustomerOrders,
			[Segment] = "New"
		),
		[Year],
		"TOTAL",
		SUMX(
			CURRENTGROUP(),
			[TotalSales]
		)
	)
	RETURN
		ADDCOLUMNS(
			CustomerOrdersGrouped,
			"Cumulative", SUMX(
				FILTER(
					CustomerOrdersGrouped,
					[Year] <= EARLIER([Year])
				),
				[TOTAL]
			)
		)

If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.


Click here to visit my LinkedIn page

Click here to schedule a short Teams meeting to discuss your question.
JamesFR06
Resolver IV
Resolver IV

Hi,

 

Something like this ?

JamesFR06_0-1717448367142.png

I just add this code to your Temp2 :

var temp3= ADDCOLUMNS(temp2,
"@Cumul",
var Activyear=[Year]
var seg=[Segment]

RETURN
SUMX(filter(temp2,[Year]<=Activyear&&[Segment]=seg),[TOTAL])
)
Return
temp3 order by [Segment],[Year]

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.