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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Syndicate_Admin
Administrator
Administrator

Combinación basada en una secuencia de cadenas parcial

Hola

Tengo dos tablas con campos numéricos de texto. Uno es el número completo y el otro es un desplazamiento del primero, lo que significa que podría ser el texto del 3 al 13 o del 2 al 12. Una combinación aproximada no devuelve la información correcta. Por lo tanto, me gustaría que la tabla A devolviera la coincidencia parcial en la tabla B o que la tabla B devolviera la coincidencia parcial en A. El número de la tabla B es un desplazamiento ligeramente diferente en cada fila. De nuevo, se trata de números almacenados como textos. ¿Alguna forma de hacer este partido?

Cuadro A

Número de boleto
01470614238450
01467031551686
01470655645513
01470680045763
Cuadro B
7061423845
031551686
70655645513
7068004517
7068004515
92
6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Hola

Gracias por las soluciones @ronrsnfld y @lbendlin proporcionadas, y quiero ofrecer más información para que el usuario la consulte,

Hola @johnlhaase , puede consultar la siguiente solución.

Cuadro A

vxinruzhumsft_0-1718587984338.png

Cuadro B

vxinruzhumsft_1-1718588002299.png

A continuación, en la tabla a, cree una columna personalizada

let a=[TicketNumber]
in Text.Combine(List.Select(#"Table B"[Column1],each Text.Contains(a,_)),",")

Salida

vxinruzhumsft_2-1718588091120.png

Y puede consultar los archivos adjuntos.

¡Saludos!

Yolo Zhu

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Uso de la función List.FindText para localizar el número completo correcto para un número parcial

TableA

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("TcrBCcAwDAPAXfLuQ64l2buE7L9GTaHQ73F7LwQLDt7ZFNa5XnIhQwq3P5olmYP5owao8tB5AA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [TicketNumber = _t])
in
    Source

TablaB

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VcuxDQAgCETRXagtQDjEWQj7r6HRWFi+f7lMGuxiXcNA1ZJYBRAPP9oj4LaLPgezQcbP+52dqhY=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [TicketNumber = _t]),
    
//Add the full ticket number if a match
    #"Added Custom" = Table.AddColumn(Source, "TicketNumberA", each List.FindText(TableA[TicketNumber],[TicketNumber]){0}?, type text),

//add the non-matching TableA numbers
    #"Add from TableA" = Table.Combine({#"Added Custom", 
        Table.SelectRows(Table.RenameColumns(TableA,{"TicketNumber", "TicketNumberA"}), 
        each not List.Contains(#"Added Custom"[TicketNumberA],[TicketNumberA]))
        })
in
    #"Add from TableA"

Resultado

ronrsnfld_0-1718417329767.png

Syndicate_Admin
Administrator
Administrator

¿Funciona una función contain en esta aplicación?

sí, la solución propuesta se basa en Text.Contains.

Cómo usar este código: Crear una nueva consulta en blanco. Haga clic en "Editor avanzado". Reemplace el código de la ventana por el código que se proporciona aquí. Haga clic en "Listo". Una vez que haya examinado el código, reemplace el paso Origen por su propio código fuente.

Syndicate_Admin
Administrator
Administrator

Cuadro B

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VcuxDQAgCETRXagtQDjEWQj7r6HRWFi+f7lMGuxiXcNA1ZJYBRAPP9oj4LaLPgezQcbP+52dqhY=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Pattern = _t])
in
    Source

Cuadro A

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("TcrBCcAwDAPAXfLuQ64l2buE7L9GTaHQ73F7LwQLDt7ZFNa5XnIhQwq3P5olmYP5owao8tB5AA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [TicketNumber = _t]),
    #"Added Custom" = Table.AddColumn(Source, "Match", (k)=> Table.SelectRows(#"Table B",each Text.Contains(k[TicketNumber],[Pattern]))),
    #"Expanded Match" = Table.ExpandTableColumn(#"Added Custom", "Match", {"Pattern"}, {"Pattern"})
in
    #"Expanded Match"

Hola

Entiendo un poco el código M y no veo dónde se introducen mis datos de aguas en el script. ¿Podrías explicarlo un poco más?

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.