大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说vertica 如何实现存储过程?「终于解决」,希望您对编程的造诣更进一步.
只要多花时间,JAVA 总是可以实现算法的,但高耦合性的缺点却无法避免。存储过程本应独立于 JAVA 代码,修改存储过程本不该影响 JAVA 代码。但 JAVA 开发的存储过程会和其他 JAVA 代码紧密耦合,只要修改存储过程,就必然重新编译打包整个项目,项目的维护成本必然升高。
如果使用集算器,实现 vertica 存储过程就会容易很多。
集算器具有丰富的结构化类库,无论查询、排序、聚合还是分组汇总、关联查询,都可以用内置函数直接实现。集算器也提供了针对结构化数据的分支判断、循环语句、动态语法,复杂业务逻辑也可轻松实现。集算器还提供了标准的 JDBC 接口,供 JAVA 代码调用,实际的存储过程则以脚本文件的形式存在,修改存储过程不影响 JAVA 代码。
例如:vertica 中 sales 表存储销售员的订单信。
逻辑算法:对每一位销售,找到他金额最大和最小的 3 笔订单,分别打上 “top3” 和 “bottom3” 的标记,考虑到订单数太少没意义,特规定某销售的订单数小于 3 时,则不计算 top3,订单数小于 6 时,则不计算 bottom3。计算结果应当如下:
集算器代码如下:
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