DB2 서버에 구성원 목록을 업로드하려고 할 때이 문제가 발생하여 문제를 설명하기위한 최소한의 예제를 작성했습니다.SAS에서 DB2 테이블을 작성하면 누락 된 값이 추가됨
로컬로 생성 된 데이터 테이블을 SAS 9.2에서 DB2 데이터웨어 하우스 (ODBC 드라이버에 연결하여 액세스)의 테이블에 조인하기 위해 동일한 로컬 테이블을 같은 서버에 배치했습니다.)이 주장을 담고있다. 이것의 주요 목적은 member_ID가 업로드 된 목록에 포함 된 클레임 목록을 필터링하는 것입니다.
로컬 데이터의 첫 번째 행에 누락 된 값이있는 경우 (경우에 따라 구성원이 식별 정보를 갖지 못할 수도 있음) 로컬 측의 데이터는 DB2로 업로드 될 때 누락되지 않은 값을 잃게됩니다 개요. 문제점을 강조하기 위해 중요하지 않은 정보가있는 장난감 예를 첨부했습니다.
PROC IMPORT OUT= WORK.druglist DATAFILE= "C:\Users\caden2\Desktop\druglist.xls"
DBMS=EXCEL REPLACE;
RANGE="'Tab 4# Asthma Meds$'";
RUN;
DATA for_clinical;
SET druglist(KEEP= Drug_Class Drug_Type Generic GPI);
IF _N_ = 4 THEN DELETE;
IF _N_ <= 10;
IF _N_ = 1 THEN DO;
Drug_Class='';
Drug_Type='';
Generic='';
END;
RUN;
libname clinic odbc user=XXX password=XXX dsn=DWName schema=DWSchema autocommit=yes;
PROC SQL;
DROP TABLE clinic.caden_test;
CREATE TABLE clinic.caden_test AS
SELECT * FROM for_clinical;
QUIT;
PROC IMPORT 및 데이터 단계는 필요한 형식으로 데이터를 가져 오는 것으로 문제가 없어야합니다. 임상 라이브러리는 내 자격 증명을 사용하여 데이터웨어 하우스에 대한 ODBC 연결을 통해 만들어집니다. 아래의 스크린 샷은 로컬 시스템과 임상 서버에 설정된 데이터의 전후를 보여줍니다 (첫 번째 행에 약간의 누락이 있음을 확인하십시오). 나는 기록을 게시하지 않았다. 무서운 것은 내 기록이 어떤 것이 잘못되었다는 징후가 없다는 것입니다. 이 DB2, SAS에 문제가 있거나 SAS 및 DB2의 조합
인가? 로컬에서 로컬로 또는 DB2에서 DB2로 문제를 복제 할 수 없습니다. 또한 제거 된 값은 항상 대각선 형태로 나타납니다. 더 넓은 데이터 (4 개 이상의 변수)에서는 임의의 행에서 시작하여 마지막 열에 도달 할 때까지 대각선 방향으로 오른쪽으로 진행합니다.
Viewtable이 엉망이 아닌 의견에서 BellevueBob의 우려를 해결하기 위해 임상 데이터에 PROC FREQ를 출력하여 실종 상태가 실제로 있음을 보여줍니다.
BellevueBob의 답변은 누락 된 데이터가 문자이지만 같은 방식으로 데이터 테이블을 만들지 만 숫자 데이터를 사용하는 경우 작동합니다. 솔루션은 문자 데이터의 경우처럼 작동하지 않습니다.
이것이 SAS, DB2 또는 PEBKAC의 버그인지 여부는 확실하지 않으므로 처음 두 항목에 태그를 추가했습니다. –
질문을 수정하여 'clinic'에 사용 된 전체 SAS'libname' 문을 추가 할 수 있습니까? 또한 DB2 테이블 자체에 잘못된 컬럼 값이 있는지 확인하십시오. 'viewtable'은 악명 높게 까다 롭다. – BellevueBob
귀하의 우려 사항을 강조하기 위해 설명을 업데이트했습니다. 내 사용자 이름, 암호, dsn 및 스키마를 검열했지만 구문은 꽤 바닐라 ODBC 선언입니다. SQL 호출은 "클리닉"이 원격 라이브러리 또는 로컬 라이브러리라는 표시를 제공하지 않습니다. –