On some combinations of parameters (dimensions, dates) Google Analytics returns less rows than expected, sometimes none at all.
This can be the result of the behavior described here:
Here is the important place from the conversation from Google people:
So this is a fundamental concept of how Google Analytics works today. GA calculates the values of dimensions and metrics for each hit. These values are then used to update rows of tables you see in the reports. If any of the dimensions do not have a value, the entire row is not added to the table.
For some dimensions, GA uses the default value of (not set).
Custom Variable do not have a default value, so if a hit does not have a custom variable associated with it, all the other dimensions in the query are not added to the reports.
If you need to see the (not set) value, you could try sending a default value for custom variables.
One thing one can do in such case is to do split the query in two an do a left outer join in Data Virtuality on some field. Often, date or transactionId are good candidates.