Я столкнулся с этой проблемой, когда попытался загрузить список членов на наш сервер DB2 и создал минимальный пример для объяснения проблемы.Создание таблицы DB2 в SAS добавляет недостающие значения
Чтобы подключить локально созданные таблицы данных из SAS 9.2 к таблицам в нашем хранилище данных DB2 (доступ с подключением к драйверу ODBC), моя процедура заключалась в размещении этих локальных таблиц на одном сервере (другая схема), в котором содержатся претензии. Основная цель этого - отфильтровать список претензий, в которых член_ID содержится в загруженном списке.
Если в первой строке локальных данных отсутствуют значения (иногда у члена может не быть части идентифицирующей информации), данные на локальной стороне теряют несколько не пропущенных значений при загрузке в DB2 схемы. Я привел пример с игрушкой с нечувствительной информацией, чтобы подчеркнуть проблему.
PROC IMPORT OUT= WORK.druglist DATAFILE= "C:\Users\caden2\Desktop\druglist.xls"
DBMS=EXCEL REPLACE;
RANGE="'Tab 4# Asthma Meds$'";
RUN;
DATA for_clinical;
SET druglist(KEEP= Drug_Class Drug_Type Generic GPI);
IF _N_ = 4 THEN DELETE;
IF _N_ <= 10;
IF _N_ = 1 THEN DO;
Drug_Class='';
Drug_Type='';
Generic='';
END;
RUN;
libname clinic odbc user=XXX password=XXX dsn=DWName schema=DWSchema autocommit=yes;
PROC SQL;
DROP TABLE clinic.caden_test;
CREATE TABLE clinic.caden_test AS
SELECT * FROM for_clinical;
QUIT;
процедурный ИМПОРТ и шаг данных просто получить данные в форме, мне нужно, и не должно быть никаких проблем. Клиническая библиотека создается через ODBC-соединение с нашим хранилищем данных с моими учетными данными. На скриншоте ниже показано до и после набора данных на локальном компьютере и на клиническом сервере (обратите внимание, что в первой строке есть недостаток). Я не публиковал журнал. Что страшно, так это то, что в моем журнале не было никаких указаний на то, что что-то не так.
Является ли это проблемой с DB2, SAS, или сочетание SAS и DB2? Я не могу реплицировать проблему, идущую от локальной к локальной или DB2-to-DB2. Кроме того, удаленные значения всегда появляются в диагональной формации. С более широкими данными (более 4 переменных) он начинается с произвольной строки и продолжается по диагонали вверх и вправо, пока не достигнет последнего столбца.
Чтобы выразить обеспокоенность BellevueBob в комментариях о том, что это не Viewtable messing up, вот вывод PROC FREQ на клинические данные, показывая, что недостаток действительно есть.
Ответ BellevueBob работает в случае, когда недостающие данные являются символами, но создавая таблицу данных таким же образом, но с числовыми данными решение не работает так, как это делается с символьными данными.
Я не был уверен, что это была ошибка с SAS, DB2 или PEBKAC, поэтому я пометил первые два. –
Можете ли вы изменить свой вопрос, чтобы добавить полное заявление SAS 'libname', используемое для' clinic'? Кроме того, уверены ли вы, что таблица DB2 имеет неправильные значения столбцов? 'viewtable' является печально известным. – BellevueBob
Я обновил описание, чтобы подчеркнуть ваши проблемы. Я подвергал цензуре свое имя пользователя, пароль, dsn и схему, но утверждение является довольно ванильным объявлением ODBC. Вызов SQL не дает никаких указаний на то, что «клиника» - это удаленная библиотека или локальная. –