This issue is occurring because ATTR (or attribute) is an aggregation type within Tableau. This means that without some of your dimensions in the view, it is running this calculation over what is essentially the whole dataset instead of the individual rows. ATTR checks whether the min of a value is equal to its max. If they are equal, ATTR returns a value. If they are not equal, ATTR returns a * to denote that there were differing min/max.
Consider the following data:
If I built a viz with Region on the row shelf and then put a calc of ATTR(Country) out in the viz, I would get a * for NA and England for EU. Since the min is equal to the max for EU, we are able to return England. For NA, however, the min would be Canada and the max would be USA.
In order to get a value for ATTR(Country) for each row in my case I would have to add Country to detail.
This aspect of ATTR is even more important given that you are using blending. Without information from your linking field in the viz, Tableau has to check the ATRR(<your field from secondary ds>) against the entire secondary DB.
You either need to combine these two datasets into a single source so that you can use row level calculations without ATTR or you have to add dimensions to the viz itself (either on the row/column shelves or on detail).
I hope this helps,