vertica 如何实现存储过程?「终于解决」

vertica 如何实现存储过程?「终于解决」JAVA 等通用语言缺乏结构化计算类库,即使最简单的结构化算法,比如查询、排序、聚合,也要从零开始硬编码。对于很常用的算法,比如分组汇总、关联查询,则要编写大篇幅的代码。对于复杂些的算法,甚至要设计…

vertica 如何实现存储过程?

只要多花时间,JAVA 总是可以实现算法的,但高耦合性的缺点却无法避免。存储过程本应独立于 JAVA 代码,修改存储过程本不该影响 JAVA 代码。但 JAVA 开发的存储过程会和其他 JAVA 代码紧密耦合,只要修改存储过程,就必然重新编译打包整个项目,项目的维护成本必然升高。

如果使用集算器,实现 vertica 存储过程就会容易很多。

imagepng

集算器具有丰富的结构化类库,无论查询、排序、聚合还是分组汇总、关联查询,都可以用内置函数直接实现。集算器也提供了针对结构化数据的分支判断、循环语句、动态语法,复杂业务逻辑也可轻松实现。集算器还提供了标准的 JDBC 接口,供 JAVA 代码调用,实际的存储过程则以脚本文件的形式存在,修改存储过程不影响 JAVA 代码。

例如:vertica 中 sales 表存储销售员的订单信。

imagepng

逻辑算法:对每一位销售,找到他金额最大和最小的 3 笔订单,分别打上 “top3” 和 “bottom3” 的标记,考虑到订单数太少没意义,特规定某销售的订单数小于 3 时,则不计算 top3,订单数小于 6 时,则不计算 bottom3。计算结果应当如下:

imagepng

集算器代码如下:

  A B C D
1 =connect@l(“verticaDB”)      
2 =A1.cursor@x(“select   * from sales  order by   sellerid,amount”)
3 for   A2;sellerid     /for   each seller
4   if   A3.len()>=3 =A3.m(to(-1,-3)) =C4.derive(“top3”:orderType)
5   if   A3.len()>=6 =A3.m(to(3)) =C5.derive(“bottom3”:orderType)
6   =@|D4|D5   /merge   top+bottom for every seller
7 return   B6      

 

关于集算器 JDBC 接口,可以参考 Java 如何调用 SPL 脚本

关于集算器安装使用、获得免费授权和相关技术资料,可以参 如何使用集算器?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8326.html

(0)
上一篇 2023-03-03 13:30
下一篇 2023-03-03

相关推荐

  • pikachu之sql(9)「终于解决」

    pikachu之sql(9)「终于解决」这是盲注的另一种延时注入,这种比刚才更难, 布尔盲注还可以看到页面是否正确来判断注入的SQL语句是否成功执行, 而延时注入就什么返回信息都看不了了。 我们只能通过布尔的条件返回值来执行sleep()…

    2023-04-05
    157
  • influxdb-cluster安装部署「终于解决」

    influxdb-cluster安装部署「终于解决」参考资料 Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务,实现了 InfluxDB 高可用集群的部署方案,具有动态扩/缩容、故障恢复、数据同步等能力。 相关…

    2023-04-08
    147
  • 数据库个人笔记(2) –

    数据库个人笔记(2) -**表的创建和操作** – 界面式操作表 > 创建表:>第一步:打开数据库,在‘对象资源管理器’中展开‘数据库’,右击 ‘pxscj’ 数据库菜单下的 ‘表’ 选项,在弹出的快捷菜单中选择

    2022-12-24
    150
  • mysql规范 阿里_mysql数据库规范

    mysql规范 阿里_mysql数据库规范阿里11条mysql规范 转载 ~时光易逝~ 最后发布于2019-09-11 09:40:09 阅读数 101 收藏 展开 对于阿里的11条规范,虽然平时写sql的时候会注意到,但是还是要记录一下,…

    2023-01-31
    149
  • Python中实数和整数的差异及应用

    Python中实数和整数的差异及应用在计算机科学中,实数和整数是两种最基本的数据类型。

    2024-04-11
    76
  • 什么是爬虫软件

    什么是爬虫软件在互联网时代,数据是一种重要的资源。而如何快速、准确地获取海量数据成为了人们关注的焦点。这时,爬虫技术应运而生。爬虫软件是一种可以模拟人类高效浏览网页、采集数据的程序工具。在本文中,我们将为您详细介绍什么是爬虫软件,以及它们的功能和应用场景。

    2024-07-05
    48
  • 50个SQL语句(MySQL版) 问题二十五「终于解决」

    50个SQL语句(MySQL版) 问题二十五「终于解决」表结构 student(StuId,StuName,StuAge,StuSex) 学生表 teacher(TId,Tname) 教师表 course(CId,Cname,C_TId) 课程表 sc(S

    2023-03-07
    161
  • 分布式存储的六大优点「建议收藏」

    分布式存储的六大优点「建议收藏」分布式存储往往采用分布式的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,将通用硬件引入的不稳定因素降到最低。优点如下:…

    2022-12-22
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注