У меня есть задание SAS DIS, которое извлекает и обрабатывает некоторые временные данные. Характер задания таков, что данные должны обрабатываться бит за раз, месяц за месяцем. Я могу использовать временный фильтр, чтобы гарантировать, что какой-либо заданный прогон находится в пределах требуемого таймфрейма, но затем я должен вручную изменить параметры этой таблицы и повторить задание месяц за месяцем, пока все данные не будут обработаны.Как сделать цикл работы SAS DIS над строками таблицы параметров
Поскольку временные рамки простираются довольно далеко, я бы хотел как можно больше автоматизировать этот процесс. В идеале я бы таблица, которая имеет следующий вид:
time_parameter_1 time_parameter_2
2JAN2010 1FEB2010
2FEB2010 1MAR2010
... ...
, который может быть частью итеративной работы, которая продолжает выполнять свою обработку задания со значениями этой таблицы в качестве параметров времени, пока таблица не будет исчерпана.
Из того, что я понимаю, преобразование цикла в SAS DIS предназначено для циклического перемещения по таблицам, а не по строкам таблицы. Является ли решение помещать каждую дату в отдельную таблицу или есть прямой способ достичь этого?
Большая благодарность.
EDIT
Таким образом, с помощью поста Sushil «s, я определил решение. Во-первых, кажется, что SAS DIS требует, чтобы параметры даты передавались как текст, а затем преобразовывались в нужный формат даты (по крайней мере, это единственный способ заставить работу работать).
Процедура выглядит следующим образом:
В табличном задания должны быть петельные, щелкнув правой кнопкой мыши и выберите Свойства. Перейдите на вкладку «Параметры» и выберите «Новая группа». Назовите параметр на вкладке «Общие» (воспользуйтесь control_start_date
), а на вкладке «Тип запроса и значения» выберите «Тип запроса» «Текст». Нажмите OK и добавьте другие параметры с использованием того же метода (скажем, control_end_date
- еще один параметр).
Создайте контрольное задание, которое будет проходить через параметризованное задание. Импортируйте или создайте таблицу параметров (дат) для перебора. Это должны быть характерные представления дат.
Подключите таблицу параметров к преобразованию цикла, подключите параметризованное задание к правому концу преобразования цикла и соедините правый конец параметризованного задания с преобразованием конца цикла.
Щелкните правой кнопкой мыши трансформацию цикла и выберите Свойства. Перейдите на вкладку «Сопоставление параметров» и правильно сопоставьте столбцы даты таблицы управления с параметрами параметризованного задания (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 пока что, и спасибо большое! – Rookatu
Эй, Сушил. У меня установлен цикл. Параметрами заданий, которые должны быть закодированы, являются 'control_start_date' и' control_end_date' и имеют дату типа. Когда я пытаюсь запустить задание, которое будет проверено с помощью тестовых значений для приглашений, я получаю сообщение об ошибке «Недействительная дата/время/постоянное время» и control_start_date'D ». Есть ли другое выражение, которое я должен использовать для ссылки на параметры задания? Благодаря! – Rookatu
Похоже, вы получаете сообщение об ошибке при использовании параметров в параметризованном потоке заданий (который будет зацикливаться). если в контрольной таблице переменная control_start_date & control_end_date имеет дату9. то использование параметра в параметризованном потоке заданий будет подобно my_date> = "& control_start_date" D. Если контрольная таблица не имела формата для даты, тогда использование будет выглядеть как my_date> =% unquote (& control_start_date). Обратите внимание, что my_date является столбцом даты на фиктивной таблице. – sushil