質問

私たちは、BIGINTデータ型で満たされているTeradataデータベースを持っています。 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プラットフォーム管理者は、それが15桁にBIGINTフィールドを切り捨てるように(明白な注意事項が適用されます)更新するSASサーバの手配、またはすべてのBIGINTsが自動的にキャストされるように設定するには、あなたのLIBNAMEステートメントを更新するように取得することができます。

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

サンプルコード

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