The filter expression requests a true/false output. The function array_distinct() gives you an array with distinct values as an output, plus you need to use array_agg first, as @etrimaille pointed out. To get a true/false you can try something like:
"id" = array_first( array_agg( "id", group_by:= "cab_no."))
For id you have to insert your Key-Value Columnunique id column of the U_Cabinet layer. If your u_cabinet layer is big, this can get quite slow.
I think it helps to look at your problem from a different angle. For your purpose I would recommend to use the Widget Type "Value Map" -> Load Data from Layer -> Value and Description are both cab_no.