代码之家  ›  专栏  ›  技术社区  ›  AFHood

带有BigInt的Teradata和SAS

  •  2
  • AFHood  · 技术社区  · 16 年前

    我们有一个teradata数据库,其中填充了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变量,对数据库进行更改是不可能的。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Carlos A. Ibarra    16 年前

    如果不能在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来从数据字典自动生成这些表。

        2
  •  1
  •   Lachlan Macnish    13 年前

    问题是SAS最多只能处理15位BIGINT数据类型。

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

        3
  •  -1
  •   logc    11 年前

    示例代码

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