のは?sql_variant
に例を見てみましょう:dbplyrのsql_variantは正常に機能しますか?
postgres_agg <- sql_translator(.parent = base_agg,
cor = sql_prefix("corr"),
cov = sql_prefix("covar_samp"),
sd = sql_prefix("stddev_samp"),
var = sql_prefix("var_samp")
)
我々は、その後から作られる新しいバリアントを定義:
我々はデフォルトのものから展開集約機能のための新しい翻訳機能を定義(ここでは2)3種類の異なる翻訳機能:postgres_var <- sql_variant(
base_scalar,
postgres_agg
)
translate_sql(cor(x, y), variant = postgres_var)
# <SQL> COR("x", "y")
translate_sql(sd(income/years), variant = postgres_var)
# <SQL> SD("income"/"years")
これらは私に翻訳を見て、彼らはすべきではないしません"CORR"
と"STDDEV_SAMP"
?
# Original comment:
# Any functions not explicitly listed in the converter will be translated
# to sql as is, so you don't need to convert all functions.
translate_sql(regr_intercept(y, x), variant = postgres_var)
# <SQL> REGR_INTERCEPT("y", "x")
この1つは期待通りに翻訳機能が働く一方のデフォルトでは、単に他の2
のようである、振る舞い、以下を参照してください
translate_sql(mean(x), variant = postgres_var)
#<SQL> avg("x") OVER()
それはバグですね?または私は何かを逃している?
私の目標は、(再現性があることがSQLite
して例)Oracle
ためのいくつかの亜種を作成して、より複雑な機能のために、その後、次のような方法でそれを使用することです:
con <- DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
copy_to(con, cars, "cars")
con %>% tbl("cars") %>% summarize(dist = group_concat(dist)) # works as expected, as we're stealing the keyword from sqlite directly
sqlite_variant <- sql_variant(aggregate=sql_translator(.parent = base_agg,gpc = sql_prefix("group_concat")))
con %>% tbl("cars") %>% summarize(dist = gpc(dist)) # how do I make this work ?
EDIT:
1つの賞金はまだ解決していませんが、問題があるかどうかわからない場合は直接dplyr
/dbplyr
github
ページに投稿しましたが、私(または他の誰か)が更新しない場合https://github.com/tidyverse/dplyr/issues/3117