문제

BIGINT 데이터 유형으로 채워진 테라데이터 데이터베이스가 있습니다.SAS는 조직의 기본 분석 엔진입니다.SAS 액세스 라이브러리는 BIGINT를 질식시키므로 모든 코드가 변수를 SAS로 반환하기 전에 정수 또는 소수로 변환하도록 강제합니다.예:

proc sql;
connect to database (blah blah);
create table sas_dataset as 
  select * from connection to database(
    select
      cast(bigint_var as integer),
      varchar_var,
      char_var,
    from some_table
    );
  disconnect from database;
  quit;

이 문제를 해결하는 방법을 아는 사람이 있나요?변수 캐스팅이나 SAS 액세스 수정을 위한 매크로일까요?이 데이터베이스에는 문자 그대로 수천 개의 bigint 변수가 있으며 데이터베이스를 변경하는 것은 불가능하다는 점을 명심하십시오.

도움이 되었습니까?

해결책

SAS 쪽에서 고칠 수없는 경우, 캐스팅을 수행하기 위해 항상 Teradata쪽에 뷰 세트를 만들 수 있습니다. 그런 다음 SAS가보기에 액세스하도록하십시오.

create view sas_cast_db.some_table as 
select col1, col2, cast(bigint_var as decimal(18)), col3
from real_db.some_table;

테이블이 많기 때문에 데이터 사전에서이를 자동 생성하기 위해 SQL을 작성할 수 있습니다.

다른 팁

문제는 SAS가 BIGINT 데이터 유형에 대해 최대 15자리만 처리할 수 있다는 것입니다.SAS는 이 문제에 대해 SAS 9.2(위에서 언급한 것)에 대한 몇 가지 해결 방법을 제공했습니다.또한 SAS 플랫폼 관리자에게 SAS 서버가 업데이트되도록 요청하여 BIGINT 필드를 15자리로 자르거나(명백한 주의 사항 적용) LIBNAME 문을 업데이트하여 모든 BIGINT가 자동으로 캐스팅되도록 설정할 수도 있습니다.

http://support.sas.com/kb/39/831.html

샘플 코드

data temp1; 
   set mylib.bigclass (dbsastype= (id='char(20)'));
run;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top