Declaración de CASO a DAX

Un usuario Pregunto ✅

JMWDBA

Entonces tengo lo siguiente:

CASO

CUÁNDO [Academic Career] = Licenciatura ENTONCES [CGPA UG]

CUÁNDO [Academic Career] = Maestros ENTONCES [CGPA GR]

ELSE ‘Sin CGPA’

FIN

¿Cómo cambio esto a DAX para Power BI? ¿Es posible tal enfoque en DAX? [Academic Career], [CGPA UG], y [CGPA GR] son columnas. Quiero crear una nueva columna que tome el valor de cada una de esas dos columnas según la declaración del caso.

KJinete

En respuesta a JMWDBA

Tenía prisa y no cerré los paréntesis.

MeasureorColumn= SWITCH(
	Table[Academic Career],
	"Undergraduate",FORMAT(Table[CGPA UG], "General Number"),
	"Masters", FORMAT(Table[CGPA GR], "General Number"),
	"No CGPA"
)

KJinete

En respuesta a JMWDBA

Entonces, si lo entiendo correctamente, tiene 2 columnas para diferentes niveles de licenciatura y posgrado de CGPA, y desea fusionarlas en una columna que muestre lo que había en CGPA UG si son una licenciatura y CGPA GR si son una estudiante de posgrado ¿Es eso correcto?

CGPAMerged = SWITCH(
	TableName[Academic Career],
	"Undergraduate", TableName[CGPA UG],
	"Master's", TableName[CGPA GR],
	BLANK()
)

Esto le daría una sola columna que fusionaría las 2 según el nivel del estudiante en la columna AB en sus datos de muestra. El último argumento se vuelve en blanco si su carrera no es de grado ni de maestría. Entonces una medida simple como

Avg CGPA = AVERAGE(TableName[CGPAMerged])

… le daría el promedio por plan si lo colocara en un gráfico junto con la columna AC.

KJinete

En respuesta a JMWDBA

No sé de ninguna razón para eso. La nueva columna CGPAMerged que creó está en la misma tabla que el Plan académico, al igual que en los datos de muestra, ¿verdad? ¿Y la medida es un promedio de esa nueva columna?

Vvelarde

@JMWDBA

Hola. Utilice la función CAMBIAR

MeasureorColumn=Switch(Tabla[Academic Career],»Licenciatura»,Tabla[CGPA UG];»Maestros»,Tabla[CGPA GR],Tabla[NO CGPA])

JoeSQL

Las declaraciones IF anidadas harán el truco:

=SI (
[Academic Career] = «De licenciatura»,
[CGPA UG],
SI ( [Academic Career] = «Maestros», [CGPA GR], «Sin CGPA» )
)

JMWDBA

En respuesta a JoeSQL

Hola @JoeSQL,

Intenté eso y recibí el mensaje «Expresiones que producen variante tipo de datos no se puede utilizar para definir columnas calculadas».

Vvelarde

En respuesta a JMWDBA

@JMWDBA

Este error se debe a que está mezclando tipos de datos. Sospecho de números y textos.

JoeSQL

En respuesta a JMWDBA

Estoy adivinando [CGPA UG] y/o [CGPA GR] contener números. Recibe ese error porque No CGPA es un tipo de datos de texto. Intente sustituir «Sin CGPA» con 0

KJinete

En respuesta a JMWDBA

¿Qué tipo de datos es el [CGPA GR] ¿columna?

JMWDBA

En respuesta a KJinete

Son números decimales. En algunos casos, los valores se presentan como «nulo» en lugar de mostrar simplemente «0». Cero significa que no tienen un CGPA a ese nivel.

2017-05-31_16-20-37.jpg

KJinete

En respuesta a JMWDBA

Use la función FORMATO para cambiar los números a cadenas. Algo como…

MeasureorColumn= SWITCH(
	Table[Academic Career],
	"Undergraduate",FORMAT(Table[CGPA UG], "General Number",
	"Masters", FORMAT(Table[CGPA GR], "General Number",
	"No CGPA"
)

JMWDBA

En respuesta a KJinete

@KHorseman

Esto es lo que conseguí:

2017-05-31_16-35-00.jpg

KJinete

En respuesta a JMWDBA

Tenía prisa y no cerré los paréntesis.

MeasureorColumn= SWITCH(
	Table[Academic Career],
	"Undergraduate",FORMAT(Table[CGPA UG], "General Number"),
	"Masters", FORMAT(Table[CGPA GR], "General Number"),
	"No CGPA"
)

JMWDBA

En respuesta a KJinete

@KHorseman 10.000 gracias!!! ¡¡¡Eso lo hizo!!!

Ahora que tengo los valores en una columna etiquetada como [**bleep** GPA]. ¿Tengo que crear otra columna calculada que tome los valores y los convierta en números enteros y trate el «No CGPA» como 0? ¿Hay un enfoque para esto? DAX es un mundo nuevo y valiente para mí, pero cuanto más encuentro, más aprendo.

KJinete

En respuesta a JMWDBA

No estoy seguro de entender lo que estás preguntando. ¿Cuál es el propósito de esta otra columna?

JMWDBA

En respuesta a KJinete

Hola @KHorseman,

La columna que creamos fue el resultado de que nuestro sistema de información estudiantil generara CGPA para los estudiantes en diferentes columnas en lugar de dar una columna CGPA. Entonces, CGPA UG tendría un CGPA poblado si el nivel de carrera académica de los estudiantes fuera de pregrado y su columna CGPA GR mostraría como 0. Lo mismo si son estudiantes graduados, la columna CGPA UG mostraría como 0 y la columna CGPA GR mostraría un número. Quería poder reflejar como un promedio por programa de grado, así que pensé que necesitaba obtener CGPA independientemente de UG o GR en una columna y permitir que la columna del programa académico fuera el punto para el que se pivotó CGPA. Cada fila representa a un estudiante.

Creé un archivo de demostración de Excel basado en datos reales para no violar la Ley FERPA: https://drive.google.com/open?id=0BxvqEMoNpMLiYUl4bjlmRE5scVk

Entonces, CGPA UG se presenta en la columna U y CGPA GR se presenta en la columna V. Tenga en cuenta que algunos estudiantes tienen un 0 en CGPA UG y GR. Ese sería el caso si aún no tienen un CGPA porque se retiraron de sus cursos indicados con una W en la columna Y.

La Carrera Académica de las personas se presenta en la columna AB.

Así que pensé que si podía obtener el CGPA en una columna y usar la columna AC, entonces podría decir que el CGPA promedio para los estudiantes de MS en Aeronáutica es X.XX.

KJinete

En respuesta a JMWDBA

Entonces, si lo entiendo correctamente, tiene 2 columnas para diferentes niveles de licenciatura y posgrado de CGPA, y desea fusionarlas en una columna que muestre lo que había en CGPA UG si son una licenciatura y CGPA GR si son una estudiante de posgrado ¿Es eso correcto?

CGPAMerged = SWITCH(
	TableName[Academic Career],
	"Undergraduate", TableName[CGPA UG],
	"Master's", TableName[CGPA GR],
	BLANK()
)

Esto le daría una sola columna que fusionaría las 2 según el nivel del estudiante en la columna AB en sus datos de muestra. El último argumento se vuelve en blanco si su carrera no es de grado ni de maestría. Entonces una medida simple como

Avg CGPA = AVERAGE(TableName[CGPAMerged])

… le daría el promedio por plan si lo colocara en un gráfico junto con la columna AC.

JMWDBA

En respuesta a KJinete

Gracias @KHorseman. Eso funcionó perfectamente. Nunca hubiera tenido la cosa SWITCH. un lenguaje totalmente nuevo para mí.

KJinete

En respuesta a JMWDBA

Solo espere hasta que necesite usar un INTERRUPTOR en una medida en lugar de una columna. Es fácil una vez que entiendes lo que está pasando, pero a menudo es confuso la primera vez que lo intentas.

JMWDBA

En respuesta a KJinete

@KHorseman ¡No sé si ser optimista o tener miedo!

El siguiente es el tablero que todo este trabajo ayudó a crear. Supongo que la medida creada para obtener el CGPA promedio es la razón por la cual, al seleccionar un plan académico de los filtros en la parte superior, ¿es lo que evita que el CGPA cambie con el resto de la información?

el visual CGPA se crea usando Card.

2017-06-01_9-50-21.jpg

KJinete

En respuesta a JMWDBA

De acuerdo con la estructura que mostró en sus datos de muestra, esa tarjeta debería cambiar cuando selecciona algo en esa segmentación del Plan académico. Verifique las interacciones visuales y asegúrese de no tener las interacciones desactivadas entre esa tarjeta y esa cortadora.

JMWDBA

En respuesta a KJinete

Lo comprobé y la interacción está activada.

KJinete

En respuesta a JMWDBA

Y no importa lo que seleccione en esa cortadora, ¿todavía dice que el promedio es 3.30?

Deja un comentario

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