开始课程先,先按照以下链接导入所需的delivery unit https://open.sap.com/courses/2/discussion_topics/564
第一章 SQLScript简介
这是HANA建模中所必备的知识。但是第三周一整周都会介绍SQLScript,因为对于基于HANA的应用开发来说,这也是必须熟知的。
什么是SQLScript?为什么需要SQLScript?
SQLScript是SAP对标准ANSI SQL的扩展,与其他数据库厂商对SQL的扩展一样。那么为什么需要SQLScript当然也就一目了然了。我曾经很怀疑如何将逻辑推到DB这个方法,觉得这会破坏应用的可维护性和架构。但是想想O记的EBS开发,是离不开PL/SQL的。拥有了自己的DB再针对其进行优化,会带给SAP更多的可能。SQLScript是在HANA Studio的SQL Editor里编写。这个与O记的各种成熟的PL/SQL开发IDE来说,暂时确实简陋了些。但是无论从SQLScript语言本身还是开发环境,都在快速演化中,不久的将来应该会变得很顺手。
HANA的一大特点就是并行计算,而且是对开发者完全透明的。如下面的例子,第三和第四个查询互相之间没有任何依赖关系,虽然在编写时有前后顺序,但是HANA却可以并行执行,推向不同的CPU core。
但是也有一些情况HANA会放弃并行计算。比如有写操作,或者有DDL操作,因为并行计算无法保证结果的正确性。再比如,有类似CASE这样的语句,使计算必须按照一定得顺序或者逻辑执行时。需要注意的是,一旦HANA发现由于以上的某种情况使得无法进行并行计算后, 即便之后的操作都符合并行计算的条件,HANA也不会再次进行并行计算。所以最好的办法是将可以进行并行计算的部分单独创建存储过程被调用。
SQLScript还可以定义table type。其实可以理解为ABAP里面的structure,用来存储table型的数据。
最后是存储过程的定义和调用语法。存储过程有传入传出参数。需要定义使用的语言,因为除了SQLScript以外,还可以使用开源统计语言R。HANA可以与R结合,利用PAL和PA进行统计分析。此外,还有一种语言可供选择 L。只不过这只供SAP内部开发使用。我们可以指定存储过程是只读的以及存储过程的输出是否可以作为column view用于SQL查询。
第二章 创建包含SELECT的存储过程
首先,关于HANA的select,与标准SQL没有什么区别,只是要注意尽量避免SELECT * SELECT SINGLE *。我们知道在传统的RDBMS都要尽量避免这种语句以提高性能。而对于列存储的HANA来说,这几乎就是导致性能大幅下降的凶手。
对于存储过程的创建来说,与前面创建其它对象很类似,那就是通过文件的方式。这样的好处不再赘述了,所有项目相关对象一起打包存储,升级等。我们要创建的事<存储过程名称>.procedure文件。之后系统会自动打开存储过程编辑器。
再编写完毕后(这里我建议不要拷贝黏贴代码模板,而手动敲入,印象会更深),会在_SYS_BIC下找到该存储过程。这里就有问题了。因为我们是可以通过传统HANA建模方法编写存储过程的,也就是说我们可以用这种方法更改它。那么就一定要小心这种可能。因为你的更改是即刻在HANA里生效的,而此时你的HANA开发视图里项目下的存储过程还是旧的。所以要尽量避免这种直接更改。
第三章 用CE(calculation Engine) 函数创建存储过程
CE function,全名是calculation engine function,是可以用来编写存储过程的另外一种方式。了解CE函数之前,我们首先要了解SAP HANA一个比较粗略的架构。在列存储这一部分,我们以前已经了解过建模所需要的一些基本组成部分:attribute view, analytic view, calculation view。这些不同的视图其实是由HANA里不同的引擎处理的,而不同的引擎都擅长于做不同的事情。attribute view由JOIN ENGINE处理,analytic view由OLAP ENGINE处理,calculation view由CALCULATION ENGINE处理。避免HANA出现性能问题的一个最基本的原则就是避免数据在不同的引擎中反复传递。
CE函数就是calculation engine内部实现的一些常用的SQL功能,比如JOIN, SELECT…WHERE等。由于直接由calculation engine处理,效率相对较高。而普通的使用如上一章SQL编写的存储过程由于要经过SQL optimizer,所以从性能的角度,不如CE函数。但是,一定要记住的是,切忌混合CE函数与SQL在一个存储过程里,这可能成为性能的杀手。还记得之前我提到的么,避免在不同的引擎中反复传递数据。混合CE函数与SQL就会造成这样的问题出现。比如在HANA专家Werner的文章里就提及了,不要混合使用SQL与CE函数http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6056911a-07cc-2e10-7a8a-ffa9b8cf579c?overridelayout=true
除此以外,还有一个基本事实,可能是HANA初学者或者没有实际经验的人不知道的,但是却从以上思想中可以推论出来的。大量数据在OLAP ENGINE和CALCULATION ENGINE中的传递,也会造成性能问题。而需要注意的一点是,并非analytic view只会在OLAP ENGINE里处理,如果你创建了一个calculated attribute,那么这个模型本身会成为一个calculation view,潜在的性能问题就可能产生。
具体CE函数,大家可以去help.sap.com的手册里去找。在HANA XS开发项目中创建基于CE函数的存储过程也没有特殊,与基于SQL的一样。这是本次练习的示例:
CREATE PROCEDURE get_bp_addresses_by_role_ce (
in partnerrole nvarchar(3),
out bp_addresses tt_bp_addresses )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
READS SQL DATA AS
BEGIN
lt_bp =
CE_COLUMN_TABLE(”SAP_HANA_EPM_DEMO”.”sap.hana.democontent.epm.data::businessPartner”,
["PartnerId", "PartnerRole", "EmailAddress", "CompanyName", "AddressId" ]);
lt_bp_proj = CE_PROJECTION(:lt_bp,
["PartnerId", "PartnerRole", "EmailAddress" , "CompanyName", "AddressId" ],
‘”PartnerRole” = :partnerrole’ );
lt_address =
CE_COLUMN_TABLE(”SAP_HANA_EPM_DEMO”.”sap.hana.democontent.epm.data::addresses”,
["AddressId", "City", "PostalCode", "Street"]);
bp_addresses = CE_JOIN(:lt_bp_proj, :lt_address, ["AddressId"],
["PartnerId", "PartnerRole", "EmailAddress", "CompanyName",
"AddressId", "City", "PostalCode", "Street"]);
END;
第四章 编写具有判断逻辑的存储过程
本章没有什么特别的内容。几乎所有的数据库厂商都扩展了标准SQL使得能够编写IF/FOR/WHILE/CASE等逻辑判断语句的存储过程。
第五章 使用SQLScript debuuger
这是常常被大家谈起来的HANA 1.0 SP05的特性。http://scn.sap.com/community/developer-center/hana/blog/2012/11/30/introducing-the-new-sap-hana-sqlscript-editor 终于大家拥有了一个叫交互式集成调试器来调试存储过程了。它与其他的调试器并没有大的不同,调试视图由三部分组成,分别是调试会话,watch和代码窗口。但是想考开始调试是需要设置权限的。要对_SYS_BIC schema的调试权限。
之后可以通过双击代码行左侧或者右键toggle breakpoint的方式。但是目前的调试器还是有一点遗憾的,就是对于存储过程的输入参数,我们没办法提供类似弹出窗口一样的东西传值。现在的解决办法是编写一个专门测试用的存储过程,调用要被调试的存储过程并传值,比如:
CREATE PROCEDURE debug_wrapper ( ) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER READS SQL DATA AS BEGIN /***************************** Write your procedure logic *****************************/ call _SYS_BIC."workshop.session<session id>.<group number>.procedures/get_product_sale_price"( 'HT-1000', ?); END;
使用过基于eclipse开发环境并且调试过的同学一定不陌生,那就是设置debug配置。由于目前HANA调试器没有任何可配置项,我们只是创建一个空的配置。未来的revision中会加入比如传入参数值之类的配置项。
这一周的内容就结束了,而我们也要跟传统HANA建模相关的知识说拜拜了。从下周开始是重头戏了,SAPUI5,OData...加油!
相关推荐
ERP软件:SAP二次开发_SAP HANA集成开发.docx ERP软件:SAP二次开发_SAPWebDynpro开发.docx ERP软件:SAP二次开发_SAP二次开发中的数据管理.docx ERP软件:SAP二次开发_SAP二次开发最佳实践与案例分析.docx ERP软件...
- 用户设置调整:SAP HANA Cockpit允许你调整用户设置,如语言、主题和通知设置,以适应个人偏好。 - 使用“我的视图”:你可以创建和保存自己的视图,方便快速访问常用的功能或数据。 通过以上内容,SAP HANA...
S/4HANA On-Premise版本是一个基于SAP HANA内存数据库的ERP业务套件,允许企业在私有云或公有云上部署,提供全面的功能和高度的定制性。这种部署方式适合大型企业,它们通常有复杂的业务流程和较高的定制需求,同时...
- **多层架构**:SAP HANA采用的多层架构,包括应用程序服务器层、计算层和持久存储层。 #### 2. 高可用性配置 - **系统复制**:了解如何通过系统复制实现节点之间的数据同步,确保高可用性。 - **热备份节点**:...
SAP HANA Studio是SAP公司为开发和管理基于SAP HANA数据库的应用程序而设计的一款集成开发环境(IDE)。这个“SAP-HANA-STUDIO-2.3.37”压缩包文件包含了该版本的SAP HANA Studio安装程序,用于在用户的计算机上部署...
5. **安装组件**:SAP HANA Studio包含多个组件,如开发工具、模型工具、数据库连接器等。安装过程中,根据你的需求选择要安装的组件。 6. **连接HANA实例**:安装完成后,需要配置连接到你的SAP HANA数据库实例。...
4. SAP HANA 基于内存创新技术:SAP HANA基于内存创新技术,可以实时处理大量数据,具有高性能和实时分析能力。 5. 华为RH2288H V2服务器、E9000刀片服务器、RH5885H V3服务器和RH8100 V3服务器认证版本SAP HANA...
这是一本介绍SAP PPDS组件功能的文档,主要介绍S4 HANA或SCM中关于高级计划管理的相关功能
《SAP HANA 管理指南》是针对SAP HANA平台的详细操作手册,旨在帮助管理员有效地管理和维护SAP HANA数据库系统。本文档适用于SAP HANA Platform 2.0 SPS 04版本,由SAP SE或其关联公司在2019年10月31日发布,所有...
1. **SAP HANA**:SAP HANA(High-Performance Analytic Appliance)是一款基于列存储的内存数据库系统,它将数据存储、处理和分析功能集中在内存中,从而提供极高的数据处理速度。 2. **HANA Studio**:作为SAP ...
String url = "jdbc:sap://your-hana-server:30015/?databaseName=YOURDB"; String user = "your-username"; String password = "your-password"; try { Class.forName("com.sap.db.jdbc.Driver"); ...
SAP HANA ODBC DRIVER(HANA客户端2.0-2.7.21-windows-x64)是一款专为Windows 64位操作系统设计的数据库连接驱动程序,它允许应用程序通过Open Database Connectivity (ODBC)标准与SAP HANA数据库进行通信。...
主要内容包括:SAPHANA的各个特性;SAPHANAStudio;属性视图;分析视图;图形化计算视图;用SQLScript创建计算视图;SAPHANA系统的授权机制;SAPHANA的层级;如何将SAPHANA数据模型部署到3个不同的工具中;如何使用...
根据给定文件的信息,我们可以提炼出关于"SAP S/4HANA 销售中的业务流程"的相关知识点。以下是对这份文档的关键内容进行的详细解读: ### SAP S/4HANA 销售中的业务流程 #### 教程概述 - **教程版本**:12 - **...
SAP HANA HA100 - SAP HANA Introduction(Col99).pdf
Thishandbookisintendedtocomplementtheinstructor-ledpresentationofthis course,andserveasasourceofreference. Itisnotsuitableforself-study
SAP_HANA_Modeling_Guide_en
SAP HANA Studio是一款专为SAP HANA数据库设计的集成开发环境(IDE),它提供了全方位的工具和服务,便于开发者、管理员以及数据分析师对HANA系统进行管理和开发。这款工具在X64平台上运行,其Version 2.3.37确保了...
SAP HANA HA300 - SAP HANA Implementation and Modelling(Col99).pdf
总结而言,这份SAP HANA操作手册详细介绍了联想为SAP HANA平台版提供的硬件支持和软件解决方案,强调了高性能硬件配置对于保证SAP HANA数据库性能的重要性,以及在实际操作中需要注意的兼容性和性能评估问题。