NECESITA AYUDA PARA EL EXTRACTO SÓLO NÚMEROS

Un usuario Pregunto ✅

FabrPrado

Hola buen dia para todos

Necesito más una ayuda:

Cómo extraer solo números de una columna

| columna que tengo | columna que necesito

Un1titled.png

No hay un valor predeterminado, los caracteres numéricos pueden estar en cualquier parte del texto.

TomMartens

Oye,

en el Editor de consultas agregue una columna personalizada y use esta fórmula

Text.Combine(List.RemoveNulls(List.Transform(Text.ToList([Column1]),each if Value.Is(Value.FromText(_), type number) then _ else null)))

reemplace Column1 con el nombre de su columna.

La idea, poner el texto de la columna de origen en una lista de caracteres, marcar cada carácter si es de tipo número, si es así conservarlo, de lo contrario omitir el carácter.

Quizás no sea tan obvio, pero es el patrón cómo lo haría la expresión regular.

Una pequeña foto de mi muestra

2017-10-07_0-03-18.png

Saludos

Tomás

MKI_GPCG

En respuesta a TomMartens

Prueba = Text.Combine (List.RemoveNulls (List.Transform (Text.ToList ([Advocacy Time During Appointment]), cada uno si Value.Is (Value.FromText (_), escriba número) luego _ else null)))
obteniendo un error, chicos, ¿me falta algo? muy nuevo en power BI y DAX
@TomMartens

MKI_GPCG

Capture.PNG

Estoy usando Power query en Power BI

@TomMartens

TomMartens

En respuesta a MKI_GPCG

Hola @MKI_GPCG,

proporcione un pbix que permita recrear el error, cargue el pbix en onedrive o dropbox y comparta el enlace.

Saludos,

Tomás

MKI_GPCG

En respuesta a TomMartens

@TomMartens

https://1drv.ms/u/s!AkW0uPpG3fk6km0GoVAbJBw_LiQ7?e=TGbQ1K

Por favor mira arriba

TomMartens

En respuesta a MKI_GPCG

Hola @MKI_GPCG,

también debe cargar el xlsx, ya que sin la fuente de datos no es posible hacer ninguna Power Query.

Considere agregar un parámetro al pbix que apunte al directorio donde se encuentra el xlsx y permita un ajuste más rápido a diferentes entornos: https://docs.microsoft.com/en-us/power-query/power-query-query -parámetros

Saludos,

Tomás

Anónimo


@FabrPrado escribió:

Hola buen dia para todos

Necesito más una ayuda:

Cómo extraer solo números de una columna

| columna que tengo | columna que necesito

Un1titled.png

No hay un valor predeterminado, los caracteres numéricos pueden estar en cualquier parte del texto.


Éste no aborda el punto decimal. Por otro lado, la otra solución lo hace.

TomMartens

Oye,

en el Editor de consultas agregue una columna personalizada y use esta fórmula

Text.Combine(List.RemoveNulls(List.Transform(Text.ToList([Column1]),each if Value.Is(Value.FromText(_), type number) then _ else null)))

reemplace Column1 con el nombre de su columna.

La idea, poner el texto de la columna de origen en una lista de caracteres, marcar cada carácter si es de tipo número, si es así conservarlo, de lo contrario omitir el carácter.

Quizás no sea tan obvio, pero es el patrón cómo lo haría la expresión regular.

Una pequeña foto de mi muestra

2017-10-07_0-03-18.png

Saludos

Tomás

unishine247

En respuesta a TomMartens

Hola Tom,

Tu código funciona perfectamente. Sin embargo, ¿cómo puedo revisar su código para que haya un espacio entre 1 y 2 en la tercera fila para mostrar que hay otros textos entre estos 2 números en la celda original?

Text.Combine(List.RemoveNulls(List.Transform(Text.ToList([Column1]),each if Value.Is(Value.FromText(_), type number) then _ else null)))

aravindsampath

En respuesta a TomMartens

Hola Tom,
Gracias por este código, funcionó. pero tengo una pequeña extensión de esto.

Mis datos también tienen decimales, quiero decir
6
6.5 números
10,4 kilogramos, etc.
aquí estoy recibiendo
6
sesenta y cinco
104.
Cualquier ayuda para que el decimal se mantenga en la salida.
¿Alguien con alguna sugerencia? TIA.

TomMartens

En respuesta a aravindsampath

Hola @aravindsampath, tal vez quieras probar una simple transformación Dividir por delimitador

image.png

entonces

image.png

Tada

image.png

Ojalá sea esto lo que usted está buscando.

Saludos,

Tomás

aravindsampath

En respuesta a TomMartens

Gracias Tom por ayudarme.

Denle

En respuesta a TomMartens

Hola Tom,

Código muy útil que proporcionaste aquí. Sin embargo, ¿le sería posible enviar una versión DAX de esto?
Tengo dificultades para convertirlo de M a DAX.

Atentamente,
Denis

TomMartens

En respuesta a Denle

Hola @denle,

para crear una columna calculada, puede usar este DAX para extraer los números de una cadena:

a Column with only numbers = 
var __string = 'Table'[The text]
var __stringLength = LEN( __string )
var thenumbers = 
    CONCATENATEX(
        FILTER(
            ADDCOLUMNS(
                ADDCOLUMNS(
                    GENERATESERIES( 1 , __stringLength , 1 )
                    , "@char" , MID( __string , ''[Value] , 1 )
                )
                , "isnumber" , IF( ISERROR( VALUE( [@char] ) ) , 0 , 1 )
            )
            , [isnumber] = 1
        )
    , [@char]
    )
return
thenumbers

Aquí hay una pequeña captura de pantalla:

TomMartens_0-1606331188729.png

Con suerte, esto proporciona lo que está buscando. Sin embargo, recomiendo extraer los números usando Power Query en lugar de DAX.

Saludos,

Tomás

MKI_GPCG

En respuesta a TomMartens

Prueba = Text.Combine (List.RemoveNulls (List.Transform (Text.ToList ([Advocacy Time During Appointment]), cada uno si Value.Is (Value.FromText (_), escriba número) luego _ else null)))
obteniendo un error, chicos, ¿me falta algo? muy nuevo en power BI y DAX
@TomMartens

TomMartens

En respuesta a MKI_GPCG

Hola @MKI_GPCG,

debe tener en cuenta que mi solución solo se puede usar dentro de Power Query, ya que usa funciones M. Menciono esto porque hace referencia a DAX.

Describa con mucho más detalle dónde está intentando utilizar mi fórmula, proporcione capturas de pantalla

Saludos,

Tomás

MKI_GPCG

En respuesta a TomMartens

Prueba = Text.Combine (List.RemoveNulls (List.Transform (Text.ToList ([Advocacy Time During Appointment]), cada uno si Value.Is (Value.FromText (_), escriba número) luego _ else null)))
chicos, estoy recibiendo un

augustindelaf

En respuesta a TomMartens

¡Tu fórmula funciona perfectamente @TomMartens!

Gracias por compartir 😉

estupendo

FrancésPower

En respuesta a TomMartens

¡Funciona perfectamente!

muchas gracias

Giavo

En respuesta a TomMartens

Tom, esta es una gran solución, la probé y funcionó, pero en mi caso tengo un pequeño problema: los números contenidos en mi columna de texto son números DECIMAL y tu solución extrae los números y borra el «.» y da un número entero como resultado (por lo que 1.0.2.1 se devuelve como 1021). ¿Cómo sería posible mantener el formato original de los números?

JPNegro

En respuesta a Giavo

Giavo, prueba esto

Text.Select ([SourceColumn], {«0» .. «9», «.»})

Y una forma sencilla de extraer solo números de una columna sería Text.Select ([SourceColumn], {«0» .. «9»})

FabrPrado

En respuesta a TomMartens

Muy bien, funcionando;

Gracias, TomMartens

Mira como está mi tabla:

Capture.PNG

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *