首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Redshift中的用户定义函数返回表

从Redshift中的用户定义函数返回表
EN

Stack Overflow用户
提问于 2019-04-22 12:40:26
回答 1查看 3.5K关注 0票数 1

我有一个复杂的查询,它为大约两个日期提供了多行--开始日期和结束日期。

现在,我想要创建一个函数,以便可以为不同的日期组合返回多行。

代码语言:javascript
运行
复制
CREATE FUNCTION submit_cohort(DATE, DATE)
RETURNS TABLE(Month VARCHAR(10), Name1 VARCHAR(20), Name2 VARCHAR(20), x INTEGER)
STABLE
AS $$
  SELECT
    to_char((date + interval '330 minutes')::date, 'YYYY/MM') "Month",
    Name1,
    Name2,
    count(*) "x"
  FROM xyz
  WHERE date > $1
    AND date < $2
  GROUP BY 1,2,3
  ORDER BY 1,2,3
END 
$$ LANGUAGE sql;

我运行了这个查询。上面写着:

Amazon无效操作:“表”或“表”附近的语法错误

EN

Stack Overflow用户

发布于 2019-04-22 19:22:42

在Redshift中,只能定义标量函数,即返回单个值的函数。不幸的是,Redshift中不支持基于集合的函数(那些返回表的函数)。

可能的原因是Redshift是一个分布式数据库,函数在计算节点上并行运行,相互独立。基于集合的函数需要能够从数据库中读取数据,但是有可能某些数据位于给定的节点上,而另一部分位于另一个节点上。这样的函数不能独立地在特定的计算节点上运行。您必须只在主节点上运行该函数。这是你不想做的,因为它违背了并行的整个概念。

尝试在SQL查询中表示相同的逻辑。从您的代码来看,它似乎可以作为一个常规查询/子查询工作。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55794585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档