最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

SAP HANA开发中常见问题 基于SAP HANA平台的多团队产品研发

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-25 13:45:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 乔帮主 于 2014-12-25 13:55 编辑

大家都知道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顺序的先后处理,这样就很容易发生viewA先与com.sap.test.tables::02_HDB_DEPARTMENT_VIEW创建。DU导入失败,如果整个项目中view都没有加dependence信息,那就满眼的Error,请问如何下手。而且修改了一处,根本不解决问题,看不出效果。很多人就此放弃分析…

解决方案:
[AppleScript] 纯文本查看 复制代码
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

解决方案:
[AppleScript] 纯文本查看 复制代码
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。


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-2 16:21

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表