Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Smallegrue
Frequent Visitor

Referencing rows within same table based on events

Hello all,

 

I've been having trouble with this and I can't seem to figure it out.

 

I have an equipement status table that records a row everytime an equipement status changes or at the end of a shift. It currently looks like this:

 

Row IDDateEquipmentShiftTimeDurationStatus
12020-02-17T101Night0:0043200Up
22020-02-18T101Day0:0021600Up
32020-02-18T101Day6:0010800Down
42020-02-18T101Day9:0010800Up
52020-02-18T101Night0:0043200Down
62020-02-19T101Day0:0043200Down
72020-02-19T101Night0:0043200Down
82020-02-20T101Day0:0043200Down
92020-02-20T101Night0:0043200Down

 

The problem is we are trying to calculate the mean time to repair. If you notice the last 5 rows of the table are all associated to the same failure. Ideally, I would like to add a column that would associate the root failure based on the previous status change/not change. Something like this:

 

Row IDDateEquipmentShiftTimeDurationStatusOriginal Failure line ID
12020-02-17T101Night0:0043200Up 
22020-02-18T101Day0:0021600Up 
32020-02-18T101Day6:0010800Down3
42020-02-18T101Day9:0010800Up 
52020-02-18T101Night0:0043200Down5
62020-02-19T101Day0:0043200Down5
72020-02-19T101Night0:0043200Down5
82020-02-20T101Day0:0043200Down5
92020-02-20T101Night0:0043200Down5

 

Can someone please help me out with this I can't figure it out.

 

Thank you,

 

Steph

1 ACCEPTED SOLUTION

Hi @Smallegrue ,

 

We can create a calculated column to meet your requirement:

 

Original Failure line ID =
IF (
    [Status] = "Down",
    CALCULATE (
        MIN ( 'Table'[Row ID] ),
        FILTER (
            'Table',
            'Table'[Row ID]
                > CALCULATE (
                    MAX ( 'Table'[Row ID] ),
                    FILTER (
                        'Table',
                        'Table'[Row ID] <= EARLIER ( 'Table'[Row ID], 2 )
                            && 'Table'[Status] = "Up"
                    )
                )
                && 'Table'[Status] = "Down"
        )
    )
)

 

 

13.jpg
Best regards,

 

Community Support Team _ Dong 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

4 REPLIES 4
Greg_Deckler
Community Champion
Community Champion

See my article on Mean Time Between Failure (MTBF) which uses EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...



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!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Hello,

 

So I looked at @Greg_Deckler post and although it is a start, I feel it's not exactly the same thing. I maybe mistaken, but I feel Greg's post deals with rows that are independant of each other vs my rows are dependant on each other...the lenght of a failure could be the sum of multiple durations of subsequent lines. In greg's case each line represents a distinct failure.

 

Using Greg's post I was able to "tag" failing lines, but I'm not able to distinct each failure.

 

Here is the closest result I was able to obtain...

 

Original Failure Line ID =
minx(
filter(
'Status Equipements',
'Status Equipements'[Equipment] = EARLIER('Status Equipements'[Equipment])
&& 'Status Equipements'[Status] = EARLIER('Status Equipements'[status])
&& 'Status Equipements'[Status] = "Down"
&& 'Status Equipements'[Row ID] <= earlier('Status Equipements'[Row ID])
 
),
'Status Equipements'[Row ID]
)

 

 

Row IDDateEquipmentShiftTimeDurationStatusOriginal Failure line ID
12020-02-17T101Night0:0043200Up 
22020-02-18T101Day0:0021600Up 
32020-02-18T101Day6:0010800Down3
42020-02-18T101Day9:0010800Up 
52020-02-18T101Night0:0043200Down3
62020-02-19T101Day0:0043200Down3
72020-02-19T101Night0:0043200Down3
82020-02-20T101Day0:0043200Down3
92020-02-20T101Night0:0043200Down3

 

 

Any help is appreciated

Hi @Smallegrue ,

 

We can create a calculated column to meet your requirement:

 

Original Failure line ID =
IF (
    [Status] = "Down",
    CALCULATE (
        MIN ( 'Table'[Row ID] ),
        FILTER (
            'Table',
            'Table'[Row ID]
                > CALCULATE (
                    MAX ( 'Table'[Row ID] ),
                    FILTER (
                        'Table',
                        'Table'[Row ID] <= EARLIER ( 'Table'[Row ID], 2 )
                            && 'Table'[Status] = "Up"
                    )
                )
                && 'Table'[Status] = "Down"
        )
    )
)

 

 

13.jpg
Best regards,

 

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Thanks Greg,

 

I'll take a look at it! I'll let you know.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.