【发布时间】:2016-03-19 15:56:05
【问题描述】:
我正在努力寻找可以接受两个 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 函数,它接受单个表,但不是两个。
【问题讨论】:
-
这在 (postgres) SQL 中并非不可能,您只需要动态 SQL:生成一个使用表名和列名的 SQL 查询,并执行此查询,返回结果行。 (
by= "a"的参数传递形式可能需要稍微改变一下)
标签: r postgresql plpgsql plr