Question

Nous avons une base de données de Teradata qui est rempli de types de données BIGINT. SAS est le moteur d'analyse primaire pour l'organisation. La bibliothèque d'accès SAS selfs sur BIGINT et oblige donc tout le code pour lancer des variables dans un nombre entier ou décimal avant de les retourner à SAS. Exemple:

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;

Quelqu'un sait-il un moyen de résoudre ce problème? Peut-être une macro pour les variables de coulée ou solution d'accès SAS? Gardez à l'esprit qu'il ya littéralement des milliers de variables dans cette base de données qui sont des changements bigint et de faire la base de données est hors de question.

Était-ce utile?

La solution

Si vous ne pouvez pas le fixer sur le côté SAS, vous pouvez toujours créer un ensemble de vues sur le côté Teradata pour faire le casting. Ensuite, avoir accès SAS la vue:

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

Puisque vous avez beaucoup de tables, il peut être possible d'écrire quelques SQL pour générer automatiquement ces derniers du dictionnaire de données.

Autres conseils

Le problème est que SAS ne peut gérer un maximum de 15 chiffres pour un type de données BIGINT. SAS ont fourni quelques contournements pour SAS 9.2 (celui mentionné ci-dessus) pour cette question. Vous pouvez également obtenir votre administrateur SAS Platform pour prendre des dispositions pour le serveur SAS à être mis à jour afin qu'il tronque les champs BIGINT à 15 chiffres (mises en garde évidentes sont applicables), ou mettre à jour votre déclaration LIBNAME de mettre tous bigints à couler automatiquement.

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

Exemple de code

data temp1; 
   set mylib.bigclass (dbsastype= (id='char(20)'));
run;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top