davidkofodhanna's avatar
davidkofodhanna
Advocate I
1 year ago

Calculation Group for dynamic weeks

"๐—š๐—ถ๐˜ƒ๐—ฒ ๐—บ๐—ฒ ๐—ฎ๐—ป ๐—ฒ๐—ฎ๐˜€๐˜† ๐—ผ๐—ฝ๐˜๐—ถ๐—ผ๐—ป ๐˜๐—ผ ๐˜€๐˜„๐—ถ๐˜๐—ฐ๐—ต ๐Ÿ…ฆ๐Ÿ…”๐Ÿ…”๐Ÿ…š๐Ÿ…ข"

๐Ÿ“… Let's make it userfriendly and with a click of a button - the end user can set predefined date slicers.

All done with ๐—ฐ๐—ฎ๐—น๐—ฐ๐˜‚๐—น๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ด๐—ฟ๐—ผ๐˜‚๐—ฝ๐˜€ ๐˜๐—ผ ๐˜๐—ต๐—ฒ ๐—ฟ๐—ฒ๐˜€๐—ฐ๐˜‚๐—ฒ and with help from the extended date table by Melissa de Korte for some OFFSET columns to assist us with weeks and easier DAX.

Let DAX tell the story...

 

createOrReplace

	table 'Week Date Slicer'

		calculationGroup
			precedence: 2

			calculationItem 'Current Week' = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _Week =
					    MAX('Date'[CurrWeekOffset])
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE (
					            SELECTEDMEASURE (),
					            KEEPFILTERS(
					                'Date'[CurrWeekOffset] = _Week
					            )
					        )
					    )
					RETURN
					    _Result

			calculationItem LW = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _MaxWeek = CALCULATE(MAX('Date'[CurrWeekOffset]), 'Date'[WeekCompleted] = TRUE)
					VAR _Week =
					    MAX('Date'[CurrWeekOffset]) - 1
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE (
					            SELECTEDMEASURE (),
					            KEEPFILTERS(
					                'Date'[CurrWeekOffset] >= _Week && 'Date'[CurrWeekOffset] <= _MaxWeek
					            )
					        )
					    )
					RETURN
					    _Result

			calculationItem L2W = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _MaxWeek = CALCULATE(MAX('Date'[CurrWeekOffset]), 'Date'[WeekCompleted] = TRUE)
					VAR _Week =
					    MAX('Date'[CurrWeekOffset]) - 2
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE (
					            SELECTEDMEASURE (),
					            KEEPFILTERS(
					                'Date'[CurrWeekOffset] >= _Week && 'Date'[CurrWeekOffset] <= _MaxWeek
					            )
					        )
					    )
					RETURN
					    _Result

			calculationItem L4W = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _MaxWeek = CALCULATE(MAX('Date'[CurrWeekOffset]), 'Date'[WeekCompleted] = TRUE)
					VAR _Week =
					    MAX('Date'[CurrWeekOffset]) - 4
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE (
					            SELECTEDMEASURE (),
					            KEEPFILTERS(
					                'Date'[CurrWeekOffset] >= _Week && 'Date'[CurrWeekOffset] <= _MaxWeek
					            )
					        )
					    )
					RETURN
					    _Result

			calculationItem L12W = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _MaxWeek = CALCULATE(MAX('Date'[CurrWeekOffset]), 'Date'[WeekCompleted] = TRUE)
					VAR _Week =
					    MAX('Date'[CurrWeekOffset]) - 12
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE (
					            SELECTEDMEASURE (),
					            KEEPFILTERS(
					                'Date'[CurrWeekOffset] >= _Week && 'Date'[CurrWeekOffset] <= _MaxWeek
					            )
					        )
					    )
					RETURN
					    _Result

			calculationItem All = 

					VAR _Isdatesfiltered =
					    CALCULATE ( ISFILTERED ( 'Date'[Date] ), ALLSELECTED () )
					VAR _Result =
					    IF (
					        _Isdatesfiltered,
					        SELECTEDMEASURE (),
					        CALCULATE ( SELECTEDMEASURE (), REMOVEFILTERS ( 'Date'[Date] ) )
					    )
					RETURN
					    _Result

			calculationItem Custom = 

					VAR __Isdatesfiltered =
					    CALCULATE( ISFILTERED( 'Date'[Date] ), ALLSELECTED( ) )
					VAR __Result =
					    IF(
					        __Isdatesfiltered,
					        SELECTEDMEASURE( ),
					        CALCULATE(
					            SELECTEDMEASURE( ),
					            REMOVEFILTERS( 'Date'[Date] )
					        )
					    )
					RETURN
					    __Result

		measure 'Date period' = MIN('Date'[Date]) & " - " & MAX('Date'[Date])

		measure 'Filter Date Slicer Custom' = IF( SELECTEDVALUE ('Week Date Slicer'[Week Date] ) = "Custom", 1, 0 )
			formatString: 0

		measure 'Title Custom Date Slicer State' = 

				IF(
				    SELECTEDVALUE('Week Date Slicer'[Week Date]) = "Custom",
				    "Choose a custom date range",
				    "Custom selection disabled")

		measure 'Week period' = MIN('Date'[Week & Year]) & " - " & MAX('Date'[Week & Year])

		column 'Week Date'
			dataType: string
			sourceColumn: Namea
			sortByColumn: Ordinal

		column Ordinal
			dataType: int64
			isHidden
			sourceColumn: Ordinal
No RepliesBe the first to reply