Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola
Tengo una tabla de datos que incluye una columna "Nombre del cliente" y una columna "Cliente de factura".
Estoy buscando crear una columna "Coincidir", para comprobar si el nombre del cliente y el nombre de la factura coinciden o coinciden parcialmente, o si no coinciden.
Esto es lo que me gustaría lograr:
Nombre del cliente | Cliente de facturas | Partido |
Seguro de elefantes | Seguro de elefantes | Partido |
Fabricantes de papel | Impresoras verdes | Sin partido |
Ratón 3D | 3dmouse | Partido parcial |
Universidad Aleatoria | Uni aleatorio | Partido parcial |
Universidad de Hill | Universidad de Hill | Partido parcial |
Estoy buscando una manera de comparar las dos columnas para ver si hay una coincidencia o una coincidencia parcial.
Aprecio que es poco probable que siempre reconozca las coincidencias parciales, pero sería muy útil si hubiera una manera de identificar algunos de los valores similares.
Gracias de antemano!
Solved! Go to Solution.
Hola, @Jenni-Sky
Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.
Mesa:
Puede crear una columna calculada como se muestra a continuación.
Match =
var _cname = 'Table'[Customer Name]
var _iname = 'Table'[Invoice Customer]
var _firstname = LEFT(_cname,SEARCH(" ",_cname)-1)
var _lastname = MID(_cname,SEARCH(" ",_cname)+1,LEN(_cname))
return
IF(
EXACT([Customer Name],[Invoice Customer]),
"Match",
IF(
NOT(CONTAINSSTRING(_iname,_firstname))&&NOT(CONTAINSSTRING(_iname,_lastname)),
"Not Match",
IF(
CONTAINSSTRING(_iname,_firstname)||CONTAINSSTRING(_iname,_lastname),
"Partial Match"
)
)
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola, @Jenni-Sky
Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.
Mesa:
Puede crear una columna calculada como se muestra a continuación.
Match =
var _cname = 'Table'[Customer Name]
var _iname = 'Table'[Invoice Customer]
var _firstname = LEFT(_cname,SEARCH(" ",_cname)-1)
var _lastname = MID(_cname,SEARCH(" ",_cname)+1,LEN(_cname))
return
IF(
EXACT([Customer Name],[Invoice Customer]),
"Match",
IF(
NOT(CONTAINSSTRING(_iname,_firstname))&&NOT(CONTAINSSTRING(_iname,_lastname)),
"Not Match",
IF(
CONTAINSSTRING(_iname,_firstname)||CONTAINSSTRING(_iname,_lastname),
"Partial Match"
)
)
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @Jenni-Sky
He respondido a una pregunta similar en el siguiente post:
esta respuesta se basó en la entrada del blog a continuación:
https://radacad.com/quick-dax-word-count
Mirando a usted problema concreto lo que puede hacer es la siguiente columna:
Output to a Table =
VAR Sentence = 'FInd'[Customer Name]
VAR SentenceCleaned = " " & Sentence & " "
VAR LengthOfSentence = LEN(SentenceCleaned)
VAR PivotedSentence =
ADDCOLUMNS(
GENERATESERIES(1,LengthOfSentence) ,
"Letter" ,
MID(SentenceCleaned,[Value],1)
)
var Boundaries =
ADDCOLUMNS(
PivotedSentence ,
"PrevSpace", MAXX(FILTER(PivotedSentence ,''[Value] < EARLIER([Value]) && [Letter] = " "),[Value]) + 1,
"NextSpace", MINX(FILTER(PivotedSentence ,''[Value] > EARLIER([Value]) && [Letter] = " "),[Value]) - 1
)
VAR TableOfWords =
SELECTCOLUMNS(
SUMMARIZE(
FILTER(Boundaries, not [Letter] IN {" "}) ,
[PrevSpace]
),"Word Position",[PrevSpace]
)
VAR TableOfWords2 =
ADDCOLUMNS(
TableOfWords,
"Word",
CONCATENATEX(
FILTER(
Boundaries,[PrevSpace]=[Word Position]),
[Letter],
,
[Value]
)
)
RETURN
iF('FInd'[Customer Name] = 'FInd'[Invoice Customer], "Match",
IF(
SUMX(TableOfWords2,
SEARCH(
upper(TRIM([Word])),
upper(TRIM('FInd'[Invoice Customer]))
,,0
)
)
> 0,
"Partial Match",
"No Match"
))
Compruebe la conexión del archivo PBIX.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em Português@Jenni-Sky , consulte si esto puede ayudar un poco
https://radacad.com/fuzzy-matching-in-power-bi-and-power-query-match-based-on-similarity-threshold
Gracias por este @amitchandak , ya he visto este recurso, sin embargo se refiere a unirse a dos tablas diferentes. Mis datos ya están en la misma tabla y solo quiero comparar dentro de la fila. Estaba luchando para ver cómo aplicar el recurso a mi situación.
@Jenni-Sky, Inténtalo como. Es posible que debas realizar algunos cambios en la condición 2. Una nueva columna
Switch ( True(),
containsstring([Nombre del cliente],[Cliente de factura]) , "Coincidir"
SEARCH(left([Customer Name],SEARCH(" ",[Customer Name],1,0)-1) ,[Cliente de factura],1,0)>0
|| SEARCH(left([Cliente de factura],SEARCH(" ",[Cliente de factura],1,0)-1) ,[Nombre del cliente],1,0) >0 ,"Coincidencia parcial",
"Sin coincidencia")
Para un martillo, el mundo de es un clavo
Apuesto a que obtendrá algunas respuestas de tipo "nail" en este foro de Power BI porque todos aquí son un martillo.
Pero en realidad, Power BI no es la herramienta para esto. Prueba Coincidencia aproximada en SSIS. O si lo tiene en una base de datos SQL, tal vez pueda escribir código que iterará sobre los dos conjuntos de datos en busca de similitudes, tal vez usando expresiones regulares y similares.
Pero en realidad, le estás pidiendo a la gente de martillos y clavos una solución cuando realmente necesitas un electricista. 🙂
Proud to be a Super User! | |
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.