2009-06-04 29 views
2

私たちはBIGINTデータ型で満たされたteradataデータベースを持っています。 SASは、組織の主要な分析エンジンです。 SASアクセスライブラリはBIGINTでチョークするため、すべてのコードで変数を整数または小数点に変換してからSASに返します。例:BigIntのTeradataと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アクセスの修正用のマクロですか?このデータベースには文字通り何千もの変数があり、データベースに変更を加えることは問題ではないことに留意してください。

+0

あなたは9.1.3にありますか?次の9.1.3のホットフィックスが発行されました:http://support.sas.com/kb/34/729.html – cmjohns

+0

パッチを適用しました。問題の修正に失敗しました。 – AFHood

+1

その場合、私はあなたの最善の策は、彼らが働くことを期待しているように彼らのサポートに連絡することだと思う。 – cmjohns

答えて

2

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を記述することも可能です。

1

問題は、SASがBIGINTデータタイプに対して最大15桁しか扱えないことです。 SASは、この問題のためにSAS 9.2(上記のもの)のいくつかの回避策を提供しています。また、BIGINTフィールドを15桁に切り捨てる(明らかな警告が適用される)ように、SASサーバーを更新するようにSAS Platform Adminを設定するか、LIBNAMEステートメントを更新してすべてのBIGINTを自動的にキャストするように設定することもできます。

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

-1

サンプルコード

data temp1; 
    set mylib.bigclass (dbsastype= (id='char(20)')); 
run;