When PROC FedSQL executes code on the SAS Compute Server (what you might call base SAS), it can ONLY access data from non-concatenated SAS libraries which are not associated with a caslib. When executing in CAS (as indicated by the presence of the SESSREF= option on the PROC FedSQL statement) it can ONLY access data in caslibs.
When you are operating in a multi-user CAS session, every user has a caslib named CASUSER. In order to differentiate your CASUSER caslib from other users, the system identifies the caslib as CASUSER(userID). So you need to use the actual CASLIB name for this, not the libref. Of course, the caslib name will seem inappropriate to the FedSQL compiler because of the included punctuation.
To make the name work as is, you can add double quotes to indicate that the text is a valid name, something like this:
proc fedsql SESSREF=&_SESSREF_;
create table "&mp_sourceName"."tmp_&inputTable" as
select a.*
,b.time_id as start_dt_sk
from "&mp_sourceName"."&inputTable" a
"&mp_sourceName"."ed_&inputTable" b
where a.%bquote(&time_dim.) between b.start_date and b.end_date
;
quit;
I hope this helps.
Mark
... View more