Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

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

  • 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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Lo siento, estoy tratando de ver dónde obtener esto y comenzar dentro de Power Query.

  • @Seth4040 ,

    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's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        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
        
  • @Seth4040 ,

    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

  • Haga clic en la columna personalizada y aplique la consulta M según sus requisitos.

  • @Seth4040 ,

    ¿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!!

  • @Seth4040 ,

    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!!

  • @Seth4040 ,

    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!!