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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
gclements
Helper II
Helper II

Mostrar el último mes y el último año en función de la selección

Hola

Estoy tratando de configurar un informe que muestra tanto el último mes y el último año basado en el cliente y el mes seleccionado.

El cliente A puede tener datos para enero de 2020 hasta diciembre de 2020, por lo que si selecciono diciembre de 2020 me gustaría mostrar una salida para sólo diciembre de 2020, pero también una salida para el último año: diciembre de 2020 a enero de 2020.

El cliente B, sin embargo, sólo podría tener datos para febrero de 2020 hasta agosto de 2020, por lo que no debería poder seleccionar diciembre de 2020, en su lugar si selecciono agosto de 2020, entonces debería ver una tabla para agosto de 2020 y otra para agosto de 2020 a febrero de 2020.

Esto es bastante difícil de explicar por lo que he reunido un archivo pbix de muestra que demuestra los 2 problemas:

El problema 1 es que el menú desplegable del mes solo debe mostrar los meses disponibles en función del cliente.

El problema 2 es que usando la solución que tengo hasta ahora no puedo filtrar una métrica para mostrar el último mes, mientras que otro muestra los últimos 12 meses.

Ambos problemas se muestran claramente en el archivo de ejemplo.

Estaría agradecido por cualquier ayuda con esto.

PBIX Archivo OneDrive Descargar

1 ACCEPTED SOLUTION

Hay @gclements

Tiene dos requisitos:

1. Deje que BillingPeriod Slicer solo muestre los meses incluidos en el cliente que seleccionó.

Construyo un FilterMeasure para lograr tu objetivo.

Filter Measure = 
VAR _SelCustomer =
    SELECTEDVALUE ( 'Dim Customer'[pkCustomer] )
VAR _BillingPeriod =
    SUMMARIZE (
        FILTER ( 'Fact Charge', 'Fact Charge'[fkCustomer] = _SelCustomer ),
        'Fact Charge'[fkBillingPeriod],
        "YearMonth",
            CALCULATE (
                MAX ( 'Dim Billing Period'[YearMonth] ),
                FILTER ( ALL ( 'Dim Billing Period' ), [fkBillingPeriod] = [pkBillingPeriod] )
            )
    )
VAR _YearMonth =
    SUMMARIZE ( _BillingPeriod, [YearMonth] )
RETURN
    IF ( SUM ( 'Billing Period Selector'[YearMonth] ) IN _YearMonth, 1, 0 )

Agregue FilterMeasure en Filter Field en el objeto visual de segmentación de datos y establézcalo en mostrar elementos cuando el valor 1.

3.png

Es mejor desactivar la función de selección única. Si utiliza esta función, siempre mostrará el mes que seleccione antes cuando cambie a otro cliente.

Por ejemplo, Si selecciona el cliente A (enero, febrero, marzo) y selecciona Ene.

Si selecciona el cliente B (febrero, marzo), debido a la función de selección única, se mostrará Jan de forma predeterminada.

Y Jan desaparecerá después de seleccionar otro mes. Por lo que puede desactivar la función de selección única, entonces no es necesario mantener la selección de un valor.

El resultado es el siguiente.

1.png2.png

2. Desea mostrar la cantidad más reciente en lugar del importe total.

Latest Amount = 
VAR _SelYearMonth =
    SELECTEDVALUE ( 'Billing Period Selector'[YearMonth] )
VAR _pkBillingPeriod =
    SUMMARIZE (
        FILTER (
            ALL ( 'Dim Billing Period' ),
            'Dim Billing Period'[YearMonth] = _SelYearMonth
        ),
        'Dim Billing Period'[pkBillingPeriod]
    )
RETURN
    SUMX (
        FILTER ( 'Fact Charge', 'Fact Charge'[fkBillingPeriod] IN _pkBillingPeriod ),
        'Fact Charge'[AmountCol]
    )

El resultado es el siguiente.

Seleccione Personalizado B y Marzo 2020:

4.png

Seleccione Personalizado B y Febrero 2020:5.png

Puede descargar el archivo pbix desde este enlace: Mostrar el último mes y el último año en función de la selección

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

6 REPLIES 6
Anonymous
Not applicable

Lea el modelo. Normalmente pasas de una dimensión a un hecho. Eso es sólo 1 dirección

Lo que desea es el hecho de filtrar las fechas cuando se selecciona un cliente.

Así que o rellenas las fechas, etc. en el hecho y construyes una cortadora en esa fecha. O bien, establezca la segmentación de datos en bidireccional para lograr lo que desea.

Sólo necesitaría 2 medidas.

Seleccione un cliente y una fecha. La primera medida (para el último mes) sería sum(cargo)

La segunda medida sería sum(charge) donde date > [date selected] - 1 year

¿No hay una tercera opción, no podría poner el Cliente y el Período de Facturación en la misma dimensión? Esto mantendría la relación de dirección única y evitaría que tuviera que agregar los campos de fecha en el Cargo de hecho.

No estoy seguro de seguirte con tu segundo punto. Si tuviera varias medidas de hecho Cargo, como Cantidad como ejemplo de otra medida, entonces seguramente tendría que crear 2 medidas adicionales para Importe y 2 medidas adicionales para Cantidad. Cada medida en Fact Charge necesitaría 2 medidas adicionales.

Hay @gclements

Tiene dos requisitos:

1. Deje que BillingPeriod Slicer solo muestre los meses incluidos en el cliente que seleccionó.

Construyo un FilterMeasure para lograr tu objetivo.

Filter Measure = 
VAR _SelCustomer =
    SELECTEDVALUE ( 'Dim Customer'[pkCustomer] )
VAR _BillingPeriod =
    SUMMARIZE (
        FILTER ( 'Fact Charge', 'Fact Charge'[fkCustomer] = _SelCustomer ),
        'Fact Charge'[fkBillingPeriod],
        "YearMonth",
            CALCULATE (
                MAX ( 'Dim Billing Period'[YearMonth] ),
                FILTER ( ALL ( 'Dim Billing Period' ), [fkBillingPeriod] = [pkBillingPeriod] )
            )
    )
VAR _YearMonth =
    SUMMARIZE ( _BillingPeriod, [YearMonth] )
RETURN
    IF ( SUM ( 'Billing Period Selector'[YearMonth] ) IN _YearMonth, 1, 0 )

Agregue FilterMeasure en Filter Field en el objeto visual de segmentación de datos y establézcalo en mostrar elementos cuando el valor 1.

3.png

Es mejor desactivar la función de selección única. Si utiliza esta función, siempre mostrará el mes que seleccione antes cuando cambie a otro cliente.

Por ejemplo, Si selecciona el cliente A (enero, febrero, marzo) y selecciona Ene.

Si selecciona el cliente B (febrero, marzo), debido a la función de selección única, se mostrará Jan de forma predeterminada.

Y Jan desaparecerá después de seleccionar otro mes. Por lo que puede desactivar la función de selección única, entonces no es necesario mantener la selección de un valor.

El resultado es el siguiente.

1.png2.png

2. Desea mostrar la cantidad más reciente en lugar del importe total.

Latest Amount = 
VAR _SelYearMonth =
    SELECTEDVALUE ( 'Billing Period Selector'[YearMonth] )
VAR _pkBillingPeriod =
    SUMMARIZE (
        FILTER (
            ALL ( 'Dim Billing Period' ),
            'Dim Billing Period'[YearMonth] = _SelYearMonth
        ),
        'Dim Billing Period'[pkBillingPeriod]
    )
RETURN
    SUMX (
        FILTER ( 'Fact Charge', 'Fact Charge'[fkBillingPeriod] IN _pkBillingPeriod ),
        'Fact Charge'[AmountCol]
    )

El resultado es el siguiente.

Seleccione Personalizado B y Marzo 2020:

4.png

Seleccione Personalizado B y Febrero 2020:5.png

Puede descargar el archivo pbix desde este enlace: Mostrar el último mes y el último año en función de la selección

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Este es el gran Rico, muchas gracias por demostrar claramente una posible solución.

Necesito encajar esto en mi solución general ahora para ver si va a funcionar para mí, pero voy a aceptar que como la solución a mi problema original. Gracias de nuevo.

Anonymous
Not applicable

1) Retire la tabla selectora de facturación. Puede crear una segmentación basada en dim Billing Period

2) Haga que la relación entre DIM Billing Period y Fact charge sea bidireccional

3) Hacer un measere que seleccione la SUMA de todos los cargos para el cliente seleccionado

4) Hacer un measere que seleccione el cargo que tiene el máximo (fecha) para el cliente seleccionado o la suma de todos los cargos dentro del último mes o algo

Gracias por la respuesta.

¿No hay problemas de rendimiento con los filtros bidireccionales? Entendí que la recomendación era evitarlos. Sólo he compartido una muestra, pero en mi solución real hay millones de registros en la tabla De cargo, ¿esto causará problemas de rendimiento?

Parece sensato que sugiera crear dos medidas adicionales basadas en la cantidad de cargo para capturar el filtro adecuado, sin embargo mi solución real tiene alrededor de 20 medidas dentro de la tabla de cargos por lo que cada una de estas medidas necesitaría otras 2 versiones (1 para la corriente, otra para 12M) si se van a informar. Esto puede resultar en 60 medidas que parece mucho, ¿es esta la mejor / única opción aquí?

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors