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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Columna calculada para comprobar si existe un valor en otra tabla

Tengo dos tablas que están unidas con una relación de muchos-muchos en el número de artículo.
Uno de ellos (Tabla 1) es una tabla de referencia: contiene aproximadamente 40 entradas de número de artículo de un cierto tipo (algunas de las cuales son duplicados con otros valores diferentes asociados, que es la única razón por la que es muchos-muchos)

El otro (Tabla2) es un registro de devoluciones, con número de artículo como una de las columnas.

Lo que me gustaría hacer es crear una columna calculada en la Tabla2 que verifique si el Número de elemento de esa fila está representado en la Tabla 1.

Product Type X = 
if( 'Table2'[ITEM] IN related('Table1'[Item Number]), 1, 0 )

Sin embargo, recibo este mensaje de error: "La columna 'Tabla1 [Número de artículo]' no existe o no tiene relación con ninguna tabla disponible en el contexto actual".
A pesar de que sí tienen una relación en el modelo

swisdom_0-1638993755900.png

¿Algún consejo?

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Related() solo funciona en una relación de 1 a muchos, la columna calculada debe crearse en los muchos lados de una relación. Es por eso que no funcionará en su caso.

A medida que me doy la vuelta, crearía una nueva tabla de búsqueda usando la tabla 3=values('Table1'[Item Number] ) y la vincularía a la tabla 2. A continuación, puede escribir una fórmula relacionada

Tipo de producto X =
if( 'Table2'[ITEM] = related('Table3'[Item Number]), 1, 0 )

Syndicate_Admin
Administrator
Administrator

Relacionado no funcionará porque devuelve un solo valor. Debido a la naturaleza de su relación de muchos a muchos, podría devolver varias filas.


Debe contar las filas usando RELATEDTABLE. Sin embargo, también debe pasar el filtro de nuevo a la Tabla 1, por lo que, en ejemplo, crossfilter permite que el filtro vaya en ambos sentidos.

Exists In Table 1 = 

VAR RelatedRows = 
    CALCULATE (
        COUNTROWS ( RELATEDTABLE(Table1) ),
        CROSSFILTER ( Table1[ID], Table2[ID], Both )
    )

RETURN IF ( RelatedRows > 0 , 1, 0 )

La misma idea pero prefiero esta versión.

Exists In Table 1 = 
    CALCULATE (
        INT ( NOT ISEMPTY( ( Table1 ) ) ),
        TREATAS ( { Table2[ID] }, Table1[ID] )
    )

swisdom_1-1638996112516.pngswisdom_2-1638996137089.png
swisdom_0-1638996089687.png

Estoy recibiendo errores usando ambas fórmulas.

Solo necesita reemplazar Table1[ID] y Table2[ID] con nombres de tabla / columna relevantes de su modelo.

Sí, por supuesto, pero no encuentra table1 sin la función RELATED.

Echa un vistazo a mi ejemplo. Creo que he igualado su modelo hasta donde puedo ver: Archivo de demostración

Si los nombres de las tablas tienen espacios, asegúrese de que estén entre ' ' Por ejemplo, 'Tabla 1'[ITEM]

Creo que este podría ser el problema.
La función DAX "RELATED" no funciona entre las tablas DirectQuery e Import.
Tengo fuentes mixtas.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.