Teradata和SAS与BigInt有公司
题
我们有一个充满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只能处理最多15个数字组成的BIGINT数据类型。 SAS还提供了一些变通的SAS 9.2(一个上面提到的)这个问题。你也可以得到你的SAS平台管理为SAS服务器(明显地告诫)安排进行更新,以便它截断BIGINT领域的15位数字,或更新您的LIBNAME语句来设置所有BIGINTs被自动转换。
示例代码
data temp1;
set mylib.bigclass (dbsastype= (id='char(20)'));
run;
不隶属于 StackOverflow