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

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.

Reply
Anonymous
Not applicable

Modelado de datos de jerarquías desencofradas o desequilibradas con valores agregados previamente

Hola a todos,

mis datos contienen una jerarquía desequilibrada o desequilibrada. Las tiendas de mi jerarquía contienen muchas entradas. Las relaciones matemáticas en esta jerarquía a veces son muy complejas. Por lo tanto, no quiero que Power BI agregue los valores automáticamente. En su lugar, mis datos contienen los valores correctos paracadar nodo. En consecuencia, mi tabla (simplificada) tiene este aspecto:

H_ID

Nivel 1

Nivel2

Nivel 3

Nivel 4

Nivel 5

Valor

Lvl

1

Europa

0

1

2

Europa

Medio

1

2

3

Europa

Medio

Alemania

1

3

4

Europa

Medio

Alemania

Tienda1

2

4

5

Europa

Medio

Alemania

Tienda2

3

4

6

Europa

Medio

Alemania

Tienda2

1

5

5

7

Europa

Medio

Alemania

Tienda2

2

8

5

8

Asia

13

1

9

Asia

China

21

2

10

Asia

China

Tienda3

34

3

11

Asia

China

Tienda3

3

55

4

12

Asia

China

Tienda3

4

89

4

Ya he encontrado una solución de cómo mostrar la jerarquía con los valores correctos en un objeto visual de matriz aplicando dos DAX-measure:

Suma de valores : SUM('hierarchy_with_leafs (antiguo)'[Valor])

Valores de visualización a var level1 - CALCULATE([Suma de valores], 'hierarchy_with_leafs (antiguo)'[Lvl]-1)

var level2 - CALCULATE([Suma de valores], 'hierarchy_with_leafs (antiguo)'[Lvl]-2)

var level3 - CALCULATE([Suma de valores], 'hierarchy_with_leafs (antiguo)'[Lvl]-3)

var level4 - CALCULATE([Suma de valores], 'hierarchy_with_leafs (antiguo)'[Lvl]-4)

var level5 - CALCULATE([Suma de valores], 'hierarchy_with_leafs (antiguo)'[Lvl]-5)

var level1selected á ISINSCOPE('hierarchy_with_leafs (antiguo)'[Level1])

var level2selected á ISINSCOPE('hierarchy_with_leafs (antiguo)'[Level2])

var level3selected á ISINSCOPE('hierarchy_with_leafs (antiguo)'[Level3])

var level4selected á ISINSCOPE('hierarchy_with_leafs (antiguo)'[Level4])

var level5selected á ISINSCOPE('hierarchy_with_leafs (antiguo)'[Level5])

devolver SWITCH( TRUE(),

nivel5seleccionado, nivel5,

nivel4seleccionado, nivel4,

nivel3seleccionado, nivel 3,

nivel2seleccionado, nivel2,

nivel 1seleccionado, nivel1,

"")

Esto me lleva al siguiente resultado correcto:

correct_result.PNG

Los números (1,2,3,4) en Store2 y Store3 representan algunas entradas. En mis datos reales pueden aparecer varias entradas de 1.000 por tienda. Además, hay muchos niveles (20 euros). Por lo tanto, esta mesa se vuelve muy grande. Para no tener que guardar la jerarquía completa para cada entrada (produce una gran cantidad de sobrecarga) he pensado en un esquema de datos más eficiente con tres tablas:

1. Una jerarquía-tabla que almacena la jerarquía hasta las entradas (tal vez no necesito estas "entradas"-filas con Hierarchy-ID 6 y 10 en absoluto, pero no estoy seguro):

Hierarchy_ID

Nivel 1

Nivel2

Nivel 3

Nivel 4

Nivel 5

1

Europa

2

Europa

Medio

3

Europa

Medio

Alemania

4

Europa

Medio

Alemania

Tienda1

5

Europa

Medio

Alemania

Tienda2

6

Europa

Medio

Alemania

Tienda2

Entradas

7

Asia

8

Asia

China

9

Asia

China

Tienda3

10

Asia

China

Tienda3

Entradas

2. Una tabla de entrada de hojas que contiene mis entradas:

Leaf_ID

Descripción de la entrada

1

text1

2

text2

3

text3

4

text4

3. Una tabla de hechos que contiene un mapeo:

Valor

Hierarchy_ID

Leaf_ID

Nivel

0

1

0

1

1

2

0

2

1

3

0

3

2

4

0

4

3

5

0

4

5

6

1

5

8

6

2

5

13

7

0

1

21

8

0

2

34

9

0

3

55

10

3

4

89

10

4

4

Si aplico las medidas mostradas anteriormente: Obtengo el siguiente resultado incorrecto. Donde se muestran todas mis entradas agregadas:

wrong_result.PNG

Mi pregunta ahora es, ¿cómo puedo ajustar mi modelo de datos o fórmula DAX para obtener el resultado correcto de la primera captura de pantalla.

Aquí está un enlace a mi archivo Power Bi de ejemplo: https://www.dropbox.com/s/k90icsqa9i8hd0c/sample.pbix?dl=0

Gracias de antemano.

framas

1 ACCEPTED SOLUTION
AllisonKennedy
Super User
Super User

@framas Sí, no es tan sencillo como simplemente agregar orden a las "filas", ya que como ha dicho que los niveles no siempre son los mismos y no hay nada en la medida o datos que indiquen a Power BI cómo conectar el pedido a la jerarquía.

Me has sorprendido en esto, sin conocer las complejas fórmulas que crean esta jerarquía compleja, no puedo pensar en una manera de simplificar el modelo de datos. Tampoco estoy seguro de que el método de tres tablas sea más simple dado que cada número de pedido es único en todas las tiendas. En un modelo de datos de ejemplo estándar, tendría una tabla para todas sus tiendas y otra para todos sus pedidos, y acumular/SUMAR la jerarquía para el país, la región, etc., pero ha dicho que esto no funcionará en su conjunto de datos?


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

View solution in original post

5 REPLIES 5
AllisonKennedy
Super User
Super User

@framas Sí, no es tan sencillo como simplemente agregar orden a las "filas", ya que como ha dicho que los niveles no siempre son los mismos y no hay nada en la medida o datos que indiquen a Power BI cómo conectar el pedido a la jerarquía.

Me has sorprendido en esto, sin conocer las complejas fórmulas que crean esta jerarquía compleja, no puedo pensar en una manera de simplificar el modelo de datos. Tampoco estoy seguro de que el método de tres tablas sea más simple dado que cada número de pedido es único en todas las tiendas. En un modelo de datos de ejemplo estándar, tendría una tabla para todas sus tiendas y otra para todos sus pedidos, y acumular/SUMAR la jerarquía para el país, la región, etc., pero ha dicho que esto no funcionará en su conjunto de datos?


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Anonymous
Not applicable

@AllisonKennedy Sólo en el nivel más bajo de las órdenes se permitiría la agregación automática (la suma de los pedidos da el valor para la tienda). Pero por encima de ese nivel, el sistema no debe agregarse automáticamente.

Tal vez podría quitar los valores agregados para los almacenes del conjunto de datos y agregar una columna adicional "IS_Leaf" (Boolean). Entonces podría comprobar el valor del campo. Si el valor es AGREGADO TRUE, utilice de lo contrario mi expresión de fórmula anterior (DisplayOfValues).

Desafortunadamente no sé si y cómo traducir esto en una fórmula DAX o si es posible.

HOLA @framas,

¿Ha visto el siguiente blog sobre el identificador de jerarquía de elementos primarios y secundarios y los ha transformado en la estructura jerárquica general? Probablemente ayuda con su escenario.

Jerarquías padre-hijo
Después de reconstruir la estructura jerárquica, las funciones de agregado de matriz predeterminadas pueden trabajar con ellas.

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.
AllisonKennedy
Super User
Super User

@framas Usted necesita de alguna manera agregar la 'hoja' a las filas de la matriz, por lo que esto sería 'descripción de hoja' supongo en su escenario de muestra? para poder hacer esto, debe ser un esquema de copo de nieve, por lo que debe tener jerarquía conectada a la hoja conectada a hechos. Sus datos de ejemplo son demasiado abstractos para mí para conectar los puntos y proporcionar más ejemplos - ¿son las entradas de hoja las mismas para todas las jerarquías, o diferentes para cada una?


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Anonymous
Not applicable

@AllisonKennedy

Las hojas en mi jerarquía son las órdenes de una tienda. Los pedidos de una tienda pueden variar de una tienda a la tienda, por lo que no son idénticos para todas las tiendas. He adaptado el post y el powerbi-file en consecuencia, para que sea más claro.

Ya he intentado añadir el orden a las "filas" del objeto visual de matriz. Pero eso no funcionó. Otro problema es que la jerarquía está desequilibrada. Por ejemplo, las órdenes pueden aparecer en el nivel 5, así como en el nivel 4 de la jerarquía. Esto tiene la consecuencia de que tengo nodos mostrados sin texto.


Espero que esto te ayude y haga que mi ejemplo sea un poco más comprensible.

Gracias por la ayuda
Marcos

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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