전산Tip/SAS

[SAS] 오라클vs SAS 테이블 건수 비교

모던아트 2011. 1. 21. 11:19
반응형


PROC SQL;
        CREATE TABLE TBL AS
        SELECT  A.*
        FROM    (
                SELECT  MEMNAME
                FROM    DICTIONARY.TABLES
                WHERE   LIBNAME = UPCASE("IR_ETL")
                ) AS A
                , ORA.TAB AS B
        WHERE   A.MEMNAME = B.TNAME
        ;
QUIT;

 

DATA    _NULL_;
SET     TBL END=EOF NOBS=CNT;
        CALL SYMPUT('MEMNAME'||LEFT(_N_), COMPRESS(MEMNAME));
        IF EOF THEN CALL SYMPUT('CNT', COMPRESS(CNT));
RUN;

 

OPTION MPRINT;
%MACRO M1;
        PROC SQL;
        CREATE TABLE TBL_CHK AS
        SELECT  A.*
                , CASE WHEN A.CNT_SAS ^= A.CNT_ORA THEN 'X' END AS CHK
        FROM    (
                %DO I = 1 %TO &CNT;
                %IF &I ^= 1 %THEN %DO;
                UNION ALL
                %END;
                SELECT  MEMNAME
                        , (SELECT COUNT(*) FROM IR_ETL.&&MEMNAME&I ) AS CNT_SAS
                        , (SELECT COUNT(*) FROM ORA_SVOC.&&MEMNAME&I ) AS CNT_ORA
                FROM    TBL
                WHERE   MEMNAME = "&&MEMNAME&I"
                %END;
                ) AS A
        ;
        QUIT;
%MEND;
%M1;