When I tried the same scenario as you mentioned where base_view1(full cached), base_view2(from source) and performed join operation, the query got delegated to the source and no operation was performed in the Denodo layer.
For your scenario, I would check if the source (data source) and cache data source both belong to the same virtual database.
Also, if the cache data source is the same as the source, then I would suggest you to use the **Specify an existing data source as cache** option in the **Administration> Cache** section in the Virtual DataPort Administration Tool. So that, Denodo could understand the source and cache belongs to the same source and that all the operation would be delegated to the source itself.
If you are a valid support user, I would suggest you raise a support case in [Denodo Support site](https://support.denodo.com/) where an engineer could assist you further with your scenario.
Hope this helps!!