Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Necesito ayuda para extraer datos de 'Columna de datos' como se muestra a continuación. La condición de coincidencia de cadena que estoy buscando es "FM-" como se muestra en ID # 1, "FM x" (FM con un espacio seguido de un número x) como se muestra en ID # 9 y "FMx" donde x es un número como se muestra en ID # 6. Cualquier otro FM que no cumpla con los 3 criterios anteriores debe ser ignorado. ¿Es posible extraer los datos de muestra en otra columna?
Identificación | Columna de datos | Salida |
1 | Hola desde FM-223, Random FM FM FM | FM-223 |
2 | Datos de muestra XXXXXX | Nulo |
3 | Datos de muestra XXXXXX | Nulo |
4 | Datos de muestra XXXXXX | Nulo |
5 | Datos de muestra XXXXXX | Nulo |
6 | Hola desde FM212..... XXXXX FM de muestra que se debe ignorar | FM212 |
7 | Lorem Ipsum | Nulo |
8 | texto de marcador de posición | Nulo |
9 | Adiós FM 444 sí, más FMto ser ignorado | FM 444 |
Personalmente, pasaría algún tiempo tratando de limpiar los datos en la fuente para que sea más fácil trabajar con ellos.
Un poco desafiante, pero creo que tengo una solución para ti. Necesario para utilizar una combinación de las diversas funciones TEXT disponibles en DAX.
Mi primer paso fue encontrar el dígito de inicio si su [Columna de datos] contiene "FM":
FIND FM = FIND( "FM",FM[Data Column ], 1, 0 )
Identificación |
Columna de datos |
Salida |
ENCONTRAR FM |
1 |
Hola desde FM-223, Random FM FM FM |
FM-223 |
12 |
2 |
Datos de muestra XXXXXX |
Nulo |
0 |
3 |
Datos de muestra XXXXXX |
Nulo |
0 |
4 |
Datos de muestra XXXXXX |
Nulo |
0 |
5 |
Datos de muestra XXXXXX |
Nulo |
0 |
6 |
Hola desde FM212..... XXXXX FM de muestra que se debe ignorar |
FM212 |
9 |
7 |
Lorem Ipsum |
Nulo |
0 |
8 |
texto de marcador de posición |
Nulo |
0 |
9 |
Adiós FM 444 FM488 sí, más FMpara ser ignorado |
FM 444 |
5 |
A continuación, utilicé la declaración SWITCH para crear sus 3 condiciones dadas anteriormente:
Output1 = SWITCH(
TRUE(),
CONTAINSSTRING( [Data Column ], "FM-" ),
MID( [Data Column ], [FIND FM], 6 ),
// Satisfies the FM- scenario, but assumes only 3 digits after.
CONTAINSSTRING( [Data Column ], "FM" ) &&
MID( [Data Column ], [FIND FM]+2,1) IN {"1", "2", "3","4","5","6","7","8","9"}, MID([Data Column ], [FIND FM], 5 ),
// Satisfies "FM" & assumes 3 digits after
CONTAINSSTRING( [Data Column ], "FM ") &&
MID( [Data Column ], [FIND FM]+3,1) IN {"1", "2", "3","4","5","6","7","8","9"}, MID([Data Column ], [FIND FM], 6 ))
Salida1
FM-223 |
|
|
|
|
FM212 |
|
|
FM 444 |
La única condición que no pude satisfacer es si hay varias FM en el mismo registro. Necesitaría darle a este un poco más de reflexión. Probablemente haya formas alternativas de jugar con las diversas funciones de texto, pero dados todos los escenarios que proporcionaste, esta fue mi mejor oportunidad. Espero que pueda hacer los ajustes necesarios con sus datos del mundo real.
https://learn.microsoft.com/en-us/dax/containsstring-function-dax
Saludos
¡Gracias! Hágame saber si son capaces de averiguar el caso de Multiple FM.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |