Данные не существуют

Я столкнулся с очень странной проблемой.

Я назначил имя библиотеки, например

libname TEST_LIB "/Info-One/...." /*have removed the exact location*/

/*The dataset TEST_DATA is visible in this output*/
proc datasets lib = TEST_LIB;
RUN;

/*This statement throws an error saying the file does not exist*/
DATA TEST_DATA_2;
  set TEST_LIB.TEST_DATA;
RUN;

Я запускаю этот код в руководстве SAS Enterprise, подключенном к удаленному серверу.

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

У меня закончились идеи, и я не знаю, как решить эту проблему.

Пара вещей, которые я пробовал / проверял

  1. Чувствительность к регистру не проблема
  2. В имени файла нет пробелов
  3. У меня есть права доступа к папке, потому что я могу нормально работать с другим набором данных, который я создал и поместил в эту папку.
  4. На самом деле, если я скопирую данные в Excel, загружу Excel в SAS, чтобы создать набор данных SAS и поместить его в то же место с другим именем, я столкнусь с той же проблемой!

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


person Raunak Thomas    schedule 16.11.2018    source источник
comment
Можете ли вы показать вывод из содержимого proc? proc contents data=test_lib.test_data; run. Интересно, чувствителен ли он к регистру ... также возможно, что набор данных существует, но пуст, сколько записей отображается с PROC DATASETS.   -  person Reeza    schedule 16.11.2018
comment
Является ли удаленный сервер Windows, Unix или мейнфреймом? После перетаскивания в библиотеку EG таблица исчезает при обновлении (меню правой кнопки мыши) узла библиотеки?   -  person Richard    schedule 17.11.2018
comment
@Reeza Чувствительность к регистру была первым, что я проверил, но до сих пор не решает проблему. Набор данных не пустой, когда я перетаскиваю его в EG, я вижу строки. PROC Contents не запускается из-за той же ошибки. TEST_DATA does not exist. И да, в имени набора данных нет пробелов   -  person Raunak Thomas    schedule 17.11.2018
comment
@ Ричард Я не совсем уверен, но думаю, что это Unix. По сути, я могу войти в него со своими учетными данными и именем сервера usehux491.orgame. Я также могу получить доступ к этой папке с помощью проводника Windows, потому что я думаю, что ИТ-специалисты настроили диск таким образом, чтобы он был привязан к этому местоположению. Но местоположение должно быть папкой Unix, потому что мне нужно предоставить права на запись другим, прежде чем они смогут изменить его с помощью putty/filezilla. Нет, таблица не исчезает при обновлении узла библиотеки   -  person Raunak Thomas    schedule 17.11.2018
comment
Вот 2 возможности: 1) регистр имени файла набора данных, имена файлов Unix для наборов данных (на уровне операционной системы) должны быть строчными. Если фактический файл смешанный или в верхнем регистре, сеанс SAS, работающий в Unix, не будет правильно отображать карту (хотя вы можете попробовать использовать литерал константы имени "<actual-filename>"N для ссылки на набор данных). 2) Существует проблема с правами доступа к файлам при монтировании папки, позволяющая читать каталоги, но не файлы внутри. Как выглядит список каталогов Unix пути к библиотеке, когда вы вводите ls -l   -  person Richard    schedule 17.11.2018
comment
Когда вы попытаетесь открыть его, проверьте свой журнал. Есть сообщение об ошибке? Попробуйте установить «options nofmterr;» и посмотрите, работает ли это. Можете ли вы опубликовать вывод из наборов данных Proc? Возможно ли, что в конце имени файла есть пробел. Вы можете увидеть набор данных, поэтому щелкните его правой кнопкой мыши, выберите свойства и проверьте путь.   -  person Reeza    schedule 17.11.2018
comment
@Richard Вау, спасибо большое!!! Вот почему я люблю Stack Overflow, мы можем найти здесь таких опытных людей. Раньше я проверял права доступа к файлам, а Reeza также проверял пробелы. Мой набор данных был в верхнем регистре, и я не совсем понимаю, почему это произошло, но теперь, когда он в нижнем регистре, я не сталкиваюсь с какими-либо проблемами. Большое спасибо за вашу помощь. Если хотите, вы можете опубликовать это как ответ, чтобы он был полезен для других, и если у вас есть какие-либо предложения, я могу отредактировать вопрос, чтобы он был полезен для других.   -  person Raunak Thomas    schedule 17.11.2018


Ответы (2)


Перенесено из комментариев и расширено

Вот 2 возможности:

  1. Имя файла набора данных может содержать верхний регистр. Это маловероятный, но возможный сценарий:

    В системах Unix имена файлов вводятся с учетом регистра. Имя набора данных в программе SAS будет внутренне сопоставлено с соответствующим файлом данных с именем в нижнем регистре (эти sas7bdat файлы на уровне операционной системы). Если процесс копирования каким-то образом создает файл данных .sas7bdat в Unix, имя которого написано в смешанном или верхнем регистре, сеанс SAS не будет отображаться на него. В таком случае проводник файлов SAS может перечислить набор данных, но не сможет его открыть. Однако прямая ссылка на набор данных может работать, например,
    set '~/project1/datasets/MyWeirdlyCasedDataset';

  2. Существует проблема с правами доступа к файлам при монтировании папки, позволяющая читать записи каталога (имена файлов), но не содержимое файла (наборы данных) внутри. Попробуйте открыть сеанс терминала (замазка или mobaxterm) и посмотрите, какой подробный список каталогов для папки данных (ls -l). Возможно, вам также придется просмотреть списки контроля доступа (lsacl) и привлечь сетевого и ИТ-администратора.

person Richard    schedule 17.11.2018
comment
Ваш первый пункт немного запутан. Независимо от того, какой регистр вы используете в своем коде SAS, имя физического файла в Unix должно быть написано строчными буквами. - person Tom; 18.11.2018
comment
Надеюсь, что редактирование прояснит сценарий, о котором я размышлял. - person Richard; 18.11.2018

Вы уверены, что это набор данных? Поместите memtype=data в наборы данных Proc, как показано ниже.

наборы данных proc lib = TEST_LIB memtype=data; БЕГАТЬ;

person Wilson Jimenez    schedule 19.11.2018
comment
Ну, это был набор данных, и проблема заключалась в том, что Ричард указал в своем первом пункте. - person Raunak Thomas; 19.11.2018