Home
» Power BI
»
Uso del editor avanzado de Power Query para extraer valores antes de un texto específico
Uso del editor avanzado de Power Query para extraer valores antes de un texto específico
Para este tutorial, demostraré cómo puede extraer valores antes de cada aparición de un texto específico usando Power Query Advanced Editor. Hay muchas maneras de lograr esto, pero pensé que sería divertido mostrar una solución que esté completamente codificada. Puedes ver el video completo de este tutorial al final de este blog.
Un miembro del publicó este escenario a continuación. La solución completamente codificada que voy a demostrar es más avanzada, pero la dividiré en partes muy pequeñas para que podamos examinar los resultados de cada paso individual.
Uso del editor avanzado de Power Query y las funciones M
Crearé una referencia de la consulta de muestra y agregaré una columna personalizada en la que podamos construir nuestra lógica.
Lo primero que voy a hacer es dividir esa columna de texto. Así que usaremos la función Text.Split y luego colocaremos un paréntesis de apertura. Quiere un texto, por lo que podemos apuntar a nuestra columna Texto. A continuación, quiere un separador como texto. Entonces, entre un conjunto de comillas dobles, podemos agregar ese punto y coma, luego cerrar el paréntesis y presionar OK.
Y con eso, nos da una lista con valores de texto separados.
Todavía tenemos que hacer un poco de limpieza porque podría haber algunos espacios iniciales o finales incluidos en estas cadenas de texto y debemos deshacernos de ellos. Eso significa que tenemos que cambiar el contenido de cada una de estas listas, y hay una función M para eso llamada List.Transform .
Entonces, en la barra de fórmulas, agregaré List.Transform. Quiere una lista y le hemos dado eso, luego pone una coma. Lo siguiente es una transformación, por lo que queremos recortar esos textos. Entonces, agregaré Text.Trim , luego un paréntesis de cierre y presionaré OK.
Ahora, abramos la ventana del editor avanzado de Power Query porque, como dije, quiero dividir esto en partes muy pequeñas. Usaré variables para almacenar resultados intermedios para cada uno de los pasos.
Podemos crear un conjunto de variables delimitadas por comas dentro de una expresión let . Llamaré al primer paso como ListTexts . Ese último paréntesis de cierre es de nuestra tabla que agregó funciones de columna, así que muévalo también a una nueva línea. Al final de esa primera expresión, tenemos que poner una coma, para que podamos agregar una nueva expresión allí mismo.
Luego, creamos un nuevo nombre de variable, al que llamo FindPositions . Toda la cadena ha sido separada y limpiada. Todo lo que tenemos que hacer es encontrar la ubicación de la cadena que estamos buscando. Para hacer eso, usaremos una función llamada ListPositionOf . Agregue paréntesis de apertura y podemos devolver la variable que ya creamos (ListTexts).
A continuación, ponemos el valor que estamos buscando, y son dos A mayúsculas. La contraparte de let está en la cláusula, por lo que debemos agregar eso y devolverlo a FindPositions . Luego, presione Listo.
Esta función toma un tercer parámetro opcional, por lo que en la barra de fórmulas podemos agregar ese tercer parámetro. Y con eso, obtenemos una lista.
El objetivo es extraer el valor antes de la cadena de búsqueda, por lo que debemos regresar a una sola posición. Pero, también tenemos ceros. No hay ningún valor antes del primer valor inicial en esa cadena, y debemos evitar errores, por lo que debemos excluir esos ceros, por lo que volvemos al Editor avanzado nuevamente y agregamos algo de lógica.
Todavía tenemos que volver a una posición. Y así, en el Editor avanzado, podemos usar List.Transform para ayudarnos.
A continuación, usaremos List.Transform para obtener cadenas y acceder a elementos dentro de nuestras listas.
El paso final es combinar todos los valores de texto de la lista en una sola cadena. Entonces, voy a agregar otra línea en nuestra lógica para nuestro resultado con la función, Text.Combine .
Y así es como puede extraer cadenas antes de un texto específico con una solución completamente codificada.
En este tutorial, ha visto cómo extraer cadenas antes de un texto específico, y usamos varias funciones de texto y listas M para realizar esa tarea. Espero que hayas disfrutado este. Puede ver el video tutorial completo a continuación para ver la solución paso a paso en detalle.