Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

AllExcept y KeepFilters

Hola

Simplemente estoy luchando por entender por qué la parte de "Fecha de recepción" de esta tabla de resumen de DAX no obedece a la función AllExcept y devuelve la misma fecha para cada registro de documento: sospecho que hay un problema de contexto, así como algo que ver con la función KeepFilter, ya que funciona cuando se elimina la función KeepFilter. Sin embargo, necesito excluir el estado de revisión<>"Rechazado" del registro de documentos (tenga en cuenta que la fecha de envío se devuelve de la tabla de transmisión.

El modelo se configura en base a 2 tablas de hechos (Registro de documentos y Transmisión) y varias tablas de dimensiones (Proyecto, Documento, Revisión, Estado del documento), todas relacionadas con las tablas de hechos.

Agradecería cualquier ayuda para comprender este problema. Gracias.

Summary - CDS = 
    var Table1 =        
            ADDCOLUMNS(                
                SUMMARIZE(                                                                      --table with the core columns required
                    'Document Register',                        
                    'Document Register'[ProjectID],                        
                    'Document Register'[ProjectID_DocumentNo],                    
                    'Document Register'[Contract (ID)],
                    'Document Register'[Discipline Name (ID)],
                    'Document Register'[Sub Project (ID)],
                    'Document Register'[Sender Company],
                    'Document Register'[Project Phase (ID)],
                    "Received Date",                                                           --return the earliest transmittal sent date                        
                        CALCULATE(
                            MIN(Transmittal[Date Sent]),
                            ALL(Revision),
                            ALL('Doc Status'),
                            'Doc Status'[Status Code]<>"PLA",
                            KEEPFILTERS(                                                        --retain any existing filters on the document register table and add this filter
                                FILTER(
                                    'Document Register',
                                    'Document Register'[Review Status]<>"Rejected"
                                )
                            ),
                            ALLEXCEPT(
                                'Document Register',
                                'Document Register'[ProjectID_DocumentNo]
                            )
                        )                  
                ),                
                "Planned Date",                                                                 --Calculated planned date
                    CALCULATE(
                        MAX( 'Document Register'[Planned Date] ),                    
                        'Document Register'[Latest Revision] = "Latest",
                        ALLEXCEPT(
                            'Document Register',
                            'Document Register'[ProjectID_DocumentNo]                        
                        )
                    ),
                "Forecast Date",                                                                --Calculated forecast date
                    CALCULATE(
                        MAX( 'Document Register'[Forecast Date] ),                    
                        'Document Register'[Latest Revision] = "Latest",
                        ALLEXCEPT(
                            'Document Register',
                            'Document Register'[ProjectID_DocumentNo]                        
                        )
                    ),       
                "Count RevCode Numeric",                                
                    CALCULATE(
                        DISTINCTCOUNT('Document Register'[ProjectID_DocumentNo]),                    
                        Revision[Is RevCode Numeric] = true,                                    --if rev code is a number - couple of conditions exist
                        ALLEXCEPT(
                            'Document Register',
                            'Document Register'[ProjectID_DocumentNo]                        
                        )
                    )
            )        
    RETURN
Table1

2 Replies

  • @msa_007 , Pruebe la medida actualizada

    Resumen - CDS =
    VAR Fecha de Recepción =
    CALCULAR(
    MIN(Transmisión[Fecha de envío]),
    REMOVEFILTERS(Revisión),
    REMOVEFILTERS('estado del documento'),
    'Doc Status' [código de estado] <> "PLA",
    FILTRO(
    «Registro de documentos»,
    'Registro de documentos' [Estado de revisión] <> "Rechazado"
    ),
    ALLEXCEPT(
    «Registro de documentos»,
    'Registro de documentos'[ProjectID_DocumentNo]
    )
    )
    VAR Fecha Planificada =
    CALCULAR(
    MAX('Registro de documentos' [Fecha prevista]),
    'Registro de documentos' [última revisión] = "más reciente",
    ALLEXCEPT(
    «Registro de documentos»,
    'Registro de documentos'[ProjectID_DocumentNo]
    )
    )
    Fecha de pronóstico del VAR =
    CALCULAR(
    MAX('Registro de documentos' [Fecha de previsión]),
    'Registro de documentos' [última revisión] = "más reciente",
    ALLEXCEPT(
    «Registro de documentos»,
    'Registro de documentos'[ProjectID_DocumentNo]
    )
    )
    Cuenta VARCrédigoNumérico =
    CALCULAR(
    DISTINCTCOUNT('Registro de documentos'[ProjectID_DocumentNo]),
    revision[es el código de revisión numérico] = VERDADERO,
    ALLEXCEPT(
    «Registro de documentos»,
    'Registro de documentos'[ProjectID_DocumentNo]
    )
    )
    DEVOLUCIÓN
    ADDCOLUMNS(
    RESUMIR(
    «Registro de documentos»,
    'Registro de documentos' [ProjectID],
    «Registro de documentos»[ProjectID_DocumentNo],
    'Registro de documentos' [contrato (ID)],
    'Registro de documentos' [nombre de la disciplina (ID)],
    'Registro de Documentos' [Subproyecto (ID)],
    «Registro de documentos» [empresa remitente],
    'Registro de documentos' [Fase del proyecto (ID)]
    ),
    "Fecha de recepción", ReceivedDate,
    "Fecha planificada", PlannedDate,
    "Fecha de pronóstico", ForecastDate,
    "Count RevCode Numeric", CountRevCodeNumeric
    )

  • ¡Gracias por tu respuesta @bhanu_gautam

    Probé esto y ahora ha perdido todo su contexto.

    En última instancia, estoy tratando de hacer que la mesa se vea así. Actualmente, la fecha de recepción en negrita no se muestra para el mismo documento "123456".

    Fecha previstaFecha de pronósticoFecha de recepciónContar RevCode NuméricoContrato (ID)Nombre de la disciplina (ID)Sub Proyecto (ID)Empresa remitenteFase del proyecto (ID)ID de proyectoProjectID_DocumentNo
    10/03/2023 0:001GeneralGeneralidades (G) Fábrica de BobEjecución (EXE)A0000123456
    10/03/2023 0:001GeneralGeneralidades (G)Ejecución (EXE)Fábrica de BobEjecución (EXE)A0000123456