we've evolved to this so far...
=IIF(IsNothing(Lookup(Fields!GidfromdsA.Value, Fields!GIDfromdsB.Value, Fields!valuefromdsB.Value, "ds_datasetb")),false,true)
...in the row visibility expression.
while the results of that lookup are actually going in to one tablix column successfully, adding it as a filter on the row is causing vs 2017 to throw an exception in preview mode. i just found out from my friend that there are over 1 million rows in the lookup. which she may or may not be able to whittle down.
can a row visibility expression be based on what ends up in a tablix column cell or must it be based on incoming column values?
what i'm thinking about right now is perhaps a hidden param with a list of the gidfromdsa values passed to ds b as a filter. but something tells me that wont work. in general, i think she believes there are about 4000 rows in ds a.