簡體   English   中英

R 將所需變量從 ODBC/HANA 連接傳遞到 sql 語句

[英]R Pass required variable from ODBC/HANA connection to sql statement

我有一張桌子,我想用我常用的方法打電話

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)

我一直在嘗試使用 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)

我已經嘗試過用“$$”和沒有“$$”包圍的術語,無論有沒有“$$”都用引號括起來,而不是。 通常會遇到“無效的列名”錯誤。

這應該用 where 子句以外的東西來調用嗎?

考慮使用 R 中的參數集成來維護您的工作 Tableau 查詢,並正確處理標識符的雙引號和文字的單引號。

此外,舊的('PLACEHOLDER'= ('<varname>', <varvalue>))語法不支持參數化。

相反,如如何從 HANA 占位符中逃脫 sql 注入中所述,請使用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 ,請使用同義限定符::作為原始查詢以引用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM