博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
阅读量:5158 次
发布时间:2019-06-13

本文共 2108 字,大约阅读时间需要 7 分钟。

大家都知道SAP HANA项目打包成Delivery Unit(缩写为DU)。依照“官方”的开发模式,特别是整个团队仅仅使用一个HANA Instance进行项目开发,因为HANA本身还在不断成长中,会遇到各种奇葩问题导致打包出来的DU在新环境中import 失败。那些失败Error Message trace,对于开发人员基本上没什么帮助。

并且在项目开发过程中,总会有些队友会不按常理出牌,终于导致项目DU无法使用,特别是在測试资源匮乏的情况下,非常多问题不能及时暴露。当你看到满屏幕的错误,你还有信心和耐力分析下去哇?看HANA Trace?你知道怎么设置么?

在这里整理一些常见问题来给大家一些启示。

View(视图)的建立不加depends_on_xx

问题分析:

在使用hdbview时,有些伙伴们习惯把在console中query语句直接黏贴到hdbview中完毕了事。并且这种hdbview在单独Activate时,毫无问题都能够Activate成功。而导出的DU想往新环境中部署就出问题。

在单独创建时,全部引用的table、view都已经存在,Activate肯定成功。并且在开发过程,基本上不会遇到先后关系,你引用的永远是存在的table、view。比方以下的样例我们称它为viewA,那么viewA-> com.sap.test.tables::02_HDB_DEPARTMENT_VIEW。而在DU导入过程中HANA会进行优化处理,对objects进行Activate顺序的先后处理,这样就非常easy发生viewA先与com.sap.test.tables::02_HDB_DEPARTMENT_VIEW创建。DU导入失败,假设整个项目中view都没有加dependence信息,那就满眼的Error,请问怎样下手。并且改动了一处,根本不解决这个问题,看不出效果。非常多人就此放弃分析…

解决方式:

schema="MYSCHEMA";query="SELECT * FROM \"MYSCHEMA\".\"com.sap.test.tables::02_HDB_DEPARTMENT_VIEW\"";depends_on_view=["com.sap.test.tables::02_HDB_DEPARTMENT_VIEW"];

创建、改动hdbview必须检查depends_on_view和depends_on_table。能够写个python脚本去检查或跟新这些代码,在每一个伙伴提交代码前都执行一次。或者就依靠CI环境高速反馈问题,拖的时间越久越难分析。

使用Calculation View用call却不用select

问题分析:

创建Calculation View,一般在Activate后会在_SYS_BIC下生成一个package/viewname/proc这样一个procedure。非常多“用心研究”的伙伴发现都发现这个procedure,假设在另外一个Calculation View直接call这个procedure写起代码更简单,而且他自己新创建的这个Calculation View,Activate全然没有问题,开心的不得了,还把这个新发现分享给其它同仁。

结果打包出来的DU重新嗝屁了。问题原因同上,Calculation View没有显示的写出dependency的信息,HANA自身会依据你object的代码分析出来Calculation View A依赖于Calculation View B,前提是你得按游戏规则出牌,你得用select Calculation View B with parameters

解决方式:

vals = SELECT * FROM "_SYS_BIC"."mytest/cv_test_filtergroupid"(placeholder."$$In_Filter_Group_ID$$"=>:In_Filter_Group_ID);

Calculation View的使用必须用Select

the circle dependence(循环引用)问题

问题现象:

在Activate All或者导入DU时,出现循环引用。

在HANA中循环引用分两种

1. Object 自身的循环引用

A->B->C->A,这种循环发生的情况比較少,但不代表没有。

2. Object Type间的循环引用

这个情况发生在procedure和hdbprocedure中,比方procA –> hdbprocB -> procC,这样就会出现循环引用。

解决方式:

dot -Tpdf 
-O

把这些信息可视化,dot是一个开源的免费的可视化工具,然后找到循环引用的地方。

假设是procedure的问题,能够升级到HANA SP8,或者转化为同一种object type。

转载于:https://www.cnblogs.com/mengfanrong/p/4084923.html

你可能感兴趣的文章
验证码校验的前世今生及心得体会
查看>>
log4net 开启内部调试
查看>>
Java多线程学习笔记(二)
查看>>
地图源改变之后mxd文件打开很慢的问题
查看>>
51Nod - 1013 3的幂的和
查看>>
Leetcode 492. 构造矩形
查看>>
一、浏览器生成消息(1)
查看>>
如何让phpstorm支持.install .inc
查看>>
游戏代码
查看>>
Django 模板系统
查看>>
第二次实验报告
查看>>
spring boot
查看>>
webapck html-loader 静态html模块化
查看>>
Python编程之基础知识练习_002
查看>>
了解网页结构
查看>>
Java虚拟机1:什么是Java
查看>>
【转载】nmap 官方指南
查看>>
JQuery学习笔记
查看>>
Eclipse导出JAR过程
查看>>
关于 StreamReader 的 ReadToEnd() 方法
查看>>