<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Streaks! in Quick Measures Gallery</title>
    <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4051984#M1113</link>
    <description>&lt;P&gt;To some extent, a practical implementation of Cthulhu (&lt;A href="https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Cthulhu/m-p/509739#M211" target="_blank" rel="noopener"&gt;Cthulhu - Microsoft Fabric Community&lt;/A&gt;). However, these versions identify the longest streak and current streak, use dates instead of an index and is a much cleaner/better implementation of Cthulhu.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A streak is simply something that has happened continuously, every day for a period of time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Longest Streak Sub-Project = 
    VAR __SubProject = MAX( 'Table'[Sub-projects] )
    VAR __MinDate = 
        MINX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __MaxDate = 
        MAXX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __Table = 
        ADDCOLUMNS(
            CALENDAR( __MinDate, __MaxDate ),
            "__Count", 
                VAR __Date = [Date]
                VAR __Result = 
                    IF( 
                        COUNTROWS( 
                            FILTER( 
                                ALL( 'Table' ), 
                                [Start date] = __Date &amp;amp;&amp;amp; [Sub-projects] = __SubProject 
                            ) 
                        ), 1, 0 
                    )
            RETURN
                __Result
        )
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "Cthulhu", 
                VAR __Index = [Date]
                VAR __Group = [__Count]
                VAR __TmpTable1 = FILTER( __Table, [__Count] = __Group &amp;amp;&amp;amp; [Date] &amp;lt; __Index)
                VAR __TmpTable2 = 
                    ADDCOLUMNS( 
                        __TmpTable1, 
                        "__diff", 
                        ( 
                            [Date] - 
                            MAXX( 
                                FILTER( 
                                    __Table, 
                                    [Date] &amp;lt; EARLIER( [Date] ) &amp;amp;&amp;amp; [__Count] = EARLIER( [__Count] ) 
                                ), 
                                [Date] 
                            ) 
                        ) * 1. 
                    )
                VAR __Max = MAXX( __TmpTable2, [Date])
                VAR __MaxStart = MAXX( FILTER(__TmpTable2, [__diff] &amp;gt; 1), [Date])
                VAR __TmpTable3 = FILTER( __TmpTable2, [Date] &amp;gt;= __MaxStart)
                VAR __Result = 
                    SWITCH( TRUE(),
                        ISBLANK( __Max ), 1, 
                        __Max = __index - 1, COUNTROWS( __TmpTable3 ) + 1, 
                        1
                    )
            RETURN
                __Result
        )
    VAR __Result = MAXX( FILTER( __Table1, [__Count] &amp;lt;&amp;gt; 0 ), [Cthulhu] )
RETURN
    __Result&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Current Streak Sub-Project = 
    VAR __SubProject = MAX( 'Table'[Sub-projects] )
    VAR __MaxDate = MAXX( ALL( 'Table' ), [Start date] )
    VAR __MinDate = 
        MINX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __Table = 
        ADDCOLUMNS(
            CALENDAR( __MinDate, __MaxDate ),
            "__Count", 
                VAR __Date = [Date]
                VAR __Result = 
                    IF( 
                        COUNTROWS( 
                            FILTER( 
                                ALL( 'Table' ), 
                                [Start date] = __Date &amp;amp;&amp;amp; [Sub-projects] = __SubProject 
                            ) 
                        ), 1, 0 
                    )
            RETURN
                __Result
        )
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "Cthulhu", 
                VAR __Index = [Date]
                VAR __Group = [__Count]
                VAR __TmpTable1 = FILTER( __Table, [__Count] = __Group &amp;amp;&amp;amp; [Date] &amp;lt; __Index)
                VAR __TmpTable2 = 
                    ADDCOLUMNS( 
                        __TmpTable1, 
                        "__diff", 
                        ( 
                            [Date] - 
                            MAXX( 
                                FILTER( 
                                    __Table, 
                                    [Date] &amp;lt; EARLIER( [Date] ) &amp;amp;&amp;amp; [__Count] = EARLIER( [__Count] ) 
                                ), 
                                [Date] 
                            ) 
                        ) * 1. 
                    )
                VAR __Max = MAXX( __TmpTable2, [Date])
                VAR __MaxStart = MAXX( FILTER(__TmpTable2, [__diff] &amp;gt; 1), [Date])
                VAR __TmpTable3 = FILTER( __TmpTable2, [Date] &amp;gt;= __MaxStart)
                VAR __Result = 
                    SWITCH( TRUE(),
                        ISBLANK( __Max ), 1, 
                        __Max = __index - 1, COUNTROWS( __TmpTable3 ) + 1, 
                        1
                    )
            RETURN
                __Result
        )
    VAR __CurrentCount = MAXX( FILTER( __Table1, [Date] = __MaxDate ), [__Count] )
    VAR __Result = IF( __CurrentCount = 0, 0, MAXX( FILTER( __Table1, [Date] = __MaxDate ), [Cthulhu] ) )
RETURN
    __Result&lt;/LI-CODE&gt;
&lt;P&gt;&lt;div data-video-id="https://youtu.be/JRE_-ScerCo" data-video-remote-vid="https://youtu.be/JRE_-ScerCo" class="lia-video-container lia-media-is-center lia-media-size-medium"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FJRE_-ScerCo%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJRE_-ScerCo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJRE_-ScerCo%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiZGVlMjU3ZGMtZjQ0NC00MjkwLWE3NjgtYWI1NzhjZWMzZWUwIiwidCI6Ijg3NDlmOWI5LWYzMmQtNDdhMS1hMjI0LTM2OTQxOGFlMmY1MSJ9&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 09 Aug 2024 13:21:31 GMT</pubDate>
    <dc:creator>Greg_Deckler</dc:creator>
    <dc:date>2024-08-09T13:21:31Z</dc:date>
    <item>
      <title>Streaks!</title>
      <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4051984#M1113</link>
      <description>&lt;P&gt;To some extent, a practical implementation of Cthulhu (&lt;A href="https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Cthulhu/m-p/509739#M211" target="_blank" rel="noopener"&gt;Cthulhu - Microsoft Fabric Community&lt;/A&gt;). However, these versions identify the longest streak and current streak, use dates instead of an index and is a much cleaner/better implementation of Cthulhu.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A streak is simply something that has happened continuously, every day for a period of time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Longest Streak Sub-Project = 
    VAR __SubProject = MAX( 'Table'[Sub-projects] )
    VAR __MinDate = 
        MINX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __MaxDate = 
        MAXX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __Table = 
        ADDCOLUMNS(
            CALENDAR( __MinDate, __MaxDate ),
            "__Count", 
                VAR __Date = [Date]
                VAR __Result = 
                    IF( 
                        COUNTROWS( 
                            FILTER( 
                                ALL( 'Table' ), 
                                [Start date] = __Date &amp;amp;&amp;amp; [Sub-projects] = __SubProject 
                            ) 
                        ), 1, 0 
                    )
            RETURN
                __Result
        )
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "Cthulhu", 
                VAR __Index = [Date]
                VAR __Group = [__Count]
                VAR __TmpTable1 = FILTER( __Table, [__Count] = __Group &amp;amp;&amp;amp; [Date] &amp;lt; __Index)
                VAR __TmpTable2 = 
                    ADDCOLUMNS( 
                        __TmpTable1, 
                        "__diff", 
                        ( 
                            [Date] - 
                            MAXX( 
                                FILTER( 
                                    __Table, 
                                    [Date] &amp;lt; EARLIER( [Date] ) &amp;amp;&amp;amp; [__Count] = EARLIER( [__Count] ) 
                                ), 
                                [Date] 
                            ) 
                        ) * 1. 
                    )
                VAR __Max = MAXX( __TmpTable2, [Date])
                VAR __MaxStart = MAXX( FILTER(__TmpTable2, [__diff] &amp;gt; 1), [Date])
                VAR __TmpTable3 = FILTER( __TmpTable2, [Date] &amp;gt;= __MaxStart)
                VAR __Result = 
                    SWITCH( TRUE(),
                        ISBLANK( __Max ), 1, 
                        __Max = __index - 1, COUNTROWS( __TmpTable3 ) + 1, 
                        1
                    )
            RETURN
                __Result
        )
    VAR __Result = MAXX( FILTER( __Table1, [__Count] &amp;lt;&amp;gt; 0 ), [Cthulhu] )
RETURN
    __Result&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Current Streak Sub-Project = 
    VAR __SubProject = MAX( 'Table'[Sub-projects] )
    VAR __MaxDate = MAXX( ALL( 'Table' ), [Start date] )
    VAR __MinDate = 
        MINX( 
            FILTER( 
                ALL( 'Table' ), 
                [Sub-projects] = __SubProject 
            ), 
            [Start date] 
        )
    VAR __Table = 
        ADDCOLUMNS(
            CALENDAR( __MinDate, __MaxDate ),
            "__Count", 
                VAR __Date = [Date]
                VAR __Result = 
                    IF( 
                        COUNTROWS( 
                            FILTER( 
                                ALL( 'Table' ), 
                                [Start date] = __Date &amp;amp;&amp;amp; [Sub-projects] = __SubProject 
                            ) 
                        ), 1, 0 
                    )
            RETURN
                __Result
        )
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "Cthulhu", 
                VAR __Index = [Date]
                VAR __Group = [__Count]
                VAR __TmpTable1 = FILTER( __Table, [__Count] = __Group &amp;amp;&amp;amp; [Date] &amp;lt; __Index)
                VAR __TmpTable2 = 
                    ADDCOLUMNS( 
                        __TmpTable1, 
                        "__diff", 
                        ( 
                            [Date] - 
                            MAXX( 
                                FILTER( 
                                    __Table, 
                                    [Date] &amp;lt; EARLIER( [Date] ) &amp;amp;&amp;amp; [__Count] = EARLIER( [__Count] ) 
                                ), 
                                [Date] 
                            ) 
                        ) * 1. 
                    )
                VAR __Max = MAXX( __TmpTable2, [Date])
                VAR __MaxStart = MAXX( FILTER(__TmpTable2, [__diff] &amp;gt; 1), [Date])
                VAR __TmpTable3 = FILTER( __TmpTable2, [Date] &amp;gt;= __MaxStart)
                VAR __Result = 
                    SWITCH( TRUE(),
                        ISBLANK( __Max ), 1, 
                        __Max = __index - 1, COUNTROWS( __TmpTable3 ) + 1, 
                        1
                    )
            RETURN
                __Result
        )
    VAR __CurrentCount = MAXX( FILTER( __Table1, [Date] = __MaxDate ), [__Count] )
    VAR __Result = IF( __CurrentCount = 0, 0, MAXX( FILTER( __Table1, [Date] = __MaxDate ), [Cthulhu] ) )
RETURN
    __Result&lt;/LI-CODE&gt;
&lt;P&gt;&lt;div data-video-id="https://youtu.be/JRE_-ScerCo" data-video-remote-vid="https://youtu.be/JRE_-ScerCo" class="lia-video-container lia-media-is-center lia-media-size-medium"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FJRE_-ScerCo%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJRE_-ScerCo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJRE_-ScerCo%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiZGVlMjU3ZGMtZjQ0NC00MjkwLWE3NjgtYWI1NzhjZWMzZWUwIiwidCI6Ijg3NDlmOWI5LWYzMmQtNDdhMS1hMjI0LTM2OTQxOGFlMmY1MSJ9&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Aug 2024 13:21:31 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4051984#M1113</guid>
      <dc:creator>Greg_Deckler</dc:creator>
      <dc:date>2024-08-09T13:21:31Z</dc:date>
    </item>
    <item>
      <title>Re: Streaks!</title>
      <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4102712#M1118</link>
      <description>&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="313" data-lia-user-login="Greg_Deckler" class="lia-mention lia-mention-user"&gt;Greg_Deckler&lt;/a&gt;, here's my simplification that should work at both the project and sub-project level:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="php"&gt;Max Streak = 
VAR _MinDate = MIN ( 'Table'[Start date] )
VAR _MaxDate = MAX ( 'Table'[Start date] )
VAR _DateRange_ = CALENDAR ( _MinDate - 1, _MaxDate )
VAR _GapDates_ =
    ADDCOLUMNS (
        _DateRange_,
        "@IsGapDay", ISEMPTY ( FILTER ( 'Table', 'Table'[Start date] = [Date] ) )
    )
VAR _AddStreakIndex_ =
    ADDCOLUMNS (
        _GapDates_,
        "@StreakIndex",
            VAR _RowDate = [Date]
            VAR _LastGapDay =
                MAXX (
                    FILTER ( _GapDates_, [@IsGapDay] &amp;amp;&amp;amp; [Date] &amp;lt;= _RowDate ),
                    [Date]
                )
            VAR _Index = INT ( _RowDate - _LastGapDay )
            RETURN
                _Index
    )
VAR _MaxIndex = MAXX ( _AddStreakIndex_, [@StreakIndex] )
RETURN
    _MaxIndex&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 16:46:42 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4102712#M1118</guid>
      <dc:creator>AlexisOlson</dc:creator>
      <dc:date>2024-08-15T16:46:42Z</dc:date>
    </item>
    <item>
      <title>Re: Streaks!</title>
      <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4754196#M1169</link>
      <description>&lt;P&gt;Hat Off, to both of you.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 12:56:14 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/Streaks/m-p/4754196#M1169</guid>
      <dc:creator>carlosbarboza</dc:creator>
      <dc:date>2025-07-06T12:56:14Z</dc:date>
    </item>
  </channel>
</rss>

