У меня есть существующее решение ETL со встроенной интеграцией данных SAS, где один из столбцов изначально настроен на все нулевые значения. Я хочу заполнить этот столбец фактическими данными. Исходный столбец в этой таблице был настроен на получение числовых значений в определенном формате и в определенном формате. После того, как я изменил код (это самая простая часть), я заметил, что столбец не принимает символьные значения (я не получил ошибку, я просто заметил, что столбец по-прежнему имеет все значения NULL). Кто-нибудь может помочь?
Как изменить данные в столбце в SAS Data Integration?
Ответы (1)
Итак, у вас есть таблица, определенная в студии интеграции данных (1) и созданная давным-давно путем выполнения задания (2) с числовым столбцом. Назовем эту таблицу THE_TABLE
, поле the_field
и задание The_Job
, загружающее данные в THE_TABLE
.
Вы должны понимать принципиальную разницу
- определение
THE_TABLE
в студии DI, которая создает описание таблицы в метаданных - создание
THE_TABLE
путем запускаThe_Job
, который создает файл в папке с данными
Если The_Job
действительно каждый раз создает THE_TABLE
с нуля (что характерно для заданий ETL), то достаточно изменить THE_TABLE
и The_Job
в DI studio. Ваши изменения изменят только метаданные, но при следующем запуске The_job
будет создан THE_TABLE
с правильной структурой.
Однако, если The_Job
обновляет THE_TABLE
или дополняет его, ваши изменения не изменят структуру THE_TABLE
, и ваша работа не будет соответствовать структуре файла THE_TABLE
, как будто он все еще существует в папке, поэтому вы должны преобразовать THE_TABLE
перед запуском The_Job
.
Это можно сделать с помощью простой программы, например
data THE_TABLE;
set THE_TABLE (drop=the_field); /* forget about the numeric field */
attrib the_field length=$200 format=$200.; /* and create the character field */
run;
Правильный оператор attrib вполне может быть где-то в коде, сгенерированном для The_Job
.
Имейте в виду, что в типичной установке со средой разработки, тестирования и производства вам понадобится эта программа один раз в каждой среде.