Calcule delta entre valores en la columna según el valor en otra columna

Un usuario Pregunto ✅

tsoeste

Hola,

Tengo una tabla que se ve así (Table1):

Etiqueta ID de versión Valor
A 1 1,5
B 1 2,1
C 1 4,5
A 2 1,1
B 2 1,4
C 2 2,3
A 3 3,1

Y otra tabla que también contiene de la columna Versión (Tabla2):

Fecha ID de versión
1.1.2019 1
1.1.2020 2
1.1.2021 3

Como quiero usar dos segmentaciones para seleccionar los ID de versión, creé dos copias de Table2: son Table21 y Table22 y, por supuesto, existe una relación entre las columnas de ID de versión.

Lo que me gustaría hacer es obtener para cada etiqueta el delta entre los valores en la columna «Valor», según el ID de versión (el usuario siempre debe seleccionar dos versiones a través de dos segmentaciones en mi informe para obtener los deltas), por lo que tener seleccioné VersionID 1 y VersionID 2 Quiero mostrar en mi informe una tabla como esta:

Etiqueta prop_delta
A 0,4
B 0,7
C 2,2

Pensé que este sería un problema bastante trivial, sin embargo, simplemente no puedo hacerlo funcionar.

Lo que tengo hasta ahora es el siguiente DAX para mi medida:

prop_delta =
var selected_verID1 = SUMMARIZE(FILTER(Table21,Table21[VersionID] IN ALLSELECTED(Table21[VersionID])),Table21[VersionID])
var selected_verID2 = SUMMARIZE(FILTER(Table22,Table22[VersionID] IN ALLSELECTED(Table22[VersionID])),Table22[VersionID])
RETURN

Esto me da correctamente los ID de versión que se seleccionaron. Entonces, para el resto de mi cálculo, esperaba que algo así hiciera el trabajo:

CALCULATE(SUMX(FILTER(Table1, Table1[VersionID] =selected_verID1), Table1[Value])-SUMX(FILTER(Table1, Table1[VersionID] =selected_verID2), Table1[Value]))

Sin embargo, esto no funciona en absoluto y solo crea un error «Se suministró una tabla de valores múltiples donde se esperaba un valor único».

¡Gracias por cualquier ayuda!

tsoeste

En respuesta a tsoeste

Ok, finalmente lo arreglé simplemente creando una nueva medida y copiando mi código en esta nueva medida. Ahora funciona, así que supongo que el error fue solo un error.

pabloolding

Suponiendo que su modelo se parece a esto

PaulOlding_3-1620579282737.png

entonces una medida prop_delta como esta

PaulOlding_4-1620579956151.png

Da un resultado como este

PaulOlding_2-1620579243550.png

tsoeste

En respuesta a pabloolding

Hola Pablo,

gracias por tu consejo – sin embargo esto todavía me da la Error «Se proporcionó una tabla de valores múltiples donde se esperaba un solo valor».

tsoeste

Ok, mientras tanto, encontré una solución relativamente simple que funciona siempre que solo use una var en ella (por lo tanto, seleccionó_verID1 o seleccionó_verID2 debe reemplazarse por un número estático). Esto funciona:

prop_delta =
var selected_verID1 = SUMMARIZE(FILTER(Table21,Table21[VersionID] IN ALLSELECTED(Table21[VersionID])),Table21[VersionID])
var selected_verID2 = SUMMARIZE(FILTER(Table22,Table22[VersionID] IN ALLSELECTED(Table22[VersionID])),Table22[VersionID])
RETURN
CALCULATE(CALCULATE(SUMX(FILTER(Table1, Table1[VersionID] =selected_verID1), Table1[Value]))-CALCULATE(SUMX(FILTER(Table1, Table1[VersionID] = 3), Table1[Value])))

….. pero si reemplazo el «3» en el segundo FILTRO por selected_verID2 obtengo nuevamente el mismo error. ¿Alguien puede decirme cuál es el problema aquí?

tsoeste

En respuesta a tsoeste

Ok, finalmente lo arreglé simplemente creando una nueva medida y copiando mi código en esta nueva medida. Ahora funciona, así que supongo que el error fue solo un error.

daxer

daxer_0-1620387916077.pngdaxer_1-1620388052438.png

daxer_2-1620388158157.pngdaxer_3-1620388205999.png

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *