It is not clear why have you used reusable mappings.
In mappings you add datastores (tables / views).
Datastores belongs to models.
Models have setup logical schemas, mapped to a physical schemas in a specific context.
Physical schemas belongs to a Data servers, describing the access to the databases.
Now, you can transfer data from one database to another. They may be also on different technologies: Oracle, MS Sql Server, MySql, Teradata, etc.
Since the source is a Sql query, then you need to use "Extract option".
So, you setup a model for source DB and reverse engineer a table.
You drag that table in the mapping.
You use "Extract option" and setup your SQL.
Instead of source table, ODI will use the Sql query to extract data.
The SQL query will be executed on the same logical schema setup in the model.
But prefix each table / function / view with its schema name.
Data sets are not needed also.
By default, when you create a mapping, there is a checkbox to create a data set also - you may uncheck it.
It is used more for backwards compatibility.