PLR函数接受两个表作为参数

PLR函数接受两个表作为参数,第1张

概述我很难找到一个可以接受两个postgres表的PL / R函数的例子. PL/R docs没有提供任何这样的例子. 要有一个工作示例,我们可以考虑在R端使用两个postgres表的合并. 在postgres有两张桌子 CREATE TABLE x (a numeric, b text);CREATE TABLE y (a numeric, d text);INSERT INTO x VALUE 我很难找到一个可以接受两个postgres表的PL / R函数的例子. PL/R docs没有提供任何这样的例子.
要有一个工作示例,我们可以考虑在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")}

我能够调用PL / R函数,它接受单个表,但不是两个.

解决方法 我不认为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”)
      返程(结果)
    }

我附上了步骤的截图供您参考

总结

以上是内存溢出为你收集整理的PL / R函数接受两个表作为参数全部内容,希望文章能够帮你解决PL / R函数接受两个表作为参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1163008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存