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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Búsqueda de elementos coincidentes con dos columnas separadas por comas

Hola a todos

Tengo dos mesas con una relación de uno a muchos. Ambos tienen una columna con una lista de valores separados por una coma:

por ejemplo: Tabla 1 (Un lado)

NombreMascotas
Bobperro, pez
Sallygato, pollo
Andypescado, perro, gato

Tabla 2 (Muchos lados)

NombreCompras
Bobpollo, ternera
Sallycarne de res, leche, pollo
Andyqueso, pescado

Quiero crear una columna calculada en la Tabla 2 que devuelva 'Y' si uno de los elementos de las compras de comestibles se encuentra en la columna mascotas o "N" de lo contrario. (Prefiero hacer esto en DAX)

Eg:

NombreComprasElemento coincidente
Bobpollo, terneraN
Sallycarne de res, leche, polloY
Andyqueso, pescadoY

Siento que una forma de hacerlo sería dividir las compras de comestibles en elementos separados por la coma y usar CONTAINSSTRING() para cada uno de los elementos, pero no estoy seguro de cómo lograr esto en DAX / PBI.

¡Cualquier ayuda sería muy apreciada!

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Gracias @parry2k esto también funcionó para mí y está más limpio que lo que tenía.

Syndicate_Admin
Administrator
Administrator

@purple_SP o puede agregar una nueva columna en Tabla2 con la siguiente expresión, cambie el nombre de la tabla y el nombre de la columna según su modelo.

Matching Item = 
VAR __shoppingValue = SUBSTITUTE (Table2[ Grocery Shopping],",","|" )
VAR __totalValues = PATHLENGTH (__shoppingValue )
VAR __petsList = RELATED (Table1[ Pets] )
VAR __matchingTable = 
    ADDCOLUMNS (
        GENERATESERIES (1, __totalValues ), 
        "@IsMatched", CONTAINSSTRING ( __petsList, PATHITEM ( __shoppingValue, [Value],TEXT ) ) + 0 
    )
VAR __matchCount = SUMX ( __matchingTable, [@IsMatched])
RETURN IF ( __matchCount > 0, "Yes", "No" )

👉 Aprenda Power BI Suscríbase a nuestro canal YT - @PowerBIHowTo

Syndicate_Admin
Administrator
Administrator

Pude encontrar una solución a este problema (con muchas gracias a este post: Resuelto: DAX para dividir en filas en Delimeter - Microsoft Fabric Community ) dividiendo la primera lista en filas por un delimitador, usando CONTAINSSTRING para crear una columna que es 1 si el elemento de la primera lista existe en la segunda y 0 en caso contrario, y usar SUMX con una instrucción if para obtener el resultado final.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors