2015-04-24 2 views
1

У меня есть задание 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

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

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

Позвольте мне знать, если это помогает!

+0

Эй, сушил. У меня возникают проблемы с работой над этим документом. Я подозреваю, что мне просто нужно больше времени, чтобы переварить содержание, но сейчас давление на достижение моей цели, поэтому я возьму на себя грубую силу на данный момент, а затем пересматриваю документ. +1 пока что, и спасибо большое! – Rookatu

+0

Эй, Сушил. У меня установлен цикл. Параметрами заданий, которые должны быть закодированы, являются 'control_start_date' и' control_end_date' и имеют дату типа. Когда я пытаюсь запустить задание, которое будет проверено с помощью тестовых значений для приглашений, я получаю сообщение об ошибке «Недействительная дата/время/постоянное время» и control_start_date'D ». Есть ли другое выражение, которое я должен использовать для ссылки на параметры задания? Благодаря! – Rookatu

+0

Похоже, вы получаете сообщение об ошибке при использовании параметров в параметризованном потоке заданий (который будет зацикливаться). если в контрольной таблице переменная control_start_date & control_end_date имеет дату9. то использование параметра в параметризованном потоке заданий будет подобно my_date> = "& control_start_date" D. Если контрольная таблица не имела формата для даты, тогда использование будет выглядеть как my_date> =% unquote (& control_start_date). Обратите внимание, что my_date является столбцом даты на фиктивной таблице. – sushil

Смежные вопросы