Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Contiene funcionalidad en Power Query para Power BI

Hola.

Soy nuevo en DAX y esperaba que hubiera una manera de hacer esto:
Tengo una columna con mala calidad de datos, lo que significa que hay muchas variaciones que pueden estar presentes con la palabra Alta. No tengo una lista exhaustiva de cuáles podrían ser. Algunos ejemplos, Alto Impacto, Moderado-Alto, Mod-Alto, ALTO, Alto, etc. ¿Hay alguna manera de saber si esta cadena contiene High (en cualquier lugar que no distinga entre mayúsculas y minúsculas, luego reemplace el valor en ese campo con High?

Conozco Find & Replace y Substitute pero los que tienes que saber qué derivaciones puede haber.

Gracias de antemano.

7 Replies

  • Hola @Krc721

    Utilice la función DAX CONTAINSSTRING en la columna calculada
    Buscar ejemplo - https://learn.microsoft.com/en-us/dax/containsstring-function-dax

    https://dax.guide/containsstring/

    https://www.sqlbi.com/tv/containsstring-containsstringexact-dax-guide/

    Hazme saber si eso funciona para ti


    Si su requerimiento está resuelto, haga de ESTA RESPUESTA una SOLUCIÓN ✔️ y ayude a otros usuarios a encontrar la solución rápidamente. Por favor, pulsa el botón ME GUSTA 👍 si este comentario te ayuda.

    Gracias
    Piyush
    Linkedin

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias por su respuesta. Esto crea una nueva columna con valor numérico, pero no reemplaza las palabras de la columna existente para estandarizar una palabra, High, que se usará en lógica. No conozco todas las variaciones que podrían existir en los datos, así que ¿no dejaría esto fuera algunos registros?

  • Aunque cuando cargue datos en Power BI será como desee porque Power BI no distingue entre mayúsculas y minúsculas
    Pero todo esto se puede hacer en Power Query de la manera que desee

    Por favor, pruebe esto

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias por pegar la imagen, ya que estoy bloqueado para las descargas. Lo intentaré.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Creo que podría funcionar; sin embargo, tal como está escrito, hace que todos los valores nulos = Alto. Así que cambié x <> a x= eso no sucede. Es necesario probar algunos otros valores en los datos que no están presentes ahora (como bajo, medio) para asegurarse de que todo funciona correctamente. ¡Muchas gracias!

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola Ahmed, cerré la solución prematuramente. Lo probé ya que la columna tiene otros valores y los está convirtiendo todos a Alto cuando no debería. ¿Alguna idea? Hay muchos valores en la columna y no hay una lista definida de valores establecidos, de ahí la solicitud de que algo se vea y solo convierta los que tienen High, deje null / blank y los que no tienen High en ellos como están.

  • @Ahmedx @PijushRoy Hola chicos, trabajé y obtuve la solución.

    Table.ReplaceValue(#"Cambiar valor", cada [Clasificación], cada uno if Text.Contains([Clasificación],"Alto",Comparer.OrdinalIgnoreCase) entonces "Alto" else [Clasificación], Replacer.ReplaceValue, {"Clasificación"})

    En los pasos aplicados, hice un paso de inserción después y puse la fórmula allí. Usaba la misma columna, Rating, que mis valores originales y dejaba null/blank como null/blank y otros valores sin la palabra High en ellos solos. Se manejaron todas las derivaciones de High en el conjunto de datos (todavía hay que probar el Mod-High), pero hasta ahora funcionó. Solo quería compartir, ya que la ayuda de ambos me dio un gran impulso para encontrar una solución.