Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Hola a todos, tengo 2 mesas sin relación activa entre sí. En la Tabla 1 se muestran los siguientes datos.
Tabla 1:
IntervalDate
2024-07-07
2022-05-26
2022-05-25
2021-12-13
2021-12-12
2021-12-01
2021-11-30
2021-11-29
2021-10-01
Esta fecha se utiliza en la segmentación de datos con la configuración de selección única.
Tabla 2: Tiene diferentes versiones de Producto No basadas en válido desde y válido hasta la fecha., cuando una versión se cierra, otra versión comienza al día siguiente.,
y mi objetivo es encontrar la última versión entre él para cada combinación de productos sin ella.
Producto No Válido De Válido A ProductQty
257298 2020-06-05 2021-11-29 100
257298 2021-11-30 2021-12-12 150
257298 2021-12-13 2022-05-25 175
257298 2022-05-26 9999-12-31 200
131278 2021-12-10 2022-12-30 500
131278 2022-12-31 9999-12-31 350
Aquí tengo 2 productos uniqe por lo que la última versión del mismo basado en el máximo de válidos hasta la fecha sería:
Producto No Válido De Válido A ProductQty
257298 2022-05-26 9999-12-31 200
131278 2022-12-31 9999-12-31 350
Hasta aquí soy capaz de lograr el resultado., El verdadero problema viene cuando la Tabla 2 está siendo filtrada por el IntervalDate de la Tabla 1
El Cuadro 2 sólo debe mostrar los datos válidos a partir de la fecha < = fecha seleccionada del Cuadro 1.
Para lograrlo, utilicé la medida calculada en la columna ProductQty de la siguiente manera:
Producto No Válido De Válido A ProductQty
257298 2020-06-05 2021-11-29 100
257298 2021-11-30 2021-12-12 150
257298 2021-12-13 2022-05-25 175
131278 2021-12-10 2022-12-30 500
Ahora, a partir de este resultado, la última versión debería calcularse en función del máximo de válidos hasta la fecha (2022-05-25 y 2022-12-30 para cada número de producto) que se encuentra por debajo de la salida final:
Producto No Válido De Válido A ProductQty
257298 2021-12-13 2022-05-25 175
131278 2021-12-10 2022-12-30 500
Pero Power BI sigue considerando 9999-12-31 como el máximo de válido hasta la fecha. Este filtrado dinámico no lo puedo lograr a partir de un resultado ya filtrado.
Para entenderlo mejor, pongamos un ejemplo más. IntervalDate: 2021-12-12, los datos filtrados serían:
Producto No Válido De Válido A ProductQty
257298 2020-06-05 2021-11-29 100
257298 2021-11-30 2021-12-12 150
131278 2021-12-10 2022-12-30 500
Ahora, a partir de este resultado, PBI debe calcular el máximo de válido hasta y debe mostrar las siguientes filas como resultado final
Producto No Válido De Válido A ProductQty
257298 2021-11-30 2021-12-12 150
131278 2021-12-10 2022-12-30 500
¿Alguien puede ayudarme a lograr este filtrado dinámico basado en datos ya filtrados? Gracias de antemano.
@আশিষে_মাথুৰ @quantumudit @quantumudit1 @v-huijiey-msft @gmsamborn @v-jialongy-msft @v-kaiyue-msft @v-jiewu-msft @lbendlin
Hola, @aatish178
Basándome en su descripción, utilicé los siguientes datos de ejemplo:
Tabla 1:
Tabla 2:
He creado una medida con la siguiente expresión DAX para lograr el resultado deseado que esperaba anteriormente:
Measure2 =
VAR _seleted_date =
SELECTEDVALUE ( Table1[IntervalDate] )
VAR _table =
FILTER ( ALL ( Table2 ), 'Table2'[Valid From] <= _seleted_date )
VAR _table1 =
SUMMARIZE (
_table,
Table2[Product No ],
"maxValid from",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
VAR _max_date =
MAXX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[Valid From]
)
RETURN
_max_date,
"maxValid to",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
VAR _max_date =
MAXX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[Valid To]
)
RETURN
_max_date,
"qty",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
RETURN
MAXX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[ProductQty]
)
)
RETURN
IF (
SELECTEDVALUE ( Table2[Valid From] )
IN SELECTCOLUMNS ( _table1, [maxValid from] ),
MAXX (
FILTER (
_table1,
'Table2'[Product No ] = SELECTEDVALUE ( Table2[Product No ] )
),
[qty]
),
BLANK ()
)
Esto es lo que puedes esperar:
Miré su expresión DAX y parece que desea el promedio de cantidad para cada número de producto en 'Table2'[Valid From]<=MAX(Table1[IntervalDate], luego puede usar la siguiente expresión DAX:
MEASURE =
VAR _seleted_date =
SELECTEDVALUE ( Table1[IntervalDate] )
VAR _table =
FILTER ( ALL ( Table2 ), 'Table2'[Valid From] <= _seleted_date )
VAR _table1 =
SUMMARIZE (
_table,
Table2[Product No ],
"maxValid from",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
VAR _max_date =
MAXX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[Valid From]
)
RETURN
_max_date,
"maxValid to",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
VAR _max_date =
MAXX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[Valid To]
)
RETURN
_max_date,
"qty",
VAR _current_No =
SELECTEDVALUE ( Table2[Product No ] )
RETURN
AVERAGEX (
FILTER ( _table, 'Table2'[Product No ] = _current_No ),
'Table2'[ProductQty]
)
)
RETURN
IF (
SELECTEDVALUE ( Table2[Valid From] )
IN SELECTCOLUMNS ( _table1, [maxValid from] ),
MAXX (
FILTER (
_table1,
'Table2'[Product No ] = SELECTEDVALUE ( Table2[Product No ] )
),
[qty]
),
BLANK ()
)
Estos son los resultados:
He proporcionado el archivo PBIX utilizado esta vez a continuación.
Cómo obtener respuestas rápidas a tu pregunta
Si no ayuda, proporcione más detalles con la salida deseada y el archivo pbix sin información de privacidad (o algunos datos de muestra).
Saludos
Jianpeng Li
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola, Gracias por su apoyo :), pero la solución está fallando en el último paso:
RETURN IF ( SELECTEDVALUE ( Table2[Valid From] ) IN SELECTCOLUMNS ( _table1, [maxValid from] ), MAXX ( FILTER ( _table1, 'Table2'[Product No ] = SELECTEDVALUE ( Table2[Product No ] ) ), [qty] ), BLANK () )
Aquí, en el momento en que selecciono válido desde, menor que la fecha de vencimiento de validez actual., se muestra en blanco.,
Mi expectativa es que la fecha de selección válida de la segmentación de datos., si se ajusta a los criterios de IntervalDate, entonces el objeto visual de la tabla también muestra esa entrada., pero aquí se muestra en blanco
¿Puedes por favor ayudarme a saber hjow puedo arreglarlo?
Hola, la solución está funcionando como se esperaba, sin embargo, no entiendo la última parte
RETURN IF ( SELECTEDVALUE ( Table2[Valid From] ) IN SELECTCOLUMNS ( _table1, [maxValid from] ), MAXX ( FILTER ( _table1, 'Table2'[Product No ] = SELECTEDVALUE ( Table2[Product No ] ) ), [qty] ), BLANK () )
¿Puede explicarlo, por favor?
Aatish
Muchas gracias... Lo comprobaré de inmediato
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |