Условно пропустить преобразования в SAS DIS

Мне интересно, возможно ли использовать преобразование "Условный запуск" в SAS DIS, чтобы условно обойти другое преобразование, основанное на том, пуста ли данная таблица (нет строк). Эта ссылка, кажется, указывает, что условие должно основываться на значении переменной параметра.

У меня была идея создать значение параметра в преобразовании пользовательского кода и присвоить ему разные значения в зависимости от состояния таблицы, но это кажется сложным и не элегантным, и я не уверен, что это сработает. Есть ли более простой способ?

Большая благодарность

2 ответа

Чтобы сделать это без добавления какого-либо пользовательского преобразования и, возможно, элегантно, вы можете попробовать то, что я обычно использую. Сначала скопируйте макрос numobs, опубликованный @cmjohns ( /questions/7541546/kak-opredelit-skolko-nablyudenij-v-nabore-dannyih-ili-esli-on-pust-v-sas/7541575#7541575), и добавьте его в предварительный код потока работ. После этого перейдите к исходному преобразованию, которое необходимо пропустить на основе наблюдения, и щелкните правой кнопкой мыши, чтобы получить вкладку свойств этого преобразования. Затем перейдите на вкладку "Предварительный код и почтовый индекс" и добавьте следующий код:

%macro dummy;
%if %nobs(&SYSLAST) gt 0 %then %do;

После того, как это сделано, перейдите к преобразованию, которое будет последним пропущенным преобразованием на основе счетчика наблюдений и щелкните правой кнопкой мыши, чтобы получить свойства преобразования и перейти на вкладку Precode Postcode и добавить следующий код:

%end;
%mend dummy;
%dummy;

Если нужно пропустить только 1 преобразование, вы можете добавить почтовый индекс и прекод, указанные выше, на той же вкладке с прекодом и почтовым индексом этого отдельного преобразования, чтобы пропустить его на основе количества наблюдений.

Примечание: SAS DI Studio 4.8 имеет условные преобразования, которые могут решить ту же проблему. Но для DI студийной версии до этого мы должны написать код, чтобы получить условное исключение преобразований.

В первоначальном вопросе спрашивалось, как определить, не существует ли таблица вообще, и этот ответ решает эту проблему.Это не помогает определить, имеет ли набор данных ноль строк.


Так как ваша ссылка говорит, что это будет просто%evalвсе, что вы положите в эту коробку, вы можете использоватьexist функция.

Например:

%put %sysfunc(exist(sashelp.class));
%put %sysfunc(exist(sashelp.classzas));

Первый возвращает 1 (true), последний 0 (false) на моей машине.

Другие вопросы по тегам