有人知道如何在VerticaSQL中创建表值函数吗?
例如,我想创建一个函数 f_student_name()
接收输入: student_id
返回输出: student_name
在查询中,直接从 students
table,在哪里 student_id, student_name
是唯一的1:1Map。
用例:不必不断地在同一个表上加入大量的查询,提高了可读性并减少了意大利面代码。
我好像找不到这方面的任何文件。vertica中的函数文档只给出了通过硬编码创建函数的示例(当。。。然后……)
我想使用vsql构建这个表值函数,但是使用python(并让函数在vertica中工作)的最佳解决方案也可以。
1条答案
按热度按时间9fkzdhlc1#
表值函数倾向于在查询计划中创建大量嵌套循环。vertica是一个大数据dbms,它有一个通用的体系结构,可以避免任何减慢查询计划的事情。
连接不是意大利面代码。它们是关系范式的一部分。
想想看,我所知道的意式代码指的是过程或面向对象语言的过程流。您可以用任何语言创建意大利面代码,从cobol over pascal到c,甚至是python,但不能用sql构成的描述性语言。。。
但要简化代码并使查询更快,请尝试使用扁平列:
您插入到
f_marks
使用:,两个呢
VARCHAR
它充满了魔力,而且它的表现也相当出色。一个更干净的方法,就我而言。。。。
这是上面的文件:https://www.vertica.com/docs/10.0.x/html/content/authoring/analyzingdata/flattenedtables/flattenedtables.htm