3

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 変数があり、データベースを変更することは問題外であることに注意してください。

4

3 に答える 3

4

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を書くことができるかもしれません。

于 2009-06-04T22:42:10.517 に答える
1

問題は、SAS が BIGINT データ型に対して最大 15 桁しか処理できないことです。SAS は、SAS 9.2 (上記の 1 つ) に対して、この問題に対するいくつかの回避策を提供しています。また、BIGINT フィールドを 15 桁に切り捨てるように SAS サーバーを更新するよう SAS プラットフォーム管理者に依頼するか (明らかな注意事項が適用されます)、LIBNAME ステートメントを更新してすべての BIGINT が自動的にキャストされるように設定することもできます。

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

于 2012-01-10T05:15:34.913 に答える
-1

サンプルコード

data temp1; 
   set mylib.bigclass (dbsastype= (id='char(20)'));
run;
于 2014-04-12T13:55:13.820 に答える