我想计算数据库中的 Jaro-Winkler 字符串距离。如果我将数据带入 R(使用collect
)我可以轻松地使用stringdist
函数从stringdist
包裹。
但我的数据非常大,我想过滤 Jaro-Winkler 距离before将数据拉入 R 中。
有 Jaro-Winkler 的 SQL 代码(https://androidaddicted.wordpress.com/2010/06/01/jaro-winkler-sql-code/ https://androidaddicted.wordpress.com/2010/06/01/jaro-winkler-sql-code/和一个版本T-SQL https://gist.github.com/paulirwin/dcfa49700fb7b290705007ca37d66494)但我想我不确定如何最好地使用 SQL 代码dbplyr
。我很高兴尝试绘制地图stringdist
Jaro-Winkler 的功能sql
代码,但我不知道从哪里开始。但即使是更简单的事情,例如直接从 R 对远程数据执行 SQL 代码,也会很棒。
我本来希望SQL翻译 http://dbplyr.tidyverse.org/articles/sql-translation.html in the dbplyr
文档可能会有所帮助,但我不这么认为。
您可以在 R 中构建自己的 SQL 函数。它们只需生成一个有效 SQL 查询的字符串。我不知道 Jaro-Winkler 距离,但我可以提供一个示例供您构建:
union_all = function(table_a,table_b, list_of_columns){
# extract database connection
connection = table_a$src$con
sql_query = build_sql(con = connection,
sql_render(table_a),
"\nUNION ALL\n",
sql_render(table_b)
)
return(tbl(connection, sql(sql_query)))
}
unioned_table = union_all(table_1, table_2, c("who", "where", "when"))
这里的两个关键命令是:
-
sql_render
,它采用 dbplyr 表并返回生成它的 SQL 代码
-
build_sql
,它从字符串组装查询。
您可以选择执行命令:
-
tbl(connection, sql(sql_query))
将返回结果表
-
dbExecute(db_connection, as.character(sql_query))
将执行查询而不返回结果(对于删除表、创建索引等很有用)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)