Интересно, как скачать какой-нибудь файл .csv с помощью SAS.
Просматривая веб-страницы, я обнаружил, что это можно сделать, запустив следующий скрипт:
filename NAME url "http://.../NAME_OF_THE_FILE.csv"
В частности, я хочу понять, как работает такое утверждение, и в этом случае я не могу его использовать.
Например, давайте предположим, что нужно загрузить CSV-файл, который загружен на веб-странице, как, например, в Веб-сайт, где можно найти данные футбольного матча.
В таком случае, используя следующий скрипт для загрузки файла:
filename csv url "http://www.football-data.co.uk/mmz4281/1617/E0.csv";
и следующий для импорта данных в SAS:
proc import file = csv
out = junk_00
dbms = csv replace;
delimiter = ",";
run;
все отлично работает Этот файл соответствует сезону 2016/2017 и содержит данные Премьер-лиги, которые можно найти по первой ссылке.
Вместо этого, в случае данных чемпионата за сезон 2016/2017, используйте тот же сценарий, как указано ниже:
filename csv url "http://www.football-data.co.uk/mmz4281/1617/E1.csv";
proc import file = csv
out = junk_00
dbms = csv replace;
delimiter = ",";
run;
вы получите следующую ошибку:
Import unsuccessful. See SAS Log for details.
Просматривая в окне LOG, вы можете увидеть среди строк LOG следующее примечание / предупреждение:
Invalid data for Date
, даже если файл отформатирован правильно.
Я не понимаю, почему иногда сценарий работает, а иногда нет, поскольку это произошло с другим файлом, хотя файл не был поврежден и отформатирован правильно и таким же образом.
В чем дело?
Может ли кто-нибудь помочь мне понять, почему это происходит?
Спасибо всем заранее!
Proc Import должен угадывать типы данных. По некоторым причинам он думает, что поле даты отформатировано как MMDDYY, но на самом деле это DDMMYY. Или, может быть, он используется непоследовательно, я не все проверил, но сразу увидел источник ошибки.
Решением является не использование PROC IMPORT, а использование шага данных. Если все файлы структурированы одинаково, то это работает как решение, но если каждый файл отличается, то это нереальное решение.
Другой возможный обходной путь, это загрузить данные, а затем установить GUESSINGROWS на большое количество и затем прочитать файлы. Он будет читать все значения, прежде чем угадывать типы, так что это может быть лучше. Это решение не работает при использовании URL-адреса имени файла, но я не знаю почему.
Я не думаю, что это полный ответ, но он должен пролить свет на то, что происходит для вас.
Других решений пока нет …