Sintaxis incorrecta cerca ';'. conversación esperando

Dominic Naimool:

Estoy intentando ejecutar un script R (específicamente dplyr) en SQL como parte de un procedimiento almacenado ETL. Tanto el código R y la consulta SQL parecen haber tenido éxito creo que las mentiras de problemas cuando se intenta manipular la salida El error fui lanzado el siguiente error: "Sintaxis incorrecta cerca de ';' Esperando conversación."

Mi fuente de esta estructura es: https://docs.microsoft.com/en-us/sql/advanced-analytics/r/creating-workflows-that-use-r-in-sql-server?view=sql-server -ver15

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
    rm(list = ls(all.names = TRUE))
library(dplyr)
library(tidyr)
library(rlang)
library(lubridate)
        OutputDataSet <- InputDataSet %>% mutate(Date=as.Date(effective)) %>% select(-effective) %>%
  group_by(rowno_dmddmhi_dmd) %>%
  tidyr::complete(Date = seq.Date(min(Date), max(Date), by="day"))%>% fill(balance)%>% 
  mutate(amount = ifelse(is.na(amount), 0, amount))%>%mutate(opp_amount = amount * -1) %>%
  arrange(rowno_dmddmhi_dmd,desc(Date)) %>% group_by(rowno_dmddmhi_dmd) %>%
  mutate(cumsum = cumsum(opp_amount))%>%group_by(rowno_dmddmhi_dmd)%>%
  mutate(balance.at.date=balance + cumsum)%>%ungroup() %>% mutate(Report_Date=as.Date(Date)-1)%>%select(rowno_dmddmhi_dmd,Date,balance.at.date,Report_date);'
    , @input_data_1 = N'SELECT data_.rowno_dmddmhi_dmd,
       dmd.balance,
       Sum(data_.amount) AS amount,
       data_.effective
FROM   (
       --Top False Cap 
       SELECT dmhi.rowno,
              dmhi.rowno_dmddmhi_dmd,
              0                               AS amount,
              CONVERT(Date, Getdate()) AS effective
       FROM   ks208.dbo.dmd
              INNER JOIN dmon208.dbo.dmhi
                      ON dmd.rowno = dmhi.rowno_dmddmhi_dmd
       UNION
       SELECT dmhi.rowno,
              dmhi.rowno_dmddmhi_dmd,
              dmhi.amount,
              CONVERT(Date, dmhi.effective) AS effective
       FROM   ks208.dbo.dmd
              INNER JOIN ks208.dbo.dmhi
                      ON dmd.rowno = dmhi.rowno_dmddmhi_dmd
       UNION
       SELECT dmhi.rowno,
              dmhi.rowno_dmddmhi_dmd,
              dmhi.amount,
              CONVERT(Date, dmhi.effective) AS effective
       FROM   dmon208.dbo.dmd
              INNER JOIN dmon208.dbo.dmhi
                      ON dmd.rowno = dmhi.rowno_dmddmhi_dmd
        -- False Bottom Cap
        UNION
        SELECT dmhi.rowno,
               dmhi.rowno_dmddmhi_dmd,
               0                                                  AS amount,
               CONVERT(Date, Dateadd(year, -4, Getdate())) AS effective
        FROM   ks208.dbo.dmd
               INNER JOIN dmon208.dbo.dmhi
                       ON dmd.rowno = dmhi.rowno_dmddmhi_dmd) AS data_
       INNER JOIN ks208.dbo.dmd
               ON dmd.rowno = data_.rowno_dmddmhi_dmd
WHERE  Year(data_.effective) >= Year(Getdate()) - 4


GROUP  BY data_.rowno_dmddmhi_dmd,
          data_.effective,
          dmd.balance  
'

    with RESULT sets (("rowno_dmddmhi_dmd" int not null, "Date" Date not null, "balance.at.date" float not null, "Report_date" Date not null ));
    end;  


Clifford Piehl:

Me he dado cuenta de su origen de la estructura de la autora es la definición de una prueba de la tabla en la parte superior de su consulta. Se utiliza comandos 'GO' para hacer esto y luego iniciar su procedimiento. No es necesario que un proceso como este por encima de su procedimiento almacenado, por lo que la declaración final al final de la consulta es redundante. Quitarlo y ver lo que sucede?

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=392074&siteId=1
Recomendado
Clasificación