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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Filtrar cuando no hay datos

Tengo 3 mesas

CaseID iniciar el caso caso final iniciar el prod prod final
1 1-1-2020 31-7-2020 1-1-2020 31-5-2020
2 1-2-2020 30-6-2020 1-3-2020 30-4-2020

Id. de actividad CaseID Fecha
1 1 7-1-2020
2 1 3-2-2020
3 1 4-4-2020
4 1 5-5-2020
5 1 6-6-2020
6 2 2-3-2020

Fecha AAAA-MM
1-1-2020 2020-1
2-1-2020 2020-1
3-1-2020 2020-1
etcetera.

Lo que quiero saber es en qué meses no hubo actividad mientras el mes es válido. Esto significa que está entre el inicio en el final del caso y entre el inicio en el extremo de un producto.

En este ejemplo quiero que el endresult sea:

Identificación del caso AAAA-MM
1 2020-3
2 2020-4

También es posible seleccionar un filtro en YYYY-MM y que solo los caseID aparecerán cuando no haya actividad en un período válido. ¿Alguien tiene una idea?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

sreenathv_3-1614084422666.png

NoActivity = 
VAR CaseTable = VALUES('Cases'[CaseID])
VAR MonthTable = VALUES('Datum'[YYYYMM])
VAR CJTable = CROSSJOIN(CaseTable,MonthTable)
VAR ActivityTable = ADDCOLUMNS(VALUES('Activities'),"YYYYMM",LOOKUPVALUE('Datum'[YYYYMM],'Datum'[Date],[  Date]))
VAR FindActivities = 
    ADDCOLUMNS(
        CJTable,
        "Activity",
            VAR CID = [CaseID]
            VAR YYMM = [YYYYMM]
            VAR FT = FILTER(ActivityTable,[  CaseID]=CID && [YYYYMM]=YYMM)
            RETURN
            CONCATENATEX(FT,[Activity Id])
    )
VAR ValidityCheckTable = 
    ADDCOLUMNS(
        FindActivities,
        "ValidityCheck",
        VAR YM = [YYYYMM]
        VAR SDOM = MINX(FILTER('Datum','Datum'[YYYYMM]=YM),'Datum'[Date])
        VAR LDOM = MAXX(FILTER('Datum','Datum'[YYYYMM]=YM),'Datum'[Date])
        VAR CSD = LOOKUPVALUE('Cases'[  start case],'Cases'[CaseID],[CaseID])
        VAR CED = LOOKUPVALUE('Cases'[  end case],'Cases'[CaseID],[CaseID])
        VAR PSD = LOOKUPVALUE('Cases'[  start prod],'Cases'[CaseID],[CaseID])
        VAR PED = LOOKUPVALUE('Cases'[  end   prod],'Cases'[CaseID],[CaseID])
        VAR CheckResult =
            IF(
                CSD<=SDOM && CED>=LDOM && PSD<=SDOM && PED>=LDOM,"Valid","Invalid")
        RETURN CheckResult
    )
VAR Result = FILTER(ValidityCheckTable,[ValidityCheck]="Valid" && [Activity]="")
RETURN
Result

Nota: He creado una tabla calculada que da el resultado mostrado anteriormente. Si desea usar esto para algún cálculo en otras medidas, podría usar el mismo código para crear tablas temporales dentro de medidas.

Cambie los nombres de tabla y los nombres de campo en consecuencia. Esto se basa en los datos de ejemplo.

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

sreenathv_3-1614084422666.png

NoActivity = 
VAR CaseTable = VALUES('Cases'[CaseID])
VAR MonthTable = VALUES('Datum'[YYYYMM])
VAR CJTable = CROSSJOIN(CaseTable,MonthTable)
VAR ActivityTable = ADDCOLUMNS(VALUES('Activities'),"YYYYMM",LOOKUPVALUE('Datum'[YYYYMM],'Datum'[Date],[  Date]))
VAR FindActivities = 
    ADDCOLUMNS(
        CJTable,
        "Activity",
            VAR CID = [CaseID]
            VAR YYMM = [YYYYMM]
            VAR FT = FILTER(ActivityTable,[  CaseID]=CID && [YYYYMM]=YYMM)
            RETURN
            CONCATENATEX(FT,[Activity Id])
    )
VAR ValidityCheckTable = 
    ADDCOLUMNS(
        FindActivities,
        "ValidityCheck",
        VAR YM = [YYYYMM]
        VAR SDOM = MINX(FILTER('Datum','Datum'[YYYYMM]=YM),'Datum'[Date])
        VAR LDOM = MAXX(FILTER('Datum','Datum'[YYYYMM]=YM),'Datum'[Date])
        VAR CSD = LOOKUPVALUE('Cases'[  start case],'Cases'[CaseID],[CaseID])
        VAR CED = LOOKUPVALUE('Cases'[  end case],'Cases'[CaseID],[CaseID])
        VAR PSD = LOOKUPVALUE('Cases'[  start prod],'Cases'[CaseID],[CaseID])
        VAR PED = LOOKUPVALUE('Cases'[  end   prod],'Cases'[CaseID],[CaseID])
        VAR CheckResult =
            IF(
                CSD<=SDOM && CED>=LDOM && PSD<=SDOM && PED>=LDOM,"Valid","Invalid")
        RETURN CheckResult
    )
VAR Result = FILTER(ValidityCheckTable,[ValidityCheck]="Valid" && [Activity]="")
RETURN
Result

Nota: He creado una tabla calculada que da el resultado mostrado anteriormente. Si desea usar esto para algún cálculo en otras medidas, podría usar el mismo código para crear tablas temporales dentro de medidas.

Cambie los nombres de tabla y los nombres de campo en consecuencia. Esto se basa en los datos de ejemplo.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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