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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Reemplace los ID separados por comas en una columna de la tabla 1 por valores de la tabla 2

Tengo dos tablas donde la tabla 1 actúa como una tabla de hechos con una columna que contiene los ID de otra tabla. Cada fila no puede contener ningún identificador, un identificador o más de un identificador separado por una coma. La segunda tabla actúa como una tabla de dimensiones donde la columna 1 es el identificador único y la columna 2 es el valor único para ese identificador. Esta tabla es dinámica, ya que se pueden agregar filas en caso de que se necesiten nuevos valores. Hay alrededor de 20 IDENTIFICADORes/etiquetas únicos. En este punto, la mayoría de los lables colocados en una sola fila son cinco, pero eso podría cambiar en función de la necesidad del negocio.

Ayuda:

Lo que estoy buscando es cómo levantar una columna en la tabla 1 que devuelve los valores de los identificadores en la columna de esa fila.

Lo que he intentado:

Cuando administre las relaciones entre las dos tablas, uniendo en columnas de identificador, esto solo funciona para aquellas filas donde hay un identificador en la tabla 1. Cada vez que hay más de un ID en un campo, no se devuelve nada. He intentado usar algunas fórmulas DAX, así como la consulta de energía, pero no puedo devolver valores donde hay más de un identificador.

Aquí hay tres tablas para mostrar lo que tengo y lo que me gustaría lograr:

Tabla 1

Card_IDCard_Label_ID
abc123a1s2d3f4
def456b5n6n7m8, a1s2d3f4
ghi789

Tabla 2

Label_IDLabel_Value
a1s2d3f4Error
b5n6n7m8Mantenimiento
c0v9b8n7Mejora

Tabla 3 - Salida deseada para la Tabla 1

Card_IDCard_Label_IDCard_Label_Value
abc123a1s2d3f4Error
def456b5n6n7m8, a1s2d3f4Mantenimiento, Bug
ghi789

Cualquier ayuda sería muy apreciada!

Gracias

1 ACCEPTED SOLUTION
Greg_Deckler
Super User
Super User

@sam123 Vea lo que piensa de esta solución. PBIX se une después de sig. Cuadro (4) y cuadro (4a):

Column = 
VAR __Table =
    ADDCOLUMNS(
        GENERATE(
            { [Card_ID] },
            'Table (4a)'
        ),
        "Replace",IF(FIND([Label_ID],[Card_Label_ID],,0)>0,[Label_Value],BLANK())
    )
RETURN
    CONCATENATEX(FILTER(__Table,NOT(ISBLANK([Replace]))),[Replace],", ")

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

4 REPLIES 4
sanalytics
Solution Supplier
Solution Supplier

@sam123,

Desde Greg señor ya ha publicado la solución DAX.. Así que,puedes obtener gelp de eso.. Aunque a continuación se muestra la solución de consulta Power

https://www.dropbox.com/s/oxag35s267yn01p/Replace%20comma%20separated%20IDs%20in%20a%20column%20from...

downlaod el archivo PBI..
saludos

sanéticas

Greg_Deckler
Super User
Super User

@sam123 Vea lo que piensa de esta solución. PBIX se une después de sig. Cuadro (4) y cuadro (4a):

Column = 
VAR __Table =
    ADDCOLUMNS(
        GENERATE(
            { [Card_ID] },
            'Table (4a)'
        ),
        "Replace",IF(FIND([Label_ID],[Card_Label_ID],,0)>0,[Label_Value],BLANK())
    )
RETURN
    CONCATENATEX(FILTER(__Table,NOT(ISBLANK([Replace]))),[Replace],", ")

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Hola Greg,

¡Muchas gracias! Esto funciona perfectamente. Proporcionar el archivo fue increíblemente útil para entender la lógica (que va a tomar un poco para trabajar a través de a pesar de yee ole copiar y pegar trabajando como un encanto).

Mejor

Sam

@sam123

Por lo tanto, cree una variable de tabla llamada __Table. Utilice el valor de la fila actual de la Card_ID de columna, tratándola como una tabla ( ) y, a continuación, con esta generación de una tabla que contenga lo que es esencialmente un producto cartesiano entre este y Table (4a) para que termine con una tabla que incluya el valor de Card_ID de la fila actual junto con cada fila de Table (4a). Otra forma de decir esto es que está tomando la tabla (4a) y esencialmente picando en el valor Card_ID de la fila actual.

A esta tabla, a continuación, agregue una columna, Reemplazar, donde intenta encontrar si la Label_ID de la fila actual está en la misma fila Card_ID. Si es así, devuelva el Label_Value equivalente. Si no es así, devuelva BLANK.

Para RETURN, filtre los espacios en blanco en Reemplazar y concatene los valores de la columna Reemplazar.

Column = 
VAR __Table =
    ADDCOLUMNS(
        GENERATE(
            { [Card_ID] },
            'Table (4a)'
        ),
        "Replace",IF(FIND([Label_ID],[Card_Label_ID],,0)>0,[Label_Value],BLANK())
    )
RETURN
    CONCATENATEX(FILTER(__Table,NOT(ISBLANK([Replace]))),[Replace],", ")


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors