R 将所需变量从 ODBC/HANA 连接传递到 sql 语句
R Pass required variable from ODBC/HANA connection to sql statement
我有一个table我正在尝试用我通常的方法打电话
sql <- 'SELECT TOP 10 *
FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name"'
df <- dbGetQuery(jdbcConnection, sql)
并收到错误
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)
我一直在尝试将 IP_ExtractionWeekFrom 插入到带有 where 子句的 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)
我已经尝试过用“$$”括起来和不用引号括起来的术语,以及用引号括起来和不引号括起“$$”的术语。通常会遇到 "invalid column name" 错误。
是否应该使用 where 子句以外的其他内容来调用它?
考虑通过在 R 中集成参数来维护您的工作 Tableau 查询,并正确处理标识符的双引号和文字的单引号。
此外,旧的 ('PLACEHOLDER'= ('<varname>', <varvalue>))
语法不支持参数化。
相反,如 中所述,使用 PLACEHOLDER."<varname>" => ?
语法。
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)
此外,如果您的 JDBC 已经连接到架构 _SYS_BIC
,请使用 synonymous qualifier ::
作为原始查询以引用包和计算视图:
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)"
我有一个table我正在尝试用我通常的方法打电话
sql <- 'SELECT TOP 10 *
FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name"'
df <- dbGetQuery(jdbcConnection, sql)
并收到错误
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)
我一直在尝试将 IP_ExtractionWeekFrom 插入到带有 where 子句的 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)
我已经尝试过用“$$”括起来和不用引号括起来的术语,以及用引号括起来和不引号括起“$$”的术语。通常会遇到 "invalid column name" 错误。
是否应该使用 where 子句以外的其他内容来调用它?
考虑通过在 R 中集成参数来维护您的工作 Tableau 查询,并正确处理标识符的双引号和文字的单引号。
此外,旧的 ('PLACEHOLDER'= ('<varname>', <varvalue>))
语法不支持参数化。
相反,如 PLACEHOLDER."<varname>" => ?
语法。
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)
此外,如果您的 JDBC 已经连接到架构 _SYS_BIC
,请使用 synonymous qualifier ::
作为原始查询以引用包和计算视图:
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)"