Этот вопрос является продолжением другого вопроса, который у меня был здесь SAS: представление шага данных -> ошибка: по переменной неправильно отсортировано ; Я открываю новый вопрос, поскольку желаемое решение немного отличается: поскольку я перебираю несколько входных файлов, один из raw-файлов не отсортирован должным образом, мне интересно, что я мог бы сделать, чтобы моя программа пропустила этот конкретный входной файл и просто продолжить?
Цитата:
Я использую макрос для циклического обхода файлов на основе имен и извлечения данных, который отлично работает в большинстве случаев, однако время от времени я сталкиваюсь с
ERROR: BY variables are not properly sorted on data set CQ.CQM_20141113.
где CQM_20141113 - файл, из которого я извлекаю данные. Фактически мой макрос проходит через CQ.CQM_2014:
и работает до 2014 года. Из-за этой единственной ошибки файл не создается.
Я использую представление шага данных, чтобы «инициализировать» данные, а затем на следующем шаге вызвать представление шага данных (пример кода с сокращенными условиями там):
%let taq_ds = cq.cqm_2014:;
data _v_&tables / view=_v_&tables;
set &taq_ds;
by sym_root date time_m; *<= added by statement
format sym_root date time_m;
where sym_root = &stock;
run;
data xtemp2_&stockfiname (keep = sym_root year date iprice);
retain sym_root year date iprice;
set _v_&tables;
by sym_root date time_m;
/* some conditions */
run;
Когда я вижу ошибку в файле журнала и снова запускаю файл, он работает (иногда мне нужно несколько попыток).
Я думал о сортировке процедур, но как это сделать при использовании пошагового просмотра данных?
Обратите внимание, что cqm-файлы очень большие (что также может быть причиной проблемы).
Конец цитаты:
edit: я попробовал ваш код (и удалил оператор by в представлении шага данных), однако я получаю эту ошибку:
NOTE: Line generated by the macro variable "TAQ_DS".
152 cq.cqm_2013:
_
22
200
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',',
ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER,
INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT,
UNION, USING, WHERE.
ERROR 200-322: The symbol is not recognized and will be ignored.
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of
statements.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.02 seconds
cpu time 0.00 seconds
ERROR: File WORK._V_CQM_2013.DATA does not exist.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: SAS set option OBS=0 and will continue to check statements.
This might cause NOTE: No observations in data set.
WARNING: The data set WORK.XTEMP2_OXY may be incomplete. When this step was
stopped there were 0 observations and 8 variables.
NOTE: DATA statement used (Total process time):
real time 0.02 seconds
cpu time 0.00 seconds