[英]R Pass required variable from ODBC/HANA connection to sql statement
I have a table I am trying to call with my usual method我有一张桌子,我想用我常用的方法打电话
sql <- 'SELECT TOP 10 *
FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name"'
df <- dbGetQuery(jdbcConnection, sql)
and receive the error并收到错误
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for SELECT TOP 10 *
FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name" (SAP DBTech JDBC: [2048]: column store error: search table error: [34023] Instantiation of calculation model failed;exception 306106: Undefined variable: $$IP_ExtractionWeekFrom$$. Variable is marked as required but not set in the query)
I've been trying to insert IP_ExtractionWeekFrom into the sql statement with a where clause with no luck我一直在尝试使用 where 子句将 IP_ExtractionWeekFrom 插入 sql 语句,但没有成功
param1 <- 201943
sql <- 'SELECT TOP 10 *
FROM "_SYS_BIC"."ccf-edw.self-service.DOIP/R_CA_B_DemandPlan" where
"$$IP_ExtractionWeek$$" = ?'
SpringVisit <- dbGetQuery(jdbcConnection, sql, param1)
I've tried the term surrounded by the "$$" and without, and both with and without "$$" sourrounded in quotes and not.我已经尝试过用“$$”和没有“$$”包围的术语,无论有没有“$$”都用引号括起来,而不是。 Usually am met with an "invalid column name" error.
通常会遇到“无效的列名”错误。
Is this supposed to be called with something other than a where clause?这应该用 where 子句以外的东西来调用吗?
Consider maintaining your working Tableau query with the integration of parameters in R with properly handling of double quotes for identifiers and single quotes for literals.考虑使用 R 中的参数集成来维护您的工作 Tableau 查询,并正确处理标识符的双引号和文字的单引号。
Additionally, parameterization is not supported with the old ('PLACEHOLDER'= ('<varname>', <varvalue>))
syntax.此外,旧的
('PLACEHOLDER'= ('<varname>', <varvalue>))
语法不支持参数化。
Instead, as explained in How to escape sql injection from HANA placeholder use the PLACEHOLDER."<varname>" =>?
相反,如如何从 HANA 占位符中逃脱 sql 注入中所述,请使用
PLACEHOLDER."<varname>" =>?
syntax.句法。
param1 <- 201943
sql <- "SELECT TOP 10 *
FROM \"_SYS_BIC\".\"ccf-edw.self-service.DOIP/R_CA_B_DemandPlan\"(
PLACEHOLDER.\"$$IP_ExtractionWeekFrom$$\", ?),
PLACEHOLDER.\"$$IP_ExtractionWeekTo$$\",?)
)\"_SYS_BIC\".\"ccf-edw.self-service.DOIP/R_CA_B_DemandPlan\"
WHERE (1 <> 0)"
SpringVisit <- dbGetQuery(jdbcConnection, sql, param1, param1)
Additionally, if your JDBC already connects to the schema _SYS_BIC
, use the synonymous qualifier ::
as original query in order to reference package and calculation view:此外,如果您的 JDBC 已经连接到架构
_SYS_BIC
,请使用同义限定符::
作为原始查询以引用 package 和计算视图:
sql <- "SELECT TOP 10 *
FROM \"ccf-edw.self-service.DOIP::R_CA_B_DemandPlan\"(
PLACEHOLDER.\"$$IP_ExtractionWeekFrom$$\", ?),
PLACEHOLDER.\"$$IP_ExtractionWeekTo$$\", ? )
)\"ccf-edw.self-service.DOIP::R_CA_B_DemandPlan\"
WHERE (1 <> 0)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.