Forum Discussion
Continuous Years
Hi Anonymous,
The reason why it shows FY9 for 2009 instead of FY09 is that the Function VALUE()
The FORMAT() you used will return a text type 09, but when the text input VALUE(), it will be translated to a number 9.
Use this dax to create a column named Financial Year:
Financial Year =
VAR A =
IF(
[DATE].[MonthNo] > 8,
FORMAT( DATE( YEAR( [DATE] ) + 1, 1, 1 ), "yy" ),
FORMAT( [DATE], "yy" )
)
RETURN
CONCATENATE( "FY", A )
Going back to your case, you need to calculate the number of years it lasts.
Create a column which is useful for calculations:
Fyear =
IF( MONTH( [DATE] ) > 8, YEAR( [DATE] ) + 1, YEAR( [DATE] ) )
Try this measure to count the number of years of conitiunous donating:
Continuous Years =
VAR _IDGroupTable =
FILTER( ALL( 'Table' ), [ID] = SELECTEDVALUE( 'Table'[ID] ) )
VAR _AConY =
MAXX( _IDGroupTable, [Fyear] ) - MINX( _IDGroupTable, [Fyear] ) + 1
VAR _FConY =
COUNTROWS(
DISTINCT( SUMMARIZE( _IDGroupTable, 'Table'[ID], 'Table'[Fyear] ) )
)
RETURN
IF( _AConY = _FConY, _FConY, BLANK() )
Here is my pbix file ,you can reference.
Best Regards
Community Support Team _ chenwu zhu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
This appears to only look at number of years donating and not continuous. I forgot to mention it is only classed as continuous years by donating every year until the current year.
- PaulDBrown4 years agoCommunity Champion
Can you clarify the criteria? You say "it is only classed as continuous years by donating every year until the current year"
Since you have dates going back to 1970, is it only continuous if there is a record per constituent id every year since 1970 until 2021?
- Anonymous4 years agoNot applicable
Apologies, yes the criteria for continous years can only be for every year up until the year financial year. For instance, someone donating every financial year up until the current year would be 31 years of continuous donating. However, a measure is also needed for years of giving too, so if someone else had donated since 1990 but only donated in 10 seperate years, this would mean their lifetime of giving is 10 years. From the measure given below it does not work all the time, for instance those that have donated for 27 years are showing as blank when using the measure. Can you help with the continous years and lifetime giving measures? I included my report I did not use the fyear measure within it as I had a financial year that was working as appropriate.
VAR _IDGroupTable = FILTER( ALL( 'Table' ), [ID] = SELECTEDVALUE( 'Table'[ID] ) ) VAR _AConY = MAXX( _IDGroupTable, [Fyear] ) - MINX( _IDGroupTable, [Fyear] ) + 1 VAR _FConY = COUNTROWS( DISTINCT( SUMMARIZE( _IDGroupTable, 'Table'[ID], 'Table'[Fyear] ) ) ) RETURN IF( _AConY = _FConY, _FConY, BLANK() )- PaulDBrown4 years agoCommunity Champion
I may be misunderstanding what you are looking for but...
The total number of Fiscal years from 1970 to 2021 is 53 (2 FY years in 1970 & 2 FY years in 2021.
To calculate whether an ID is "Continuous", the count of the IDs FY must equal 53 (none do)
But anyway, here is how:
Create a numerical column for FY in your table using:
To calculate the total number of FY:
Total FY Years = VAR MinY = CALCULATE ( MIN ( 'Gifts (2)'[FY WN] ), ALL ( 'Gifts (2)' ) ) VAR MaxY = CALCULATE ( MAX ( 'Gifts (2)'[FY WN] ), ALL ( 'Gifts (2)' ) ) VAR FY_table = GENERATESERIES ( MinY, MaxY, 1 ) RETURN COUNTROWS ( FY_table )To calculate if an ID is "Continuous":
Continuous Every year = IF(DISTINCTCOUNT('Gifts (2)'[FY WN]) = [Total FY Years], "Continuous")For Lifetime Giving (non continous)
Lifetime Giving = DISTINCTCOUNT('Gifts (2)'[FY WN])If you want to just use a single measure to combine both results
Combined = IF ( DISTINCTCOUNT ( 'Gifts (2)'[FY WN] ) = [Total FY Years], "Continuous", FORMAT ( [Life Giving], "##0" ) )To include the first FY for each ID
Since = "FY" & RIGHT ( CALCULATE ( MIN ( 'Gifts (2)'[FY WN] ), ALLEXCEPT ( 'Gifts (2)', 'Gifts (2)'[constituent_id] ), 'Gifts (2)'[grouped] ), 2 )To calaculate the number of FY without a donation
FY without donation = VAR MinY = CALCULATE ( MIN ( 'Gifts (2)'[FY WN] ), ALLEXCEPT ( 'Gifts (2)', 'Gifts (2)'[constituent_id] ) ) VAR MaxY = CALCULATE ( MAX ( 'Gifts (2)'[FY WN] ), ALLEXCEPT ( 'Gifts (2)', 'Gifts (2)'[constituent_id] ) ) VAR FY_table = GENERATESERIES ( MinY, MaxY, 1 ) RETURN COUNTROWS ( FY_table ) - [Lifetime Giving]I've attached the sample PBIX file