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.
Hola
Tengo el siguiente problema:
La tabla Foo tiene un número de serie (serial_number) que corresponde a un número de serie en la barra de la tabla. Este no es un valor único, ya que se ingresan nuevas entradas tanto en Foo como en Bar que pueden contener un número de serie existente (y que "reemplaza" una entrada anterior) se supone que reemplazan a las entradas anteriores (y, por lo tanto, la cardinalidad es de muchas a muchas😞
Lo que se necesita es recuperar la barra [id] y la barra [descripción] de un elemento dos niveles por encima de la fila de barras a la que se hace referencia en el número de serie. En la práctica, esto significa:
Si el número de serie de la fila Foo es
A continuación, la fila de la barra correspondiente es:
Y queremos obtener el identificador y la descripción de esta fila de la barra (porque este elemento está dos niveles por encima):
Tengo la expresión actual de Dax que funciona en cardinalidad uno a uno. Esto hace que la grandparent_id (existe otra casi similar para la descripción del abuelo. Ambos han sido probados):
Grandparent_id =
IF(
HASONEVALUE(Bar[id]),
LOOKUPVALUE(
Bar[id],
Bar[id],
PATHITEMREVERSE(
Bar[Path],
3, INTEGER
), BLANK()
)
)
En este caso, agregar Grandparent_id a la tabla Foo mostrará correctamente la identificación de los abuelos de la tabla Bar relacionada. Pero debido a que la cardinalidad es De muchos a muchos (y debe ser de muchos a muchos, debido a cómo se diseñó la base de datos relacionada), esto no parece funcionar. el LOOKUPVALUE en este caso solo devuelve en blanco,a pesar de una relación existente entre Foo y Bar.
¿Cómo debo evitar este problema para poder mostrar la identificación y la descripción del abuelo en la tabla Foo? A continuación puedes ver que si agrego dichas medidas a la tabla Foo se vacía (a la izquierda de ella se muestra otra tabla Foo que no tiene las medidas en ella, y funciona bien).
Cada entrada de la tabla Bar tiene una referencia parent_id, que me permite crear un PATH usando Bar[id] y Bar[parent_id]:
Path = IF(
HASONEVALUE(Bar[id]),
PATH(
Bar[id],
Bar[parent_id]
)
)
Gracias de antemano por la ayuda.
Solved! Go to Solution.
Aquí te sugiero que inactives la relación entre dos tablas. Esta relación hará que el resultado de la medida sea incorrecto.
Entonces solo necesitas crear dos medidas.
GrandParentID from Bar =
VAR _ParentID =
CALCULATE (
SUM ( Bar[parent_id] ),
FILTER ( ALL ( Bar ), Bar[serial_number] = MAX ( Foo[serial number] ) )
)
VAR _GrandParentID =
CALCULATE (
SUM ( Bar[parent_id] ),
FILTER ( ALL ( Bar ), Bar[id] = _ParentID )
)
RETURN
_GrandParentID
GrandParent Description from Bar =
CALCULATE (
MAX ( Bar[description] ),
FILTER ( ALL ( Bar ), Bar[id] = [GrandParentID from Bar] )
)
El resultado es el siguiente.
Saludos
Rico Zhou
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Puede encontrar el archivo Pbix que estoy usando en el siguiente enlace. Todos los datos de muestra necesarios están allí.
https://drive.google.com/file/d/1e7bQc2T8WVZLjGSMNILFqmXUfUwIAWFc/view?usp=sharing
Aquí te sugiero que inactives la relación entre dos tablas. Esta relación hará que el resultado de la medida sea incorrecto.
Entonces solo necesitas crear dos medidas.
GrandParentID from Bar =
VAR _ParentID =
CALCULATE (
SUM ( Bar[parent_id] ),
FILTER ( ALL ( Bar ), Bar[serial_number] = MAX ( Foo[serial number] ) )
)
VAR _GrandParentID =
CALCULATE (
SUM ( Bar[parent_id] ),
FILTER ( ALL ( Bar ), Bar[id] = _ParentID )
)
RETURN
_GrandParentID
GrandParent Description from Bar =
CALCULATE (
MAX ( Bar[description] ),
FILTER ( ALL ( Bar ), Bar[id] = [GrandParentID from Bar] )
)
El resultado es el siguiente.
Saludos
Rico Zhou
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
¡Oh Dios mío, muchas gracias por esto! Todavía no tengo idea de cómo funcionan las medidas en detalle, pero las repasaré y descubriré los pasos. Por ahora, voy a tratar de aplicarlo a mi conjunto de datos real en el que se basa este conjunto de datos de prueba, y responderé si me encuentro con cualquier otro problema que no pueda superar por mí mismo.
Gracias una vez más, he tenido muchas noches sin dormir temiendo este problema.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |