Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
1 year ago
Solved

DAX compute Conditional Status giving custom rules

Hi everyone,  I need some help with this sample. I have 2 tables: a config table that contains the quiz list categorized by level and category and wether the quiz is required and how the trainee can...
  • bhanu_gautam's avatar
    1 year ago

    Anonymous Create a Calculated Column for Category Status

    dax
    CategoryStatus =
    VAR TraineeID = 'Results'[id_trainee]
    VAR Category = 'Config'[category]
    VAR Level = 'Config'[level]
    VAR RequiredQuizzes =
    FILTER(
    'Config',
    'Config'[category] = Category && 'Config'[level] = Level
    )
    VAR CompletedQuizzes =
    FILTER(
    'Results',
    'Results'[id_trainee] = TraineeID && 'Results'[status] = "complete"
    )
    VAR RequiredCount = COUNTROWS(RequiredQuizzes)
    VAR CompletedCount = COUNTROWS(
    INTERSECT(RequiredQuizzes, CompletedQuizzes)
    )
    VAR Operator = MAXX(RequiredQuizzes, 'Config'[operator])
    RETURN
    IF(
    Operator = "AND",
    IF(CompletedCount = RequiredCount, "complete", "incomplete"),
    IF(CompletedCount > 0, "complete", "incomplete")
    )

     

    Create a Calculated Column for Level Status:

    dax
    LevelStatus =
    VAR TraineeID = 'Results'[id_trainee]
    VAR Level = 'Config'[level]
    VAR Categories =
    DISTINCT(
    SELECTCOLUMNS(
    FILTER('Config', 'Config'[level] = Level),
    "Category", 'Config'[category]
    )
    )
    VAR CategoryStatuses =
    ADDCOLUMNS(
    Categories,
    "Status",
    CALCULATE(
    MAX('Results'[CategoryStatus]),
    FILTER('Results', 'Results'[id_trainee] = TraineeID)
    )
    )
    VAR IncompleteCount = COUNTROWS(
    FILTER(CategoryStatuses, [Status] = "incomplete")
    )
    VAR FailedCount = COUNTROWS(
    FILTER(CategoryStatuses, [Status] = "failed")
    )
    RETURN
    IF(
    IncompleteCount > 0, "incomplete",
    IF(FailedCount > 0, "failed", "complete")
    )

     

    Add a Matrix visual to your Power BI report.
    Place id_trainee in the Rows.
    Place level and category in the Columns.
    Use the CategoryStatus and LevelStatus calculated columns as Values.