No se puede ejecutar la búsqueda de texto múltiple en una cadena para crear una nueva columna, incluso a través de Switch

Un usuario Pregunto ✅

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.

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"
)

No se puede ejecutar una búsqueda de texto múltiple en una cadena para crear una nueva columna, incluso a través de Switch.JPG

¡Atentamente!

Valle

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"
)

No se puede ejecutar una búsqueda de texto múltiple en una cadena para crear una nueva columna, incluso a través de Switch.JPG

¡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

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?

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é.

No se puede ejecutar una búsqueda de texto múltiple en una cadena para crear una nueva columna, incluso a través de Switch2.jpg

¡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?

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")

Captura.PNG

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?

Deja un comentario

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