我想将(短)dplyr
管道转换为等效SQL的字符串表示形式。例如:
library(dplyr)
dbplyr::lazy_frame() %>% filter(foo == 'bar')
基本上会打印出我正在寻找的内容,即:
<SQL>
SELECT *
FROM `df`
WHERE (`foo` = 'bar')
问题在于,这只是打印。特别是我看不到如何将其分配给字符串。我尝试附加%>% show_query()
,但我相信结果相同(即显示查询而不是转换为字符串)。附加%>% as.character()
确实会产生一些东西,但不是SQL(这是一个字符向量,其第一个元素是"list(name = \"filter\", x = list(x = list(), vars = character(0)), dots = list(~foo == \"bar\"), args = list())"
)。
答案 0 :(得分:3)
您可以捕获输出:
df.groupby((df["Change"] == 1).cumsum()).cumcount()
或
**CriteriaBuilder cbr = session_hiber.getCriteriaBuilder();
cbr.selectCase()
.when(cbr.equal(path.get("status"), "A"), "Login Allowed")
.otherwise("Enable the Login Status")
.alias("UserLoginStatus");**
答案 1 :(得分:1)
使用remote_query
获得一个c("sql", "character")
,然后将其转换为character
。
library(dbplyr)
lazy_frame() %>%
filter(foo == 'bar') %>%
remote_query %>%
as.character
## [1] "SELECT *\nFROM `df`\nWHERE (`foo` = 'bar')"