Forum Discussion
Recortar datos
Tengo datos que necesito recortar en un DAX o en Transformar datos en el escritorio. Tengo un número de cuenta que debe ser 56702737-2 (ejemplo) y algunos de estos tienen datos antes del número de cuenta y, a veces, después del número de cuenta o ambos antes y después del número de cuenta. Necesito ayuda para poder recortar, así que solo tengo el número de cuenta. He adjuntado una captura de pantalla, las de rosa las necesito recortar y la de verde es la que deberían ser.
14 Replies
- Syndicate_Admin
Administrator
Intente agregar un código m similar creando una nueva columna, por ejemplo, Número de cuenta limpio,
dejar
txt = [Factura de proveedor],
patrón = Texto.Seleccionar(txt, {"0".." 9", "-"}),
dashPos = Text.PositionOf(patrón, "-"),
cuenta =
if dashPos = 8 y Text.Length(patrón) >= 10
luego Text.Middle(patrón, 0, 10)
else null
en
cuenta- Syndicate_Admin
Administrator
Lo siento, estoy tratando de ver dónde obtener esto y comenzar dentro de Power Query.
- Syndicate_Admin
Administrator
En Power Query, agregue una nueva columna personalizada y pegue este código:
Table.AddColumn(#"Changed Type1", "Custom", each let token = Text.BeforeDelimiter([YourColumnName], " "), parts = Text.Split(token, "-"), digitsOnly = List.Select( parts, each Text.Length( Text.Remove( _, {"0".."9"} ) ) = 0 ) in if List.Count(digitsOnly) >= 2 then digitsOnly{0} & "-" & digitsOnly{1} else null)Asegúrese de reemplazar YourColumnName por el nombre real de la columna (Factura de proveedor)
El resultado debería tener el siguiente aspecto:
- Syndicate_Admin
Administrator
Recibo un error por alguna razón.
- Syndicate_Admin
Administrator
Sorr, considera usar este:
let // 1) Strip off anything after the first space (so “53551117-10 FQUG” → “53551117-10”; // “AP-ORL-56403401-F-10” stays full because it has no spaces) token = Text.BeforeDelimiter([YourColumn], " "), // 2) Split on the hyphen parts = Text.Split(token, "-"), // 3) Keep only the *all-digit* parts digitsOnly = List.Select( parts, each Text.Length( Text.Remove( _, {"0".."9"} ) ) = 0 ) in // 4) If we found at least two digit-only parts, stitch them back together with a hyphen if List.Count(digitsOnly) >= 2 then digitsOnly{0} & "-" & digitsOnly{1} else null
- Syndicate_Admin
Administrator
Para extraer el número de cuenta mediante DAX en Power BI, puede crear una columna calculada que aísle el patrón numérico con el formato XXXXXXXX-X (es decir, de 7 a 8 dígitos, un guión y un solo dígito). Esta solución supone que el número de cuenta sigue esa estructura de forma coherente y aparece en algún lugar dentro de la cadena de texto, posiblemente rodeado de caracteres adicionales.
Puede usar la siguiente expresión DAX para la columna calculada:
Extracted Account Number = VAR TextString = [Vendor Invoice] VAR HyphenPos = SEARCH("-", TextString, 1, -1) VAR StartPos = IF( HyphenPos >= 8, HyphenPos - 8, 1 ) VAR Extracted = MID(TextString, StartPos, 10) RETURN IF( ISNUMBER(VALUE(LEFT(Extracted, 1))), Extracted, BLANK() )Esta fórmula identifica la posición del guión dentro de la cadena, calcula el punto de inicio adecuado para la extracción suponiendo que 8 caracteres preceden al guión y, a continuación, extrae una subcadena de 10 caracteres. Incluye una validación básica para garantizar que la cadena extraída comience con un carácter numérico. Si el patrón varía más significativamente o si se requiere un mayor nivel de precisión, sería aconsejable controlar esta lógica en Power Query, donde las capacidades de manipulación de texto son más avanzadas.
Saludos
- Syndicate_Admin
Administrator
Haga clic en la columna personalizada y aplique la consulta M según sus requisitos.
- Syndicate_Admin
Administrator
¿Puedo preguntarle si ha resuelto este problema? Si es así, marque la respuesta útil y acéptela como la solución. Esto será útil para que otros miembros de la comunidad que tengan problemas similares lo resuelvan más rápido.
¡¡Gracias!!
- Syndicate_Admin
Administrator
Quería comprobar si ha tenido la oportunidad de revisar la información proporcionada. No dude en ponerse en contacto con nosotros si tiene más preguntas. Si las respuestas han abordado su consulta, acéptela como una solución y dé un 'Felicitaciones' para que otros miembros puedan encontrarla fácilmente.
¡¡Gracias!!
- Syndicate_Admin
Administrator
Espero que la información proporcionada sea útil. No dude en ponerse en contacto con nosotros si tiene más preguntas o si desea discutir esto con más detalle. Si las respuestas proporcionadas responden a su pregunta, acéptelo como una solución para que otros Los miembros de la comunidad con problemas similares pueden encontrar una solución más rápido.
¡¡Gracias!!