Question

Lorsque les tables de chargement de SAS à Teradata, SAS charge les données (généralement en utilisant l'installation de FASTLoad) et se poursuit ensuite sur le script. Cependant, je reçois souvent des erreurs critiques parce que SAS indique les données sont chargées, mais Teradata assemble encore les données contenues dans la table.

les données sont dans la base de données, mais pas prêt à être utilisé. Je n'ai pas encore trouver un moyen de savoir si les données sont prêtes à être traitées avec d'autres tables. J'ai réussi à l'aide d'une commande de sommeil, mais qui est arbitraire et peu fiable (car qui sait combien de temps il faudra).

Comment voulez-vous résoudre ce problème?

Était-ce utile?

La solution

Je les opérations suivantes:

  1. Test si le DBCOMMIT = option ensemble de données peut aider
  2. Si 1. ne fonctionne pas, utiliser une boucle sur fonction OPEN pour interroger si la table est prête, comme ceci:

    data _null_;
      dsid=0;
      do i=1 to 3600 while(dsid<=0);
         ts=SLEEP(1,1);
         dsid=OPEN('TERADATA.MYTABLE','I');
      end;
      if dsid then dsid=CLOSE(dsid);
    run;
    

Autres conseils

Pouvez-vous dormir, essayez d'interroger, capturer toute erreur et boucle jusqu'à ce prêt?

La réponse de raffinage Jon, vous voudrez peut-être regarder demandant si le traitement a pris fin.

Je ne suis pas familier avec Teradata, mais soi-disant il doit y avoir une table de systèmes actifs liste des processus. Il pourrait possible d'utiliser passe par SQL pour interroger obtenir les processus actuels.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top