Загрузка данных из SAS в Teradata - когда он будет готов? - PullRequest
1 голос
/ 15 июля 2009

При загрузке таблиц из SAS в Teradata SAS загружает данные (обычно с использованием средства FASTLOAD) и затем продолжает выполнение сценария. Однако я часто получаю критические ошибки, потому что SAS говорит, что данные загружены, но Teradata все еще собирает данные в таблице.

Таким образом, данные находятся в базе данных, но не готовы к использованию. Мне еще предстоит найти способ узнать, готовы ли данные для обработки с другими таблицами. Я успешно использовал команду сна, но это произвольно и ненадежно (потому что, кто знает, сколько времени это займет).

Как бы вы решили эту проблему?

Ответы [ 3 ]

0 голосов
/ 15 июля 2009

Уточняя ответ Джона, вы, возможно, захотите посмотреть, закончилась ли обработка.

Я не знаком с Teradata, но предположительно должна быть системная таблица, в которой перечислены активные процессы. Возможно, можно использовать проход через SQL для запроса получения текущих процессов.

0 голосов
/ 17 июля 2009

Я бы попробовал следующее:

  1. Проверьте, может ли помочь опция набора данных DBCOMMIT =
  2. Если 1. не помогает, используйте цикл над функцией OPEN , чтобы узнать, готова ли таблица, например:

    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;
    
0 голосов
/ 15 июля 2009

Не могли бы вы поспать, попробовать выполнить запрос, поймать любую ошибку и выполнить цикл до готовности?

...