SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
大家都知道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 <file_name> -O
把这些信息可视化,dot是一个开源的免费的可视化工具,然后找到循环引用的地方。
假设是procedure的问题,能够升级到HANA SP8,或者转化为同一种object type。
SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发的更多相关文章
- “多团队大规模”开发模式 - 基于SAP HANA平台的多团队产品研发
应用SAP HANA “官方”开发模式的伙伴们在转到“多团队大规模”开发模式时会遇到各式各样的心理不适应的状况,各种纠结.比如GIT Repository和HANA Repository冲突什么的. ...
- SAP HANA 开发模式 - 基于SAP HANA平台的多团队产品研发
“基本”开发模式 Windows: Unix/Linux: 在基本模式下我们可以通过regi来进行激活我们的object.Regi是一个类git功能的,方便和HANA repository交互的一个命 ...
- 基于SAP HANA平台的多团队产品研发
工欲善其事必先利其器.要提高多团队的开发效率,而且还是在SAP HANA平台上,建议大家还是本着“慢就是快”的原则,不要急功近利,在没有准备好团队开发的架构时就匆忙开始功能的开发.匆忙功能开发就算了, ...
- 【ABAP系列】SAP ABAP 开发中的SMARTFORMS 参数
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 开发中的SMA ...
- iOS开发中常见问题集锦
在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code ...
- MyBatis 项目开发中是基于 XML 还是注解?
只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...
- drf开发中常见问题
开发常见问题及解决 问题: 一.本地系统不能重现的bug 二.api接口出错不能及时的发现或难找到错误栈 三.api文档管理问题 四.大量的url配置造成url配置越来越多难以维护 五.接口不及时去更 ...
- Android开发中常见问题分析及解决
最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...
- Ionic开发中常见问题和解决方案记录
1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...
随机推荐
- WPF用SkewTransform画3D柱状图
WPF用SkewTransform画3D柱状图 SkewTransform主要是对控件实现一种2-D扭曲,具体内容可以查看以下链接: http://msdn.microsoft.com/zh-cn/l ...
- Windows Phone开发(11):常用控件(下)
原文:Windows Phone开发(11):常用控件(下) WP控件大部分都可以从Silverlight中继承过来,这里我也只能拿一部分作演示,对于其它控件如何使用,可以参考SDK相关说明以及Sil ...
- Vector Clock理解
背景近期在重读"Dynamo: Amazon's Highly Available Key-value Store"(经典好文,推荐!).文章4.4 中聊到了Data Versio ...
- iOS执行时与method swizzling
C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序怎样执行的.而Objective-C是动态语言,它并不是通过调用类的方法来执行功能,而是给对象发送消息,对象在接收到消息之后 ...
- POJ 1475 Pushing Boxes 搜索- 两重BFS
题目地址: http://poj.org/problem?id=1475 两重BFS就行了,第一重是搜索箱子,第二重搜索人能不能到达推箱子的地方. AC代码: #include <iostrea ...
- android实现应用程序仅仅有在第一次启动时显示引导界面
概述 SharedPreferences的使用很easy,可以轻松的存放数据和读取数据.SharedPreferences仅仅能保存简单类型的数据,比如,String.int等.通常会将复杂类型的数据 ...
- uva 10671 - Grid Speed(dp)
题目链接:uva 10671 - Grid Speed 题目大意:给出N,表示在一个N*N的网格中,每段路长L,如今给出h,v的限制速度,以及起始位置sx,sy,终止位置ex,ey,时间范围st,et ...
- c# ThreadPoold使用心得
于c#多线程编程经常使用的线程,但是,因为线程的创建和销毁是非常资源 - 成本非常大.因此,我们使用线程池来解决问题, 在线程池的开始是申请一定数量的线程系统.和维护,有任务时间,假设你有空闲的线程, ...
- windows中间vmware的Linux系统安装jdk步骤
1.设置文件的享受,对于本地阅读windows档 于vmware虚拟机设置共享文件夹,那么共享文件中,你可以 2.然后打开虚拟机上,使用root输入账户,然后,在夹/mnt/hgfs/ 共享文件了 ...
- QoS令牌桶工作原理
QoS的一个重要作用就是对port流量进行监管,也就是限制port流量.但QoS是怎样做到这点的呢?那就是QoS的令牌桶机制了.以下是在笔者刚刚出版的<Cisco/H3C交换机高级配置与管理技术 ...