Anónimo
Hola, todos,
¿Hay alguna forma de recuperar una cadena de contiguo números de una cadena?
El único requisito es que los caracteres numéricos sean contiguo.
Déjame ilustrar:
1) ABCDE234 -> 234
2) ABC456-DD -> 456
3) 134ABC-CC -> 134
4) CC-543_FF -> 543
5) CC_FF-334567 -> 334567
Gracias por adelantado.
Jason.
smpa01
@Anónimo Por cierto, también hay una solución R para este problema.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnRydnE1MjZRitUBc0xMzXRdXMA8Q2MToICuszOY5+ysa2piHO/mBuUBWbrGxkDl5kqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Run R script" = R.Execute("https://community.powerbi.com/t5/Desktop/M-Language-Retrieve-String-of-Contiguous-Numbers-from-a-String/m-p/#"dataset' holds the input data for this script#(lf)x<-dataset#(lf)x#(lf)library(stringr)#(lf)numextract <- function(string){str_extract(string, ""\d+\.*\d*"")}#(lf)x$result<-as.numeric(numextract(x$Column1))",[dataset=#"Changed Type"]), #"""x""" = #"Run R script"{[Name="x"]}[Value] in #"""x"""
smpa01
@Anónimo Por cierto, también hay una solución R para este problema.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnRydnE1MjZRitUBc0xMzXRdXMA8Q2MToICuszOY5+ysa2piHO/mBuUBWbrGxkDl5kqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Run R script" = R.Execute("https://community.powerbi.com/t5/Desktop/M-Language-Retrieve-String-of-Contiguous-Numbers-from-a-String/m-p/#"dataset' holds the input data for this script#(lf)x<-dataset#(lf)x#(lf)library(stringr)#(lf)numextract <- function(string){str_extract(string, ""\d+\.*\d*"")}#(lf)x$result<-as.numeric(numextract(x$Column1))",[dataset=#"Changed Type"]), #"""x""" = #"Run R script"{[Name="x"]}[Value] in #"""x"""
Anónimo
En respuesta a smpa01
@ smpa01 Bastante impresionante.
Me gusta la parte donde usas
intente Number.From ([Value]) de lo contrario -999
Sin embargo, me perdiste cuando comenzaste a hacer esto:
dejar
Fuente = [AD],
# «Otras columnas eliminadas» = Table.SelectColumns (Fuente, {«Personalizado»}),
Personalizado = # «Otras columnas eliminadas»[Custom]
en
Personalizado
No estoy seguro de lo que está pasando aquí …
smpa01
En respuesta a Anónimo
@Anonymousit está haciendo esto. Solo estoy interesado en la columna personalizada para poder convertirla en una lista.
Agrupé los datos por Columna1 para poder ejecutar lo siguiente en cada grupo de grupos
dejar
Fuente = [AD],
# «Otras columnas eliminadas» = Table.SelectColumns (Fuente, {«Personalizado»}),
Personalizado = # «Otras columnas eliminadas»[Custom]
en
Personalizado
smpa01
@Anonymoussure que puede
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnRydnE1MjZRitUBc0xMzXRdXMA8Q2MToICuszOY5+ysa2piHO/mBuUBWbrGxkDl5kqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Column1", "Column1 - Copy"), #"Split Column by Position" = Table.SplitColumn(#"Duplicated Column", "Column1 - Copy", Splitter.SplitTextByRepeatedLengths(1), {"Column1 - Copy.1", "Column1 - Copy.2", "Column1 - Copy.3", "Column1 - Copy.4", "Column1 - Copy.5", "Column1 - Copy.6", "Column1 - Copy.7", "Column1 - Copy.8", "Column1 - Copy.9", "Column1 - Copy.10", "Column1 - Copy.11", "Column1 - Copy.12"}), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Position",{{"Column1 - Copy.1", type text}, {"Column1 - Copy.2", type text}, {"Column1 - Copy.3", type text}, {"Column1 - Copy.4", type text}, {"Column1 - Copy.5", type text}, {"Column1 - Copy.6", type text}, {"Column1 - Copy.7", type text}, {"Column1 - Copy.8", type text}, {"Column1 - Copy.9", type text}, {"Column1 - Copy.10", Int64.Type}, {"Column1 - Copy.11", Int64.Type}, {"Column1 - Copy.12", Int64.Type}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Column1"}, "Attribute", "Value"), #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Other Columns",{"Attribute"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom", each try Number.From([Value]) otherwise -999), #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] <> -999)), #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows",{"Value"}), #"Grouped Rows" = Table.Group(#"Removed Columns1", {"Column1"}, {{"AD", each _, type table}}), #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Custom", each let Source = [AD], #"Removed Other Columns" = Table.SelectColumns(Source,{"Custom"}), Custom = #"Removed Other Columns"[Custom] in Custom), #"Removed Columns2" = Table.RemoveColumns(#"Added Custom1",{"AD"}), #"Extracted Values" = Table.TransformColumns(#"Removed Columns2", {"Custom", each Text.Combine(List.Transform(_, Text.From)), type text}), #"Changed Type2" = Table.TransformColumnTypes(#"Extracted Values",{{"Custom", Int64.Type}})
in
#"Changed Type2"