Forum Discussion
RELATED function - how it works
- 7 years ago
Anonymous
That's right, RELATED (which can only be used in a row context) follows a chain of one or more many-to-one relationships to retrieve a column value on the one-side.
Since RELATED returns a scalar value, isn't able to retrieve a value on the many-side, since there could be multiple values of a given column on the many-side.
One way you could lookup a single value on the many-side is using a function like FIRSTNONBLANK to return the "minimum" value.
Something like
Min Value on many side = FIRSTNONBLANK ( ManyTable[ManyColumn], 0 )
Since FIRSTNONBLANK carries out a context transition (behind the scenes), it ends up creating a filter context equivalent to the current row, which filters the table on the many-side. Read more here: https://dax.guide/firstnonblank/
The RELATEDTABLE function is also available to return the entire table on the many-side corresponding to the current row. You could use RELATETABLE then manipulate that in some way to produce a scalar result.
Regards,
Owen
Anonymous
That's right, RELATED (which can only be used in a row context) follows a chain of one or more many-to-one relationships to retrieve a column value on the one-side.
Since RELATED returns a scalar value, isn't able to retrieve a value on the many-side, since there could be multiple values of a given column on the many-side.
One way you could lookup a single value on the many-side is using a function like FIRSTNONBLANK to return the "minimum" value.
Something like
Min Value on many side = FIRSTNONBLANK ( ManyTable[ManyColumn], 0 )
Since FIRSTNONBLANK carries out a context transition (behind the scenes), it ends up creating a filter context equivalent to the current row, which filters the table on the many-side. Read more here: https://dax.guide/firstnonblank/
The RELATEDTABLE function is also available to return the entire table on the many-side corresponding to the current row. You could use RELATETABLE then manipulate that in some way to produce a scalar result.
Regards,
Owen