Pregunta

Tenemos una base de datos de Teradata que está lleno de tipos de datos BIGINT. SAS es el motor de análisis principal de la organización. La biblioteca de acceso SAS ahoga en BIGINT y por lo tanto obliga a todo el código para emitir variables en un número entero o decimal antes de devolverlos a SAS. Ejemplo:

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;

¿Alguien sabe una manera de solucionar este problema? Posiblemente una macro para las variables de fundición o solución de acceso SAS? Tenga en cuenta que hay literalmente miles de variables en esta base de datos que sean cambios bigint y haciendo a la base de datos está fuera de la cuestión.

¿Fue útil?

Solución

Si no se puede arreglar en el lado SAS, siempre se puede crear un conjunto de puntos de vista sobre el lado de Teradata para hacer la colada. Luego tener acceso a los puntos de vista SAS:

create view sas_cast_db.some_table as 
select col1, col2, cast(bigint_var as decimal(18)), col3
from real_db.some_table;

Dado que usted tiene un montón de mesas, puede ser posible escribir algunas SQL para generar automáticamente estos datos del diccionario de datos.

Otros consejos

La cuestión es que SAS sólo puede manejar un máximo de 15 dígitos para un tipo de datos BIGINT. SAS ha proporcionado algunas soluciones temporales para SAS 9.2 (mencionado anteriormente) para este problema. También puede obtener su SAS Plataforma de administración para los arreglos para el servidor SAS para ser actualizada de forma que trunca los campos BIGINT 15 dígitos (de salvedades obvias), o actualizar su estado de LIBNAME para establecer todos los BIGINTs a ser emitidos de forma automática.

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

Código de ejemplo

data temp1; 
   set mylib.bigclass (dbsastype= (id='char(20)'));
run;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top