Right, but as per my question, how is your filter set up? Is it a dropdown, or a field, or an auto-complete? Exact match?
As explained above, if the filter you applied to that element can, with 100% certainty, be refined to a single row, then you will already be getting a value, not a label, from filterValue(). You'll only be getting a "label" if we can't know if that filter was for a single row, or could potentially match multiple rows. If it could have matched multiple rows, we can't give you a value, period. And it shouldn't actually be a "Label", it'll actually just be whatever text they typed in the filter field.
Think of this situation. You are filtering on "States", and you have a filter of 'field' type on your States join element, and someone types "Ala". That could match "Alabama" or "Alaska", so we can't give you a value. All we can do is tell you they typed "Ala".
And that's the reason I said the behavior is inconsistent. If you knew you were always going to get label text (full or partial), you could do your own lookup on the target table, and process it however you need to. But as you don't know for sure which you are going to get, that makes things a little harder. Well, I think you can be sure in some contexts. So far the only truly inconsistent one I can find is 'auto complete' filters, depending on whether the user took one of the suggestions from the auto complete menu, or submitted it with just what they typed.
So ... answer my question about how the filter is set up - probably easiest to upload a screenshot - and I'll do some more testing for ya.
-- hugh