Adilk
Hola,
tengo una columna [Ad Set Name] que tiene texto, como millenials, estudiantes. Quiero crear una nueva columna donde busque la palabra clave principal y luego asigne un valor en la nueva columna.
Por ejemplo, si el conjunto de anuncios contiene la palabra «estudiantes», entonces el segmento (columna nueva) debería = «Estudiantes»
Demás,
Si contiene «creadores», entonces Segmento = «Creadores»
Aquí está la fórmula que estoy intentando, pero muestra todo como desconocido.
Segment =
SWITCH (
true (),
SEARCH ( "Students", 'Table'[Ad Set Name], 1, 0 ) = 1, "Students",
SEARCH ( "creators", 'Table'[Ad Set Name], 1, 0 ) = 1, "Creators",
"UNKNOWN"
)
Cualquier ayuda con esto.
Gracias.
v-jiascu-msft
Hola @adilk,
¿Qué tal esta fórmula?
Segment = SWITCH ( TRUE (), SEARCH ( "Students", table1[Ad Set Name], 1, 0 ) > 0, "Students", SEARCH ( "Creators", 'table1'[Ad Set Name], 1, 0 ) > 0, "Creators", "UNKNOWN" )
¡Atentamente!
Valle
v-jiascu-msft
Hola @adilk,
¿Qué tal esta fórmula?
Segment = SWITCH ( TRUE (), SEARCH ( "Students", table1[Ad Set Name], 1, 0 ) > 0, "Students", SEARCH ( "Creators", 'table1'[Ad Set Name], 1, 0 ) > 0, "Creators", "UNKNOWN" )
¡Atentamente!
Valle
Adilk
En respuesta a v-jiascu-msft
@v-jiascu-msft @Anónimo
Hola Dave, la fórmula que proporcionaste funcionó. ¿Puede ayudarme a entender qué estaba mal con el enfoque Isnumber (búsqueda ()) que habíamos usado anteriormente? gracias
v-jiascu-msft
En respuesta a Adilk
Hola @adilk,
Eso es porque Search() siempre devuelve números. Isnumber() siempre será verdadero. Consulte: https://msdn.microsoft.com/en-us/library/ee634235.aspx.
>>>Devoluciones el numero del personaje en el que se encuentra por primera vez un carácter específico o una cadena de texto, leyendo de izquierda a derecha. La búsqueda no distingue mayúsculas de minúsculas ni acentos.
¡Atentamente!
Valle
Adilk
En respuesta a v-jiascu-msft
@v-jiascu-msft
en mi última fórmula, tenía
ISNUMBER(SEARCH ("Students", table1[Ad Set Name],1,0 )), "Students",
¿El 0 dentro de la parte de búsqueda está arruinando la fórmula, porque si DAX no encuentra la palabra «estudiantes», devuelve un 0 y dado que la búsqueda está envuelta dentro de IsNumber, siempre se vuelve verdadera?
v-jiascu-msft
En respuesta a Adilk
Hola @adilk,
No, el tipo de devolución de Search() son números. Puedes verlo en la instantánea a continuación. El número 12. Presta atención a la fórmula que usé.
¡Atentamente!
Valle
Adilk
En respuesta a v-jiascu-msft
@v-jiascu-msft
No tengo completamente claro por qué funcionó su fórmula.
En Excel tradicional, tengo claro que la función de búsqueda proporciona la posición ordinal de lo que se busca.
En la fórmula Dax Switch, se establece en TRUE,
cuando usamos la fórmula que proporcionó, la función de búsqueda solo proporciona la posición ordinal pero no devuelve explícitamente un VERDADERO/FALSO. ¿Cómo puede la declaración de cambio asignar el segmento?
v-jiascu-msft
En respuesta a Adilk
Hola @adilk,
La parte azul es un parámetro completo de Switch que devolverá True/False. No la función de búsqueda.
Segment = SWITCH ( TRUE (), SEARCH ( "Students", table1[Ad Set Name], 1, 0 ) > 0, "Students", SEARCH ( "Creators", 'table1'[Ad Set Name], 1, 0 ) > 0, "Creators", "UNKNOWN" )
¡Atentamente!
Valle
Adilk
En respuesta a v-jiascu-msft
@v-jiascu-msft
¡Entendido! muchas gracias.
Anónimo
Hola @adilk,
Para mí, la fórmula DAX funciona:
Segment = SWITCH(TRUE()
;SEARCH("Student";Table2[AdSetName];1;0) = 1; "Student";
SEARCH("Creator";Table2[AdSetName];1;0) = 1; "Creator";"UNKNOWN")
Como puede ver en la captura anterior, la fórmula devuelve los resultados esperados. Como no sabía cómo se veían sus datos, asumí algo como esto. Si todavía no funciona para usted, tal vez podría compartir algunos datos ficticios para que podamos buscar el error.
Saludos,
L. Meijdam
Adilk
En respuesta a Anónimo
@Anónimo
@n su ejemplo, usó punto y coma en lugar de coma como separador.
Datos de muestra adjuntos aquí:
Column A (Ad Set) Column B (Segment) - What I want Ad date - Segment [Creators] Creators Ad date - Segment [Millenials] Millenials
@BeemsC
Anónimo
En respuesta a Adilk
Hola @adilk,
El uso de comas o punto y coma depende de la configuración de su computadora/Power BI, por lo que eso no hace la diferencia. ¿Pero su salida solo devuelve «DESCONOCIDO»? Estoy seguro de que ya lo comprobó, pero escribió la palabra correspondiente correctamente en su fórmula DAX, también verifique las letras mayúsculas, por ejemplo.
En su primer ejemplo, solo incluyó «Estudiante» y «Creador» en su muestra de datos. Veo que usó «Millenials» ya que no incluyó una búsqueda de «Millenials». Se espera que devuelva «DESCONOCIDO» para estos registros. . (quizás podría crear un poco más de datos de muestra ya que esto es un poco confuso)
Saludos,
L. Meijdam
Adilk
En respuesta a Anónimo
@Anónimo
Gracias por señalar en coma vs punto y coma.
Pensé que la función de búsqueda no distinguía entre mayúsculas y minúsculas y que no importaría si la columna tenía creadores o creadores, ambos deberían clasificarse como ‘Creadores’ en la nueva columna.
Ad Set New Column Ad Date - [Creators] Creators Ad Date - [Old device owners] Old device owners Ad date - [Purposeful Millennials] Purposeful Millennials Ad date - [Students] Students
PD: entré en el editor de consultas y creé una columna condicional. Ese método funciona, pero también quiero saber sobre el método de la función Switch DAX.
Anónimo
En respuesta a Adilk
Hola @adilk,
Me alegro de que haya encontrado una forma que funcione para usted, sobre la función SWITCH aquí tiene algunas fuentes que pueden ayudarlo a comprender mejor 🙂
https://msdn.microsoft.com/en-us/library/gg492166.aspx —– Documentación sobre la función SWITCH
https://community.powerbi.com/t5/Desktop/SWITCH-statement-in-DAX-using-a-quot- between-this-value-and… — Un usuario explica cómo puede usar SWITCH función en esta publicación de la comunidad
https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true/ — publicación sobre la función SWITCH
https://powerpivotpro.com/2012/06/dax-haciendo-el-caso-para-cambiar/ — publicar sobre la función SWITCH
Me temo que no puedo decirle por qué no funcionó para usted ya que la fórmula funcionó en mi extremo … De todos modos, espero que estos enlaces puedan ayudarlo un poco.
Saludos,
L. Meijdam
Adilk
En respuesta a Anónimo
@Anónimo
En su ejemplo, los datos de la columna de referencia comenzaron con lo que quiero buscar (por ejemplo, Creadores), es lo que veo en la captura de pantalla. Por lo tanto, su fórmula DAX usa la fórmula de búsqueda y luego verifica su posición ordinal… si es = 1, entonces se clasifica como Creador… Por lo tanto, el booleano en DAX… al menos eso es lo que entendí.
Los datos de muestra que había compartido tenían más texto seguido del segmento que quiero extraer…
p.ej
Fecha del anuncio – [Creators]…
Esto sería decir,
20171122 Publicación de Facebook – [Creators]
Cambié la fórmula DAX a esto ahora y ahora solo se recupera [Students] como segmento]….No más incógnitas…
Segment = SWITCH ( true (), ISNUMBER(SEARCH ("Students", table1[Ad Set Name],1,0 )), "Students", ISNUMBER(SEARCH ("Creators", 'table1'[Ad Set Name],1,0 )),"Creators", "UNKNOWN" )
¿Es este el enfoque correcto y, en caso afirmativo, cómo puedo mejorar esta fórmula para obtener los segmentos?
Anónimo
En respuesta a Adilk
Hola @adilk,
¿Cuál es el tipo de datos de «20171122 Publicación de Facebook – [Creators]»estos registros ?
Saludos,
L. Meijdam
Adilk
En respuesta a Anónimo
@Anónimo
Sería en texto.
Anónimo
En respuesta a Adilk
Hola @adilk,
Eso es extraño, no puedo recrear su error, ¿quizás podría compartir un archivo pbix ficticio?
Saludos,
L. Meijdam
BeemsC
¿Podría proporcionar algunos datos de muestra?