2017-09-16 8 views
8

のは?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/dbplyrgithubページに投稿しましたが、私(または他の誰か)が更新しない場合https://github.com/tidyverse/dplyr/issues/3117

答えて

0

これはハドレーウィッカムが提供githubのリンクに答えたものです::時間で、これは、このURLをチェックバリアント引数を持っていません

translate_sqlを()これ以上

実際バリデーション引数は文書化されていませんが、例で使用していますが、次のバージョンで修正されると思います。

は、彼が提供してこれを持っていたカスタムSQLの翻訳を定義する方法を質問:

は、私は別のオプションがdbplyr::sql_variantの古いバージョンを取得することであると思いhttp://dbplyr.tidyverse.org/articles/new-backend.htmlhttp://dbplyr.tidyverse.org/articles/sql-translation.html

を見てください。

関連する問題