Pull to refresh

Comments 17

Пару лет назад в какой-то версии SQL Server пытался установить компонент R. Сначала потребовалась одна библиотека, потом другая, потом третья. А третья сказала, что на вашей версии windows я ставиться не буду.
Еще однажды был забавный проект с Google Analytics. Нужно было из базы MS SQL выгружать данные в GA, а именно чеки оплаты по кассе с помощью Measurement Protocol. Недолго думая просто использовал какой-то вариант вида
sp_OACreate 'MSXML2.ServerXMLHTTP'
В GA упорно не отображались транзакции после отправки POST или GET запроса. Если открыть ту же самую URL c с теми же самыми параметрами через браузер, то все появлялось.
Общались тогда через Skype, когда отправлял через чат сгенеренные скриптом строки url, то они тоже появлялись в аналитике. (кто бы сомневался)
В какой-то момент уже начал запускать wget на сервере через EXEC xp_cmdshell, все равно не отображались. Потом случайно выяснилось, что в урл нужно добавлять параметры dh и uip. Осталось непонятным, почему через браузер транзакции успешно отправлялись без этих параметров.
Потом маркетологи недоумевали, а почему же в аналитике так много клиентов без идентификаторов гугла, откуда же они берутся…
Надеюсь моя статья поможет справляться с подобными проблемами :)
А что если ответ от API будет в JSON размеров в 3Gb, то R спокойно его переварит, разберёт и сложит в таблицу?
Конечно, желательно не запрашивать такой объем данных.
Можно выбирать данные по порциям, например по дням

Но в общем случае ответ:
Да, а почему нет?
Роль R здесь сводится к получению ответа от API и преобразование JSON.
Непосредственно в таблицу будет складывать MS SQL — а ему таблички в 3 GB это мелочи :)
Такой вот хитрый API, отдающий только весь набор данных за всю историю без возможности фильтра по датам (и без уникальных ключей, так что запросить по одному полю, а затем склейить по столбцам не вариант). :(
Таблички в 3Gb, то да, а вот NVARCHAR(MAX) имеет ограничение в 2GB. И такой JSON он (MS SQL Server) уже не переваривает. :(

Вот я и хотел понять: таки R разбирает содержимое JSON в свой объект dataset, а затем из него уже вставляет в таблицу?
R разбирает содержимое JSON в свой объект dataset, а затем из него уже вставляет в таблицу?


Да, сначала JSON разбирается в DataSet
И в случае такого хитрого API это Ваш вариант

честно говоря строку в 3GB я не пробовал — но по логике если оперативки хватит, то проглотит :)
попробуйте сначала в RStudio
Вот тут есть неочевидный нюанс:
Нельзя взять и просто так что-то записать в системные папки MS SQL. Пакеты будут сохранены во временной директории в виде ZIP архивов.

так все ж проще делается — из консоли R, только той которая в глубинах папок установленного SQL Server
вот тут написанно www.mssqltips.com/sqlservertip/4982/installing-external-r-packages-to-use-with-sql-server-2017
epee
из консоли R, только той которая в глубинах папок установленного SQL Server


В теории — Да, всё должно быть просто и устанавливаться одной командой
install.packages(“”)

Но и тут есть Нюанс: - в Клиентской части не обновятся пакеты (отлаживать запросы в RStudio не получится )

Можно поступить как в приведенной Вами ссылке.
Но сам я копирую всё вручную и всем остальным советую. Так я уверен: всё будет четко - везде одинаковые версии :)
Здравствуйте! Пробую выполнить то, что здесь описано. На этапе проверки R скриптов получил ошибку, что они не могут быть выполнены. Служба LaunchPad не запускается. Ошибка 1053: Error 1053: The service did not respond the start or control request in a timely fashion. Попытки увеличить таймаут в регистре, изменить права доступа ни к чему не привели. Были ли подобные ошибки и как с ними справлялись?
Добрый день,
Это у Вас не запускается служба R Service (R сиквел сервера)
У меня такое было когда пытался работать из R studio в папке сервера (а не в клиентской версии)
в моем примере эта папка сервера вот такая:
«C:/Program Files/Microsoft SQL Server/MSSQL14.MSSQLSERVER/R_SERVICES/library»
Так же разархивированные пакеты надо скопировать в клиентскую версию R (c которой работает RStudio)

В моем примере это папка
C:/Program Files/Microsoft SQL Server/140/R_SERVER/library


Почему происходит ошибка:
— RStudio настраивает окружение R под себя (создает свои файлы, сохраняет состояние сеанса и тд)
— При рестарте SQL пытается запустить R и возникает проблема с окружением — и служба не стартуется

я лечил переустановкой R службы в SQL Server
Возможно есть способ лучше… но я поступаю радикально, так как это решение всех проблем :)

и да, повторюсь — из R Studio работаем только с клиентской версией
Клиентская копия R с ним можно будет работать из RStudio не боясь сломать что-то на сервере базы данных.

Здравствуйте! НЕ совсем понятно. Я поступал, как описано в статье: «Устанавливаем R на сервере MS SQL

делается это через стандартный интерфейс установки компонентов MS SQL.»…
Вот я и запускаю этот интерфейс. Ставлю R. Далее идет моя проблема. Ни до каких пакетов я не дошел.
Если вы говорите о клиентской версии, то вопрос:
1. Также нужно запустить интерфейс установки? Но он не предлагает каких-то путей, все по умолчанию. Если я переустановлю, то не получится то же самое?
2. Если речь идет о клиентсткой части, то ОТКУДА и КАК надо запустить установку ( или какие ей параметры нужно передать)? Причем в моем случае я нашел н асервере всего один установщик.
Буду благодарен за помощь.
Из Вашего описания — получается что у Вас вообще R не установился… не сталкивался с таким
я бы копал в сторону прав — посмотрите под каким логином запускается служба LaunchPad

Если речь идет о клиентсткой части, то ОТКУДА и КАК надо запустить установку

Все установки через стандартный интерфейс, надо проставить две галочки — как на скриншоте.

Причем в моем случае я нашел н асервере всего один установщик.

Да, всё правильно инсталлятор SQL Server — один.

В порядке интереса — какая у Вас версия SQL?


SQL Server 2017, версия 14.0.3162.1. Да, именно две галочки и проставил. В меню появился R, запускается. Логин, от имени которого стартует служба добавил в политики безопасносни ( вернее добавил группу, в которую он входит). Но далее — 1053 и все.
В таком случае точного рецепта у меня нет — только бубны

— поменяйте логин на системный, под которым стартует служба (если у Вас не NT Service)

image

— попробуйте службу запустить вручную
— посмотрите журнал логов — может быть что то будет более понятно

и всегда есть ультимативный выход — переустановить R
через стандартный интерфейс установки

Спасибо, что показали настройку (у самих Майкрософтовцев таких подробных инструкций нет))), но зачем нужна привязка к SQL-серверу? Почему нельзя тот же код использовать в R-сервере?

зачем нужна привязка к SQL-серверу? Почему нельзя тот же код использовать в R-сервере?

Можно использовать код где угодно :)
Однако, в этом варианте у Вас:
— процедура которая бекапируется вместе с базой
— при необходимости можно процедуру открыть и поправить
— задание выполняется по расписанию и мониторится стандартными средствами SQL
Этот подход дает удобство обслуживания загрузки данных в хранилище — всё находится в одном месте и в случае чего известно куда смотреть.

Мне кажется такой подход более инфраструктурный :)
Sign up to leave a comment.

Articles