The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event! Join us in Stockholm, Sweden from September 24-27, 2024.
2-for-1 sale on June 20 only!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
¡Hola! 🙂
Estoy tratando de "traducir" una declaración de caso compleja en DAX. He intentado 'Cambiar función' y está bien:
Nuevo campo : SWITCH (
VERDADERO (),
table1[Categoría] - "color de pelo", "LUXE",
table1[Categoría] - "cuidado del cabello", "LUXE",
table1[Categoría] - "estilo de pelo", "LUXE",
... etcetera
"Muy"
)
¿Cuál es el problema? Cuando dentro de la instrucción case tengo más opciones para la misma cadena:
Caso
CUANDO REGEXP_MATCH (Campo 1, ".*Color del cabello.*|. *Cuidado del cabello.*|. *Estilo de pelo.*") ENTONCES "Hair"
CUANDO REGEXP_MATCH (Campo 1, ".*Piel-Sol.*|. *Cara de piel.*|. *Piel-Cuerpo.*") ENTONCES "Piel"
... etcetera
ELSE "Otros"
Final
¿Cómo puedo traducir cada una de estas opciones: ".*Skin-Sun.*|. *Cara de piel.*|. *Piel-Cuerpo.*"|... etc" dentro de mi función Switch en DAX?
¡Muchas gracias de antemano! 🙂
Solved! Go to Solution.
@avargas-- , Usted puede probar como
Nuevo campo : SWITCH (
VERDADERO (),
table1[Categoría] en ("color de pelo","cuidado del cabello","estilo de pelo"), "LUXE",
"Muy"
)
Pero si necesita buscar, entonces necesita usar la búsqueda, compruebe
No @avargas-- ,
¿Esto podría funcionar?
_newField =
SWITCH(
TRUE(),
CONTAINSSTRING(table1[Category], "Hair"), "Hair",
CONTAINSSTRING(table1[Category], "Skin"), "Skin",
...
)
@avargas-- , Usted puede probar como
Nuevo campo : SWITCH (
VERDADERO (),
table1[Categoría] en ("color de pelo","cuidado del cabello","estilo de pelo"), "LUXE",
"Muy"
)
Pero si necesita buscar, entonces necesita usar la búsqueda, compruebe
Hola Amit,
Está lanzando un error de Operador o expresiones '()' no se suportó en este contexto.
Las maneras siguientes pueden sin embargo trabajar:
NEW_FIELD = CAMBIAR (
VERDADERO (),
CONTAINSSTRING(Tabla1[Categoría],"color de pelo"), "LUXE",
CONTAINSSTRING(Tabla1[Categoría],"cuidado del cabello"),"LUXE",
CONTAINSSTRING(Tabla1[Categoría],"estilo de pelo"), "LUXE"
)
y
NEW_FIELD = CAMBIAR (
VERDADERO (),
CONTAINSSTRING(Tabla1[Categoría],"color de pelo")|| CONTAINSSTRING(Tabla1[Categoría],"cuidado del cabello")||
CONTAINSSTRING(Tabla1[Categoría],"estilo de pelo"), "LUXE"
)
Pero me gustaría ver , si podemos dar varios valores en la declaración "IN" para evitar dar el nombre de la columna, usando la función CONTAINSSTRING una y otra vez, como funciona en Tableau mediante el símbolo "|" y no es necesario dar el nombre de la columna repetidamente CUANDO REGEXP_MATCH (Campo 1, "*. Hair-Color.*|*. Hair-Care.*|. *Hair-Style.*") THEN "Hair"
Hola @6283710270 ,
Puede usar la respuesta de Amit, pero debe usar llaves (no paretheses estándar) alrededor de la lista 'IN', ya que es una lista. El cálculo de Amit actualizado se vería así:
New field =
SWITCH (
TRUE (),
table1[Category] IN {"hair-color", "hair-care", "hair-style"}, "LUXE",
table1[Category] IN {"Skin-Sun", "Skin-Face", "Skin-Body"}, "SKIN",
"Other"
)
Ya sugerí la opción CONTAINSSTRING, pero el método de Amit, correctamente implementado, es mucho más eficaz, creo.
Pete
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the June 2024 Power BI update to learn about new features.