Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon'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.
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
Solved! Go to 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.
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.
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:
Seleccione Personalizado B y Febrero 2020:
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.
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.
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.
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:
Seleccione Personalizado B y Febrero 2020:
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.
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í?
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.