Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Syndicate_Admin
Administrator
Administrator

Extraer datos de una columna si la cadena coincide con varios criterios

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ónColumna de datos Salida
1Hola desde FM-223, Random FM FM FMFM-223
2Datos de muestra XXXXXXNulo
3Datos de muestra XXXXXXNulo
4Datos de muestra XXXXXXNulo
5Datos de muestra XXXXXXNulo
6Hola desde FM212..... XXXXX FM de muestra que se debe ignorarFM212
7Lorem IpsumNulo
8texto de marcador de posiciónNulo
9Adiós FM 444 sí, más FMto ser ignoradoFM 444
2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

@rb160488 ,

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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.