Как сделать цикл работы SAS DIS над строками таблицы параметров

У меня есть работа SAS DIS, которая извлекает и обрабатывает некоторые данные с метками времени. Характер работы таков, что данные должны обрабатываться поочередно, месяц за месяцем. Я могу использовать временной фильтр, чтобы гарантировать, что любой данный прогон находится в пределах требуемого периода времени, но затем я должен вручную изменить параметры этой таблицы и перезапускать задание, месяц за месяцем, пока все данные не будут обработаны.

Так как временные рамки простираются довольно далеко, я бы хотел максимально автоматизировать этот процесс. В идеале у меня была бы таблица, которая имеет следующую форму:

time_parameter_1 time_parameter_2
2JAN2010       1FEB2010
2FEB2010       1MAR2010
...            ...

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

Из того, что я понимаю, преобразование цикла в SAS DIS предназначено для циклического перемещения по таблицам, а не по строкам таблицы. Является ли решение поместить каждую дату в отдельную таблицу, или есть прямой способ добиться этого?

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

РЕДАКТИРОВАТЬ

Итак, с помощью сообщения Сушила я нашел решение. Во-первых, кажется, что SAS DIS требует, чтобы параметры даты были переданы в виде текста, а затем преобразованы в желаемый формат даты (по крайней мере, это единственный способ, которым я мог заставить вещи работать).

Процедура выглядит следующим образом:

В виде сетки задания, которое будет зациклено, щелкните правой кнопкой мыши и выберите "Свойства". Перейдите на вкладку "Параметры" и выберите "Новая группа". Назовите параметр на вкладке Общие (давайте использовать control_start_date) и на вкладке Тип подсказки и значения выберите Тип подсказки "Текст". Нажмите OK и добавьте любые другие параметры, используя тот же метод (скажем, control_end_date это еще один параметр).

Создайте управляющее задание, которое зациклится на параметризованном задании. Импортируйте или создайте таблицу параметров (дат) для зацикливания. Это должны быть символьные представления дат.

Подключите таблицу параметров к преобразованию Loop, подключите параметризованное задание к правому концу преобразования Loop и подключите правый конец параметризованного задания к преобразованию Loop End.

Щелкните правой кнопкой мыши преобразование Loop и выберите Свойства. Выберите вкладку "Сопоставление параметров" и правильно сопоставьте столбцы даты контрольной таблицы с параметрами параметризованного задания (control_start_date а также control_end_date). На вкладке Столбцы целевой таблицы убедитесь, что столбцы параметров сопоставлены с целевой таблицей. Выберите ОК.

В параметризованном задании создайте преобразование пользовательского кода. Создать столбцы start_date а также end_date (тип DATE9.) и заполните выходную рабочую таблицу, используя следующий код:

DATA CONTROL_DATES;

    start_date = input(trim("&control_start_date"),DATE9.);
    end_date = input(trim("&control_end_date"),DATE9.);

RUN;

Соедините даты в рабочем столе WORK.CONTROL_DATES к логике работы (возможно, с объединением), чтобы они служили фильтрами в нужном объеме. Сохраните параметризованную работу.

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

Многое из этого описано в следующем PDF, но я не уверен, как долго эта ссылка будет существовать, и некоторые из проблем, с которыми я столкнулся, там не рассматривались.

1 ответ

Решение

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

Вот пример использования циклического преобразования, которое отличается от упомянутого в документации SAS DI Studio и имеет отношение к вашей проблеме: PDF

Дайте мне знать, если это поможет!

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