如何在 R 中执行 RxSqlServerData 方法?
How to execute RxSqlServerData method in R?
我想创建一个模型并将其部署到 SQL 服务器中,以便将其与新的 PREDICT() 内置函数一起使用。
但是,我似乎坚持使用 R 中的 RxSqlServerData 方法。
每当我 运行 我的脚本时,我都会收到此错误:
Error in rxExecJob(rxCallInfo(matchCall, .rxDeprecated =
"covariance"), : Data must be an RxSqlServerData data source for
this compute context.
到目前为止,这是我的代码:
#Logistic plain select sql query
#input_query = 'SELECT app.ClientAgeToApplicationDate AS Age, IIF(conc.FirstInstallmentDelay>60,1,0) AS FPD60 FROM dim.Application app JOIN dim.Contract con ON app.ApplicationID = con.ApplicationID JOIN dim.Contract_Calculated conc ON con.ContractID = conc.ContractId'
#LinReg aggregated query
input_query = '
*SQL QUERY, too long to paste...*
'
connStr <- paste("Driver=SQL Server; Server=", "czphaddwh01\dev",
";Database=", "DWH_Staging", ";Trusted_Connection=true", sep = "");
#Set compute context to SQL Server. Does not load any data into a memory of the local client. OBDC can't.
cc <- RxInSqlServer(connectionString = connStr);
rxSetComputeContext(cc)
input_data <- RxSqlServerData(sqlQuery = input_query, connectionString = connStr)
risk <- rxImport(input_data)
#head(risk)
#Binary regression for non-aggregated sql query
#logit_model <- rxLogit(Age ~ FPD60, data = risk)
#LinReg for aggregated sql query
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = risk)
我是 R 的新手。非常感谢任何帮助。
当你运行
cc <- RxInSqlServer(connectionString = connStr);
rxSetComputeContext(cc)
你告诉 R 运行 SQL 计算上下文 中的任何 Microsoft 分析函数(基本上是那些以 rx 开头的函数)。这意味着所有处理都将在数据库内部进行。 R 本质上是充当 shell 到 SQL.
当然,这要求您正在使用的数据集必须实际位于数据库中:table、视图或返回结果集的查询。
当你 运行
risk <- rxImport(input_data)
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = risk)
您将数据导入本地数据框,然后尝试在其上拟合模型。但是您之前告诉 R 在数据库中执行 number-c运行ching,并且您的数据是本地的。所以它会报错。
解决方案是将您的 RxSqlServerData
对象直接传递给 rxLinMod
:
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = input_data)
我想创建一个模型并将其部署到 SQL 服务器中,以便将其与新的 PREDICT() 内置函数一起使用。 但是,我似乎坚持使用 R 中的 RxSqlServerData 方法。 每当我 运行 我的脚本时,我都会收到此错误:
Error in rxExecJob(rxCallInfo(matchCall, .rxDeprecated = "covariance"), : Data must be an RxSqlServerData data source for this compute context.
到目前为止,这是我的代码:
#Logistic plain select sql query
#input_query = 'SELECT app.ClientAgeToApplicationDate AS Age, IIF(conc.FirstInstallmentDelay>60,1,0) AS FPD60 FROM dim.Application app JOIN dim.Contract con ON app.ApplicationID = con.ApplicationID JOIN dim.Contract_Calculated conc ON con.ContractID = conc.ContractId'
#LinReg aggregated query
input_query = '
*SQL QUERY, too long to paste...*
'
connStr <- paste("Driver=SQL Server; Server=", "czphaddwh01\dev",
";Database=", "DWH_Staging", ";Trusted_Connection=true", sep = "");
#Set compute context to SQL Server. Does not load any data into a memory of the local client. OBDC can't.
cc <- RxInSqlServer(connectionString = connStr);
rxSetComputeContext(cc)
input_data <- RxSqlServerData(sqlQuery = input_query, connectionString = connStr)
risk <- rxImport(input_data)
#head(risk)
#Binary regression for non-aggregated sql query
#logit_model <- rxLogit(Age ~ FPD60, data = risk)
#LinReg for aggregated sql query
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = risk)
我是 R 的新手。非常感谢任何帮助。
当你运行
cc <- RxInSqlServer(connectionString = connStr);
rxSetComputeContext(cc)
你告诉 R 运行 SQL 计算上下文 中的任何 Microsoft 分析函数(基本上是那些以 rx 开头的函数)。这意味着所有处理都将在数据库内部进行。 R 本质上是充当 shell 到 SQL.
当然,这要求您正在使用的数据集必须实际位于数据库中:table、视图或返回结果集的查询。
当你 运行
risk <- rxImport(input_data)
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = risk)
您将数据导入本地数据框,然后尝试在其上拟合模型。但是您之前告诉 R 在数据库中执行 number-c运行ching,并且您的数据是本地的。所以它会报错。
解决方案是将您的 RxSqlServerData
对象直接传递给 rxLinMod
:
LinReg_model <- rxLinMod(RiskFPD60 ~ Age, data = input_data)