Объединение данных SAS в таблицу Teradata - PullRequest
0 голосов
/ 20 сентября 2019

Использование: SAS Enterprise Guide 7.13

ЦЕЛЬ: я пытаюсь выполнить внутреннее соединение таблицы SAS с таблицей в Teradata с помощью SAS EG без использования подзапроса.

Примечание:У меня нет привилегий записи, кроме изменчивых таблиц в Teradata.

Мой текущий подход ниже приводит к следующей ошибке.ОШИБКА: Teradata prepare: База данных '& USDomID.E' не существует.Ошибка возникает при создании таблицы XREF_CAK с использованием соединения с Teradata.

PROC SQL;
            CONNECT TO TERADATA (USER=&tuserid. PASSWORD=&tpswd. TDPID=DWPROD2 CONNECTION=GLOBAL MODE=TERADATA SCHEMA=EDW_ALLPHI);

            CREATE TABLE xin AS
            SELECT DISTINCT 
            &xref_cak. AS XREF_CAK,
            adjdctn_dt
            FROM
            &datain.;
            QUIT;

LIBNAME &USDomID.E TERADATA USER=&tuserid. PASSWORD=&tpswd. TDPID=xxxx CONNECTION=GLOBAL DBMSTEMP=YES TPT=NO MODE=TERADATA; 

        PROC SQL;
            CONNECT TO TERADATA (USER=&tuserid. PASSWORD=&tpswd. TDPID=xxxx CONNECTION=GLOBAL MODE=TERADATA SCHEMA=EDW_ALLPHI);
        %dropvts(myxref)
        QUIT;


        PROC SQL;
        PROC APPEND DATA=xin BASE=&USDomID.E.myxref (TPT=NO MULTISTMT=YES);
        RUN;

PROC SQL;
CONNECT TO TERADATA (USER=&tuserid. PASSWORD=&tpswd. TDPID=xxxx CONNECTION=GLOBAL MODE=TERADATA SCHEMA=EDW_ALLPHI);

CREATE TABLE XREF_CAK AS
    SELECT * 
    FROM CONNECTION TO TERADATA (
      SELECT
        CLM_SOR_CD,
        CLM_ADJSTMNT_KEY,
        SRC_SBSCRBR_ID,
        SRC_MBR_SQNC_NBR,
        CONCAT('SCCF ',CLM_ITS_SCCF_NBR) AS CLM_ITS_SCCF_NBR_FORMATTED, CAST(CLM_ITS_SCCF_NBR_FORMATTED AS varchar(35)),
        CASE
            WHEN CLM_SOR_CD ='822' THEN 'AC'
            WHEN CLM_SOR_CD ='823' THEN 'CF'
            WHEN CLM_SOR_CD ='869' THEN 'CH'
            WHEN CLM_SOR_CD ='809' THEN 'CS'
            WHEN CLM_SOR_CD ='824' THEN 'NA'
            WHEN CLM_SOR_CD ='808' THEN 'WG'
            WHEN CLM_SOR_CD ='889' THEN 'VAITS'
        ELSE CLM_SOR_CD
        END AS SOR_CD_TXT,CAST(SOR_CD_TXT AS varchar(5)),
        CONCAT(SOR_CD_TXT,',',SRC_SBSCRBR_ID,',',SRC_MBR_SQNC_NBR,',',CLM_ITS_SCCF_NBR_FORMATTED) AS XREF_CAK_CONCAT, CAST(XREF_CAK_CONCAT AS varchar(100))
    FROM EDW_ALLPHI.CLM
INNER JOIN
    &USDomID.E.myxref x on
x.XREF_CAK = c.clm_adjstmnt_key and
x.adjdctn_dt = c.adjdctn_dt     
    );

DISCONNECT FROM TERADATA;
QUIT;

1 Ответ

0 голосов
/ 21 сентября 2019

Наконец-то все заработало.Код ниже для тех, у кого есть такая же проблема.Ключ получал правильную настройку libname с помощью DBMSTEMP = YES TPT = Не включен

%let ID=%scan(%qsysfunc(dequote(&tuserid)), 1, @);

/*set Teradata connection libref*/
libname &ID. teradata user="%qsysfunc(dequote(&tuserid))" password="%qsysfunc(dequote(&tpswd))"  TDPID=XXXX connection=global DBMSTEMP=YES TPT=No MODE=TERADATA SCHEMA=XXXX;

DATA MY_XREF_SAS;
SET  &datain.;
RUN;

/*loads unique XREF_CAKs set into Teradata*/
DATA &ID..MY_XREF (MULTISTMT=YES);
SET  &datain.;
RUN;

PROC SQL FEEDBACK;
    CONNECT TO TERADATA (USER=&tuserid. PASSWORD=&tpswd. TDPID=XXXXX CONNECTION=GLOBAL MODE=TERADATA SCHEMA=XXXXX);

Create Table XREF as SELECT * FROM CONNECTION TO TERADATA(
      SELECT
        c.COL1,
        c.COL2,
        c.COL3,
        c.COL4,
        CONCAT('SCCF ',c.COL5) AS COL5_FORMATTED, CAST(COL5_FORMATTED AS varchar(35))
    FROM XXXXX.XXX c
INNER JOIN &ID..MY_XREF x on
x.XREF_CAK = c.clm_adjstmnt_key 
    );

drop table &ID..MY_XREF;

DISCONNECT FROM TERADATA;
QUIT;
...