JensHN
Hola,
mi modelo de datos contiene las dos tablas «Trabajos» e «Historia», conectadas por 1:n.
La tabla «Trabajos» tiene una columna simple de ID y nombre.
La tabla «Historial» tiene una ID, una ID de trabajo (basada en la tabla de trabajos), un estado (cada estado tiene un número específico) y una marca de tiempo cuando el trabajo cambió de estado.
Mi problema es, ¿cómo selecciono trabajos en función de su historial?
Por ejemplo:
Quiero saber cuántos trabajos pasaron del estado 1 al 3 sin el 2. En los datos de muestra solo está el trabajo C.
¿Cuántos trabajos están en el estado 3 y no han estado en el estado 2 en ningún momento anterior? En los datos de muestra no es Trabajo.
JensHN
En respuesta a v-cherch-msft
Hola @v-cherch-msft
gracias por tu rápida repetición.
Su solución mostrada funciona bien para los dos escenarios mencionados. Como siempre, lamentablemente la realidad es mucho más compleja. Los requisitos para filtrar un escenario de historial específico pueden cambiar diariamente. Crear una fórmula DAX es demasiado complejo para el usuario final.
Mi idea es crear un archivo calculado con los números de estado. En la visualización, el usuario final puede aplicar un simple «filtro de contenido» en este campo.
Jobhistory = CONCATENATEX(RELATEDTABLE(History); History[Status];)
v-cherch-msft
Hola @JensHN
Puede crear medidas para obtener los valores. Por ejemplo:
NextStatus = CALCULATE ( MAX ( History[Status] ), FILTER ( ALLEXCEPT ( History, History[Job ID] ), History[ID] = MAX ( History[ID] ) + 1 ) )
Status1-3 = COUNTROWS(FILTER(History,History[Status]=1&&[NextStatus]=3)) //how many jobs went from status 1 to 3 without 2
HasStatus2 = VAR a = MAXX ( FILTER ( ALL ( History ), History[Status] = 3 ), History[ID] ) VAR b = CALCULATETABLE ( VALUES ( History[Status] ), FILTER ( History, History[ID] < a ) ) RETURN IF ( 2 IN b, 1 )
InStatus3 =
VAR a =
MAXX ( FILTER ( ALL ( History ), History[Status] = 3 ), History[ID] )
RETURN
IF (
[HasStatus2] = BLANK (),
CALCULATE ( DISTINCTCOUNT ( Jobs[Name] ), FILTER ( History, History[ID] < a ) )
) //How many jobs are in status 3 and have not been status 2 any time before
Saludos,
cherie
JensHN
En respuesta a v-cherch-msft
Hola @v-cherch-msft
gracias por tu rápida repetición.
Su solución mostrada funciona bien para los dos escenarios mencionados. Como siempre, lamentablemente la realidad es mucho más compleja. Los requisitos para filtrar un escenario de historial específico pueden cambiar diariamente. Crear una fórmula DAX es demasiado complejo para el usuario final.
Mi idea es crear un archivo calculado con los números de estado. En la visualización, el usuario final puede aplicar un simple «filtro de contenido» en este campo.
Jobhistory = CONCATENATEX(RELATEDTABLE(History); History[Status];)