Почему мой R-скрипт работает в RStudio, а не в SSMS? - PullRequest
0 голосов
/ 24 января 2019

Сценарий, который правильно выполняется при ошибках RStudio в SQL Server 2016 Management Studio. Подробности окружающей среды ниже.

RStudio

platform: x86_64-w64-mingw32          
arch: x86_64                      
os: mingw32                     
system: x86_64, mingw32             
status:                                     
major: 3                           
minor: 4.3                         
year: 2017                        
month: 11                          
day: 30                          
svn rev: 73796                       
language: R                           
version.string: R version 3.4.3 (2017-11-30)
nickname: Kite-Eating Tree

SSMS

Product: Microsoft SQL Server Enterprise (64-bit)
Operating System: Microsoft Windows NT 6.3 (9600)
Platform: NT x64
Version: 13.0.5216.0

Вот код, который я пытаюсь выполнить.

EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
library(RODBC)
library(jsonlite)
library(purrr)
library(tidyr)
library(dplyr)
library(lubridate)

connectionString <- odbcConnect(dsn="KMhivehttp")
goldInstrumentApps <- sqlQuery(connectionString, "select CAST(instrumentapps_event.event AS varchar(8000)) AS event, 
                               instrumentapps_event.load_ts, 
                               instrumentapps_event.data_dt from dmfwk_gold.instrumentapps_event")

goldInstrumentDF <- data.frame(goldInstrumentApps)

formattedDF <- transform(goldInstrumentDF, instrumentapps_event.load_ts = 
       ymd_hms(as.character(goldInstrumentDF$instrumentapps_event.load_ts)))
'

Вот некоторая информация о данных, которые я обрабатываю:

str(goldInstrumentDF)

Возвращает:

STDOUT сообщение (я) из внешнего скрипта: 'data.frame': 411 obs. из 3 переменные: $ event: фактор с 408 уровнями "{\" Время \ ": \" 2018-11-12T14: 45: 01.133Z \ "\ "приложения \": \ "com_ldo_suchma_loma_cw_prod-salesorderreturnsservice_1.1.6 \", \ "глагол \":" | усечено , ..: 1 18 27 29 28 22 8 16 17 24 ... $ load_ts: Коэффициент с 42 уровнями "2018/11/13 19:20:58", ..: 1 1 1 1 1 1 1 1 1 1 ... $ data_dt: Коэффициент с 33 уровнями " HIVE_DEFAULT_PARTITION ", ..: 2 3 3 3 3 3 3 3 3 3 3 ...

Это код, вызывающий ошибку:

formattedDF <- transform(goldInstrumentDF, instrumentapps_event.load_ts = 
       ymd_hms(as.character(goldInstrumentDF$instrumentapps_event.load_ts))) 

Это ошибка:

Ошибка в data.frame (список (событие = c (1L, 18L, 27L, 29L, 28L, 22L, 8L, 16L,: аргументы подразумевают различное количество строк: 411, 0 Вызовы: источник ... transform -> transform.data.frame -> do.call -> data.frame

Ошибка в ScaleR. Проверьте вывод для получения дополнительной информации. Ошибка в eval (expr, envir, enclos): ошибка в ScaleR. Проверьте вывод на Дополнительная информация. Вызовы: источник -> withVisible -> eval -> eval -> .Call Выполнение остановлено. Предупреждение: закрытие неиспользуемого дескриптора RODBC 1

.

Что я делаю не так?

...