gpt4 book ai didi

r - dbplyr中的sql_variant是否可以正常工作?

转载 作者:行者123 更新时间:2023-12-04 04:33:14 25 4
gpt4 key购买 nike

让我们看一看?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")
)

然后,我们定义一个新的变体,它是由3种不同类型(此处为2种)的转换函数组成的:
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")

这一个的行为与预期的一样,与其他2一样。

另一方面,默认的转换功能有效,请参见:
translate_sql(mean(x), variant = postgres_var)
#<SQL> avg("x") OVER ()

是个错误吧?还是我错过了什么?

我的目标是为 Oracle创建一些变体,并以以下方式使用它,然后使用更复杂的功能(例如 SQLite可重现的示例):
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 ?

编辑:

一个赏金以后仍然没有解决方案,我已经将该问题直接交叉发布在 dplyr/ dbplyr github页面中,我不确定该问题是否已经引起关注,但是万一我(或其他人)不更新此问题及时检查此网址: https://github.com/tidyverse/dplyr/issues/3117

最佳答案

这是Hadley Wickham在提供的github链接上回答的内容:

translate_sql() doesn't have a variant argument any more



实际上,虽然示例中使用了variant参数,但并未记录在案,我想它将在下一个版本中得到更正。

在被问到如何定义自定义SQL转换时,他提供了以下内容:

Have a look at http://dbplyr.tidyverse.org/articles/new-backend.html and http://dbplyr.tidyverse.org/articles/sql-translation.html



我猜另一个选择是获取较旧版本的 dbplyr::sql_variant

关于r - dbplyr中的sql_variant是否可以正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46253052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com