Reply
thne123
Resolver I
Resolver I
Partially syndicated - Outbound

Cumulative Total Per Hour & ID

I had a similar issue to this that I was able to solved by using the group by function in transform data. But due to table structure I don't see how this will be possible now, so I'm checking here for assistance.

 

I'm trying to calculate a how often a specific condition appears in a table. But I'm not getting it to work as intended due to how the data appears in the table, at least for the method I'm trying.

This is the base measure that it all depends on. This one works as intended:

Sold Units = 
CALCULATE(
    SUM('Table1'[Unit]),
        table2[A] = "filter1",
        table3[B] = "filter2"
    )

Now I want to calculate in Table1 how many hours have a "Sold units" above 500

My issue is that I'm not sure how to make sure it sums per hour, instead of the total

A simple calculation like this doesn't seem to work.

 COUNT(Table1[Hour]), 
    FILTER(Table1, _x>=500))

My initial thought was to use the group by function and transform the data. But since the columns I filter by are from other tables and the connection to the tables are by a unique ID this won't help.

 

Not sure how to proceed here

Each row has unique ID that is used to filter out the correct things that we want to sum.

One hour can have multiple rows

ID date/hour ID2 units sold 

UniqueIDdatehourID2units sold
10012024-03-12 13Bob5
10022024-03-12 13Bob3
10032024-03-12 13Bob2
10042024-03-12 13Lisa4
10052024-03-12 14Bob3
10062024-03-12 14Lisa4
10072024-03-12 14Adam6
10082024-03-12 15Bob2
10092024-03-12 15Bob3

 

Based on this I want to calculate how many hours each ID2 has sold more or equal to 5. (>=5) So per example above 

 

Hour 13 Bob sold 5+3+2, which is >=5, so that should be 1 hour counted. 

Hour 14 Bob sold 3, should not be counted

Hour 15 Bob Sold 2+3 = 5, should be counted. 

 

This means that I want my measure to return 2 for Bob (when ID2 listed in a table etc)

 

I need the Unique ID to be able to filter out specific products. 

 

 

 

1 ACCEPTED SOLUTION
v-jianpeng-msft
Community Support
Community Support

Syndicated - Outbound

Hi, @thne123 

Based on your description, I use the following sample data:

vjianpengmsft_0-1710846979284.png

I created an index column as shown in the image below:

vjianpengmsft_1-1710847085746.png

I use the following DAX to add a tag column, the main purpose is to determine whether the number of sales of the same ID2 is greater than or equal to 5 at the same time:

Marker =
IF (
    CALCULATE (
        SUM ( 'Table'[units sold] ),
        FILTER (
            'Table',
            'Table'[hour] = EARLIER ( 'Table'[hour] )
                && 'Table'[ID2] = EARLIER ( 'Table'[ID2] )
        )
    ) >= 5,
    "Yes",
    "No"
)

Here are the results:

vjianpengmsft_2-1710847416860.png

I use the following DAX to return a count of 5 or greater for each ID2 sale:

ISabove5 =
VAR _table =
    SUMMARIZE (
        'Table',
        'Table'[ID2],
        "count",
            CALCULATE (
                COUNTROWS (
                    FILTER (
                        SUMMARIZE ( 'Table', 'Table'[hour], 'Table'[ID2], 'Table'[Marker] ),
                        'Table'[Marker] = "Yes"
                    )
                )
            )
    )
RETURN
    IF ( SUMX ( _table, [count] ) = 0, "", SUMX ( _table, [count] ) )

Here are the results:

vjianpengmsft_3-1710847710691.png

I've provided the PBIX file used this time below. It would be great if it could help you.

 

 

 

How to Get Your Question Answered Quickly

If it does not help, please provide more details with your desired output and pbix file without privacy information (or some sample data) .

Best Regards

Jianpeng Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

 

View solution in original post

3 REPLIES 3
v-jianpeng-msft
Community Support
Community Support

Syndicated - Outbound

Hi, @thne123 

Based on your description, I use the following sample data:

vjianpengmsft_0-1710846979284.png

I created an index column as shown in the image below:

vjianpengmsft_1-1710847085746.png

I use the following DAX to add a tag column, the main purpose is to determine whether the number of sales of the same ID2 is greater than or equal to 5 at the same time:

Marker =
IF (
    CALCULATE (
        SUM ( 'Table'[units sold] ),
        FILTER (
            'Table',
            'Table'[hour] = EARLIER ( 'Table'[hour] )
                && 'Table'[ID2] = EARLIER ( 'Table'[ID2] )
        )
    ) >= 5,
    "Yes",
    "No"
)

Here are the results:

vjianpengmsft_2-1710847416860.png

I use the following DAX to return a count of 5 or greater for each ID2 sale:

ISabove5 =
VAR _table =
    SUMMARIZE (
        'Table',
        'Table'[ID2],
        "count",
            CALCULATE (
                COUNTROWS (
                    FILTER (
                        SUMMARIZE ( 'Table', 'Table'[hour], 'Table'[ID2], 'Table'[Marker] ),
                        'Table'[Marker] = "Yes"
                    )
                )
            )
    )
RETURN
    IF ( SUMX ( _table, [count] ) = 0, "", SUMX ( _table, [count] ) )

Here are the results:

vjianpengmsft_3-1710847710691.png

I've provided the PBIX file used this time below. It would be great if it could help you.

 

 

 

How to Get Your Question Answered Quickly

If it does not help, please provide more details with your desired output and pbix file without privacy information (or some sample data) .

Best Regards

Jianpeng Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

 

Greg_Deckler
Super User
Super User

Syndicated - Outbound

@thne123 Maybe:

 

Measure =
  VAR __Table = SUMMARIZE( 'Table', [hour], "__Sold", SUM( [units sold] ) )
  VAR __Result = COUNTROWS( FILTER( __Table, [__Sold] >= 5 ) )
RETURN
  __Result

 



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

Syndicated - Outbound

@Greg_Deckler 

Thanks!

Still not really getting the expected outcome sadly, but it's almost there. 

It now counts the correct number of rows, BUT, I still need a way to get the filters that I mentioned in my "Sold Units" measure earlier. 

 

I tried adding a variable that is the measure and use that instead of 

"__Sold", SUM( [units sold] ) )

So that it instead was 

"__Sold", _unitssold)

 

This just gave me a count of all the hours in that day instead. 

Same if I tried adding filtes within a Calculate in the result 

avatar user

Helpful resources

Announcements
March PBI video - carousel

Power BI Monthly Update - March 2025

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

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)