Get certified in Microsoft Fabric—for free! For a limited time, the Microsoft Fabric Community team will be offering free DP-600 exam vouchers. Prepare now
Hola a todos.
Tengo una mesa desconectada que estoy usando como cortadora y luego tengo esta tabla de hechos que es ancha en lugar de larga. Lamentablemente, no es posible para mí despivot los datos, ya que no tengo control sobre ninguno de los aspectos de modelado de datos. Sin embargo, lo que tengo que hacer es poder resumir los importes en función de mis valores de segmentación de datos.
Mi tabla de segmentación de datos desconectada tiene estos valores:
Id | Valor |
1 | Abc |
2 | Def |
3 | Xyz |
Mientras que mi tabla de hechos tiene datos de ejemplo de:
Fecha | Abc | Def | Xyz |
1/1/2020 | 100 | 200 | 400 |
2/1/2020 | 200 | 400 | 800 |
3/1/2020 | 300 | 600 | 1200 |
Así que dentro de mi segmentación de datos, si selecciono, por ejemplo, ABC y XYZ el retorno que espero sería este (tenga en cuenta que esto todavía debe ser desconectado):
¡Cualquier ayuda sería muy apreciada!
Solved! Go to Solution.
@amitchandak ¡Muy bien! Tuve que hacer un pequeño ajuste, pero la idea es un buen comienzo!
Measure =
IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 1), [ID], 1), SUM('Fact'[ABC]), BLANK())
+ IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 2), [ID], 2), SUM('Fact'[DEF]), BLANK())
+ IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 3), [ID], 3), SUM('Fact'[XYZ]), BLANK())
Sólo tomando su idea, construí esto un poco más lejos para obtener los mismos resultados, pero todavía no como .. dinámico como me gustaría. ¿Crees que siempre es posible hacerlo más a prueba de futuro?
A_Bit_More_Streamlined =
VAR _Values = VALUES(Slicer[Value])
VAR _Tbl =
GENERATE(
_Values,
ROW(
"SUM",
SWITCH( [Value],
"ABC", SUM('Fact'[ABC]),
"DEF", SUM('Fact'[DEF]),
"XYZ", SUM('Fact'[XYZ])
)))
RETURN
SUMX(_Tbl, [SUM])
Hola, sí, esto se puede hacer, pero no se debe hacer. Los datos deben ser altos y delgados.
El problema es que termina con demasiadas combinaciones que deben mantenerse cada vez que hay un cambio en los datos. Este es un ejemplo de cómo no puede hacerlo como debe hacerlo.
Realmente necesita volver al autor de los datos, obtener acceso y despivot en la consulta de energía.
@hnguyen76 , Pruebe una medida como
if(maxx(filter(allselected(Table1), Table[Value]="ABC"),Table1[Value]), Sum(Table2[ABC]),blank())
+if(maxx(filter(allselected(Table1), Table[Value]="DEF"),Table1[Value]), Sum(Table2[DEF]),blank())
+if(maxx(filter(allselected(Table1), Table[Value]="XYZ"),Table1[Value]), Sum(Table2[XYZ]),blank())
unpivot será la mejor opción, Si es posible
@amitchandak ¡Muy bien! Tuve que hacer un pequeño ajuste, pero la idea es un buen comienzo!
Measure =
IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 1), [ID], 1), SUM('Fact'[ABC]), BLANK())
+ IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 2), [ID], 2), SUM('Fact'[DEF]), BLANK())
+ IF(CONTAINS(FILTER(ALLSELECTED(Slicer), [ID] = 3), [ID], 3), SUM('Fact'[XYZ]), BLANK())
Sólo tomando su idea, construí esto un poco más lejos para obtener los mismos resultados, pero todavía no como .. dinámico como me gustaría. ¿Crees que siempre es posible hacerlo más a prueba de futuro?
A_Bit_More_Streamlined =
VAR _Values = VALUES(Slicer[Value])
VAR _Tbl =
GENERATE(
_Values,
ROW(
"SUM",
SWITCH( [Value],
"ABC", SUM('Fact'[ABC]),
"DEF", SUM('Fact'[DEF]),
"XYZ", SUM('Fact'[XYZ])
)))
RETURN
SUMX(_Tbl, [SUM])
No @hnguyen76,
Puede unpivot incluso si la tabla es ancha. Puede intentar seleccionar la columna Fecha y seleccionar Otras columnas unpivot. Cuando la tabla tiene una nueva columna que se debe agregar y Power BI completará automáticamente el unpivot.
Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Check out the October 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.