davidkofodhanna
1 year agoAdvocate I
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: OrdinalNo RepliesBe the first to reply