This is what you are expecting ?
I have created 2 Data sources as you just mentioned and created a calculation like this.
IF ATTR([Gender]='Unknown') THEN ATTR([Secondary].[Gender])
so where ever you are having Unknown for gender in primary data source it will take gender from secondary data source. You can use this calculation for Gender.
Hope this is what you are expecting.
Yes, I was also able to create calculated field as below:
if (ATTR([Gender]))='Unknown' and ATTR([Firstname])= ATTR([Gender By Name].[First Name]) THEN ATTR([Gender By Name].[Gender])
ELSE ATTR([Gender]) END
But, now I have another problem, where I would like to use this calculated field as dimension, but I can't convert it to measure at all as it is aggregated. If I use as filter, it doesn't give me any list (Male, Female) but All and *.
Any further idea? Thank you again