Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Dax help on record level calculation

Hello, I need some help on Power BI Desktop Dax queries

could you help me to achieve the RED highlighted column or measure

 

  • Hi Anonymous ,

     

    Based on your description, I have modified your DAX:

    Measure = 
    VAR Total =
        ADDCOLUMNS (
            SUMMARIZE ( Repo, 'Repo'[ProcedureTitle], 'Repo'[GroupTitle], Repo[TaskTitle] ),
            "TaskEnter",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionEnteredTaskNode"
                            && Repo[WorkflowId] = "Open"
                            && NOT ( Repo[ModifiedWorkflowId] IN { "Closed", "Skip" } )
                                && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskSkip",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionTaskNodeWasEdited"
                            && Repo[WorkflowId] = "Open"
                            && Repo[ModifiedWorkflowId] = "Skip"
                            && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                            && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                            && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskSkipEnter",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionEnteredTaskNode"
                            && Repo[WorkflowId] = "Skip"
                            && NOT ( Repo[ModifiedWorkflowId] IN { "Closed", "Skip" } )
                                && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskExit",
                CALCULATE (
                    MAX ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionTaskNodeWasEdited"
                            && Repo[WorkflowId]
                                IN { "Open", "Skip" }
                                    && Repo[ModifiedWorkflowId] = "Closed"
                                    && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                    && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                    && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                )
        )
    VAR _A =
        ADDCOLUMNS (
            Total,
            "Duration",
                IF (
                    [TaskSkip] = BLANK (),
                    DATEDIFF ( [TaskEnter], [TaskExit], SECOND ),
                    DATEDIFF ( [TaskEnter], [TaskSkip], SECOND )
                        + DATEDIFF ( [TaskSkipEnter], [TaskExit], SECOND )
                )
        )
    RETURN
        SUMX ( _A, [Duration] )

    Outout:

    Best Regards,

    Jianbo Li

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

  • Hi Anonymous ,

     

    This question seems to have gone beyond the initial topic.

    Please consider about marking the reply to the question and create a new post on this basis, which will make the topic of the post more targeted and better help others.

    Thanks in advance!

     

    Best Regards,

    Jianbo Li

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

5 Replies

  • Hi Anonymous ,

     

    Based on your description, I have modified your DAX:

    Measure = 
    VAR Total =
        ADDCOLUMNS (
            SUMMARIZE ( Repo, 'Repo'[ProcedureTitle], 'Repo'[GroupTitle], Repo[TaskTitle] ),
            "TaskEnter",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionEnteredTaskNode"
                            && Repo[WorkflowId] = "Open"
                            && NOT ( Repo[ModifiedWorkflowId] IN { "Closed", "Skip" } )
                                && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskSkip",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionTaskNodeWasEdited"
                            && Repo[WorkflowId] = "Open"
                            && Repo[ModifiedWorkflowId] = "Skip"
                            && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                            && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                            && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskSkipEnter",
                CALCULATE (
                    MIN ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionEnteredTaskNode"
                            && Repo[WorkflowId] = "Skip"
                            && NOT ( Repo[ModifiedWorkflowId] IN { "Closed", "Skip" } )
                                && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                ),
            "TaskExit",
                CALCULATE (
                    MAX ( Repo[Date] ),
                    FILTER (
                        Repo,
                        Repo[Type] = "ExecutionTaskNodeWasEdited"
                            && Repo[WorkflowId]
                                IN { "Open", "Skip" }
                                    && Repo[ModifiedWorkflowId] = "Closed"
                                    && [ProcedureTitle] = EARLIER ( Repo[ProcedureTitle] )
                                    && [GroupTitle] = EARLIER ( Repo[GroupTitle] )
                                    && [TaskTitle] = EARLIER ( Repo[TaskTitle] )
                    )
                )
        )
    VAR _A =
        ADDCOLUMNS (
            Total,
            "Duration",
                IF (
                    [TaskSkip] = BLANK (),
                    DATEDIFF ( [TaskEnter], [TaskExit], SECOND ),
                    DATEDIFF ( [TaskEnter], [TaskSkip], SECOND )
                        + DATEDIFF ( [TaskSkipEnter], [TaskExit], SECOND )
                )
        )
    RETURN
        SUMX ( _A, [Duration] )

    Outout:

    Best Regards,

    Jianbo Li

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

    • Anonymous's avatar
      Anonymous
      Not applicable

      hi v-jianboli-msft could you help me on the below please, I tried ranking, Index

       

      Need to find the duration based on EndTime - StartTime from the image below. Please!!!

       

      OriginalDateTypeProcedureTitleGroupTitleTaskNodeIdTaskTitleStatus
      2022-08-22T08:15:49ExecutionEnteredGroupNode130053Blisteratrice Smontaggio LO--Incomplete
      2022-08-22T08:15:50ExecutionExitedGroupNode130053Blisteratrice Smontaggio LO--Incomplete
      2022-08-22T08:15:50ExecutionEnteredTaskNode130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_1Impostare modalità CFOpen
      2022-08-22T08:15:57ExecutionEnteredTaskNode130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_2Caricatore prodottoOpen
      2022-08-22T08:15:57ExecutionExitedTaskNode130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_1Impostare modalità CFClosed
      2022-08-22T08:15:57ExecutionTaskNodeWasEdited130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_1Impostare modalità CFOpen
      2022-08-22T08:16:04ExecutionTaskNodeWasEdited130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_2Caricatore prodottoOpen
      2022-08-22T08:16:05ExecutionEnteredGroupNode130053Blisteratrice Smontaggio LO--Complete
      2022-08-22T08:16:05ExecutionExitedTaskNode130053Blisteratrice Smontaggio LOBlisteratrice_Smontaggio_LO_2Caricatore prodottoClosed
      2022-08-22T08:16:13ExecutionExitedGroupNode130053Blisteratrice Smontaggio LO--Complete
      2022-08-22T08:28:52ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T08:28:59ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T08:29:30ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:04ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:09ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:31ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:32ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:49ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:54ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:54:54ExecutionEnteredTaskNode130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoOpen
      2022-08-22T10:54:59ExecutionTaskNodeWasEdited130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoOpen
      2022-08-22T10:55:00ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T10:55:00ExecutionExitedTaskNode130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoSkip
      2022-08-22T11:06:36ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T11:08:59ExecutionExitedTaskNode130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoSkip
      2022-08-22T11:09:07ExecutionEnteredTaskNode130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoSkip
      2022-08-22T11:09:07ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Incomplete
      2022-08-22T11:09:14ExecutionTaskNodeWasEdited130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoSkip
      2022-08-22T11:09:15ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Complete
      2022-08-22T11:09:15ExecutionExitedTaskNode130053Blisteratrice Montaggio LOBlisteratrice_Montaggio_LO_1Caricatore prodottoClosed
      2022-08-22T16:29:48ExecutionEnteredGroupNode130053Blisteratrice Montaggio LO--Complete
      2022-08-22T16:30:09ExecutionExitedGroupNode130053Blisteratrice Montaggio LO--Complete
  • Hi Anonymous ,

     

    This question seems to have gone beyond the initial topic.

    Please consider about marking the reply to the question and create a new post on this basis, which will make the topic of the post more targeted and better help others.

    Thanks in advance!

     

    Best Regards,

    Jianbo Li

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

  • Anonymous's avatar
    Anonymous
    Not applicable

    I am near to the solution but finding difficult to resolve the wrong totals


    using the below dax query:

    TaskDuration =
    VAR _TaskEnter = CALCULATE( MIN( Repo[DateTime] ), FILTER(Repo, Repo[Type] = "ExecutionEnteredTaskNode" && Repo[WorkflowPhaseId] = "Open" && NOT( Repo[ModifiedWorkflowPhaseId] IN {"Closed","Skip"}) && MAX(Repo[TaskTitle]) = Repo[TaskTitle] ) )

    VAR _TaskSkip = CALCULATE( MIN( Repo[DateTime] ), FILTER(Repo, Repo[Type] = "ExecutionTaskNodeWasEdited" && Repo[WorkflowPhaseId] = "Open" && Repo[ModifiedWorkflowPhaseId] = "Skip" && MAX(Repo[TaskTitle]) = Repo[TaskTitle] ) )

    VAR _TaskSkipEnter = CALCULATE( MIN( Repo[DateTime] ), FILTER(Repo, Repo[Type] = "ExecutionEnteredTaskNode" && Repo[WorkflowPhaseId] = "Skip" && NOT( Repo[ModifiedWorkflowPhaseId] IN {"Closed","Skip"}) && MAX(Repo[TaskTitle]) = Repo[TaskTitle] ) )

    VAR _TaskExit = CALCULATE( MAX( Repo[DateTime] ), FILTER(Repo, Repo[Type] = "ExecutionTaskNodeWasEdited" && Repo[WorkflowPhaseId] IN {"Open", "Skip"} && Repo[ModifiedWorkflowPhaseId] = "Closed" && MAX(Repo[TaskTitle]) = Repo[TaskTitle] ) )

    VAR _Calculation = CALCULATE( IF( _TaskSkip = BLANK(), DATEDIFF( _TaskEnter, _TaskExit, SECOND ), DATEDIFF( _TaskEnter , _TaskSkip, SECOND ) + DATEDIFF( _TaskSkipEnter , _TaskExit, SECOND ) ) )

    VAR Total = ADDCOLUMNS ( SUMMARIZE ( Repo, Repo[TaskTitle] ), "Duration", _Calculation )

    RETURN

    _Calculation