Forum Discussion

Audrey_ADAPEI35's avatar
Audrey_ADAPEI35
Frequent Visitor
2 years ago
Solved

Matrix and database in POWER BI

Bonjour,   Dans le cadre d’une étude sur l’absentéisme dans mon entreprise, je souhaiterais catégoriser les arrêts selon leur durée. Les catégories sont les suivantes : « Arrêt court (<= 3j) », « A...
  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi Audrey_ADAPEI35 ,

     

    I create a sample to have a test. Considering the New Year's Eve, I added a new material: ZZZ1234.

    DimTables:

    Dim Arrêt = 
    DATATABLE(
        "Arrêt",STRING,
        "Order",INTEGER,
        "Arrêt Start",INTEGER,
        "Arrêt End",INTEGER,
        {
            {"Arrêt court (<= 3j)",1,,3},
            {"Arrêt long (de 3 à 7 jours)",2,4,7},
            {"Arrêt long (de 8 à 30 jours)",3,8,30},
            {"Arrêt long (de 30 à 90 jours)",4,31,90},
            {"Arrêt long (> 90 jours)",5,91,}
            }
    )
    DimDate = ADDCOLUMNS(CALENDARAUTO(),"Year",YEAR([Date]),"YearMonth",YEAR([Date])*100 + MONTH([Date]))

    Data Model:

    Measures:

    MEASURE = 
    VAR _YearMonthStart =
        MIN ( DimDate[YearMonth] )
    VAR _YearMonthEnd =
        MAX ( DimDate[YearMonth] )
    VAR _FILTER =
        FILTER (
            'Table',
            'Table'[ANNEE MOIS] >= _YearMonthStart
                && 'Table'[ANNEE MOIS] <= _YearMonthEnd
        )
    VAR _SUMMARIZE =
        SUMMARIZE ( _FILTER, [MATRICULE], [ANNEE],"Sum", 
        VAR _ANNEE = [ANNEE]
        VAR _MATRICULE = [MATRICULE]
        RETURN
        SUMX (FILTER(_FILTER,[ANNEE] = _ANNEE && [MATRICULE] = _MATRICULE), [NB_JOURS] ) )
    RETURN
        SWITCH (
            MAX ( 'Dim Arrêt'[Order] ),
            1, COUNTX ( FILTER ( _SUMMARIZE, [ANNEE] = MAX(DimDate[Year]) && [Sum] <= 3 ), [MATRICULE] ),
            2, COUNTX ( FILTER ( _SUMMARIZE, [ANNEE] = MAX(DimDate[Year]) && [Sum] > 3 && [Sum] <= 7 ), [MATRICULE] ),
            3, COUNTX ( FILTER ( _SUMMARIZE, [ANNEE] = MAX(DimDate[Year]) && [Sum] > 7 && [Sum] <= 30 ), [MATRICULE] ),
            4, COUNTX ( FILTER ( _SUMMARIZE, [ANNEE] = MAX(DimDate[Year]) && [Sum] > 30 && [Sum] <= 90 ), [MATRICULE] ),
            5, COUNTX ( FILTER ( _SUMMARIZE, [ANNEE] = MAX(DimDate[Year]) && [Sum] > 90 ), [MATRICULE] )
        ) + 0

    Result is as below.

     

    Best Regards,
    Rico Zhou

     

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