Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Buen día a todos,
Hoy estoy tratando de crear eventualmente una medida para mostrar una suma de un valor en un gráfico de barras o líneas, donde el valor solo se muestra una vez, según el máximo de fase.
Para hacer esto, necesito datos de 2 tablas. No puedo usar columnas calculadas, debido al uso de DirectQuery, por lo que debe hacerse en una medida. La Tabla1 es una tabla de Hechos, la Tabla2 es una tabla de Dimensiones. Debajo una abreviatura de las tablas.
Cuadro 1 | |||
IDENTIFICACIÓN | Fase | Importe | etc. |
1 | 1 | 20 | |
1 | 2 | 20 | |
1 | 3 | 20 | |
2 | 1 | 31 | |
3 | 1 | 647 | |
3 | 2 | 647 | |
4 | 1 | 684 | |
5 | 1 | 645 | |
5 | 2 | 645 | |
5 | 3 | 645 |
Cuadro 2 | ||
IDENTIFICACIÓN | Importe | etc. |
1 | 20 | |
2 | 31 | |
3 | 647 | |
4 | 684 | |
5 | 645 | |
6 | 54897 | |
7 | 5646312 | |
8 | 6846 | |
9 | 465486 | |
10 | 58 |
No hay una relación directa activa entre las 2 columnas. Sin embargo, existe una relación activa entre el 2, basada en la columna ID.
Ahora la pregunta es. ¿Cómo obtendré una tabla / medida que mostrará la Tabla 1, pero solo el MAX de Fase? Gustar:
Resultado de la tabla | |||
IDENTIFICACIÓN | Fase | Importe | etc |
1 | 3 | 20 | |
2 | 1 | 31 | |
3 | 2 | 647 | |
4 | 1 | 684 | |
5 | 3 | 645 |
Eventualmente quiero tener un gráfico de barras. Donde una suma de cantidad si se muestra como valor, y Fase se muestra en el eje X. Entonces, en este ejemplo, eso significaría que la Fase 1 muestra 710, la Fase 2 muestra 647 y la Fase 3 muestra 665.
He intentado usar Resumir
RESUMIR(
Tabla 1,
Tabla2[ID],
"temp1",
MAX(Tabla1[cantidad]))
y lookupvalue. (con y sin userelationship)
CALCULAR(
LOOKUPVALUE(
Tabla2[Importe],
Tabla1[Fase], MAX(Tabla1[Fase]),
Tabla2[ID],VALORES(Tabla2[ID]])
), USERELATIONSHIP(tabla1,tabla2))
¡Me encantaría escuchar tus pensamientos!
@decarsul
Aquí está el archivo de ejemplo actualizado https://we.tl/t-sttvJNdSEV
Amount Measure =
VAR T1 =
SUMMARIZE ( 'Table 1', 'Table 1'[ID], 'Table 1'[Phase] )
VAR T2 =
ADDCOLUMNS (
T1,
"@MaxPhase", CALCULATE ( MAX ( 'Table 1'[Phase] ), ALLEXCEPT ( 'Table 1','Table 1'[ID] ) ),
"@Amount",
CALCULATE (
SUM ( 'Table 2'[Amount] ),
USERELATIONSHIP ( 'Table 2'[ID], 'Table 1'[ID] ),
CROSSFILTER ( 'Table 2'[ID], 'Table 1'[ID], BOTH )
)
)
VAR T3 =
FILTER ( T2, [Phase] = [@MaxPhase] )
RETURN
SUMX ( T3, [@Amount] )
Parece funcionar de nuevo. ¡Es hora de validar!
Hola @decarsul
Realmente no desapruebo la necesidad de la Tabla 2. Aquí hay una solutio basada en la Tabla 1 con una columna calculada agregada https://we.tl/t-MV57LgfmCG
Latest Phase =
CALCULATE (
MAX ( 'Table 1'[Phase] ),
ALLEXCEPT ('Table 1', 'Table 1'[ID] )
)
Amount Measure =
SUMX (
VALUES ( 'Table 1'[ID] ),
CALCULATE ( SELECTEDVALUE ( 'Table 1'[Amount] ) )
)
La tabla 2 tiene la cantidad, mientras que la tabla 1 no la tiene. Tal vez hubiera sido mejor no incluir ese en la muestra anterior. Como tal, edite y elimine esa columna en particular para reducir la confusión.
Y como se mencionó, como estoy usando DirectQuery, no puedo crear columnas calculadas, porque el servicio PowerBI en el que publicamos no lo admite.
@decarsul
Aquí tienes https://we.tl/t-iaJTiS2ZNa
Amount Measure =
CALCULATE (
SUM ( 'Table 2'[Amount] ),
USERELATIONSHIP ( 'Table 2'[ID], 'Table 1'[ID] ),
CROSSFILTER ( 'Table 2'[ID], 'Table 1'[ID], BOTH )
)
Muy bien, eso parece funcionar.
No era consciente de la función de filtro cruzado.
¡Es hora de la validación!
@decarsul
No estoy seguro sobre el resultado de la agregación. Depende de su lógica de negocio, pero no será un problema para enmendar.
así que acabo de validar. No cuadra.
Me falta el filtro MAX en el nivel de fase.
En este momento, está contando la cantidad por Fase, pero solo quiero que cuente en función del MAX de la Fase.
Simplemente agregar un filtro MAX no funciona.
Entonces, ¿cómo estoy introduciendo el MAX para la fase nr?