我很难找到一个可以接受两个postgres表的PL / R函数的例子.
PL/R docs没有提供任何这样的例子.
要有一个工作示例,我们可以考虑在R端使用两个postgres表的合并.
要有一个工作示例,我们可以考虑在R端使用两个postgres表的合并.
在postgres有两张桌子
CREATE TABLE x (a numeric,b text); CREATE TABLE y (a numeric,d text); INSERT INTO x VALUES (1,'a'),(2,'b'); INSERT INTO y VALUES (2,'b'),(3,'c');
我想替换以下查询
SELECT * FROM x INNER JOIN y ON x.a=y.a;
使用R中定义的PL / R函数:
my_function = function(x,y){ merge(x,y,by = "a") }
解决方法
我不认为postgeql可以接受真实表作为参数.
但还有另一种方法可以做到这一点.您可以将表名称作为参数传递.
这是功能
CREATE OR REPLACE FUNCTION merge(t1 text,t2 text) returns setof x as BEGIN execute 'select * from ' || t1 ||' join ' || t2 || ' on t1.a=t2.a'; END
以上是postgresql的功能,它也可以写在R函数中.
这是R的代码
>我们必须将表x的所有值存储到变量x中.请参阅以下代码
x< -dbGetQuery(con,“SELECT * from sandBox.x”) - - 是连接到数据库的连接,sandBox是模式名称,x是表名
>将表y的值存储到变量y中
y< -dbGetQuery(con,“SELECT * from sandBox.y”)
>合并2个表
总< - merge(x,by =“a”)
>您还可以编写另一个函数来包装合并函数,请参阅下面的代码
myTotal< - function(x,y){
结果< - merge(x,by =“a”)
返程(结果)
}
我附上了步骤的截图供您参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。