|
Blogs by

Yuan Fang

    在一些实际使用中用可能会遇到要求对表中的数据进行分组并组内连接的情况。在Mysql中有group_concat()函数可以实现相关的功能,Oracle中也有类似的函数可以实现这个功能。在SAP HANA数据库中,没有可以直接调用的内置函数。但我们可以自定义procedure,来针对具体的表来实现。同时,也可以使用视图中的level hierarchy来实现。 即表中的数据为: COUNTRY REGION UK England UK Scotland USA New York USA Florida 希望按COUNTRY列来分组,并得到查询结果: COUNTRY REGION UK England,Scotland USA New York,Florida     在SAP HANA的三种视图中,支持根据视图中数据的分布情况建立层级(Hierarchy)。可以支持两种类型的层级,分别为:Level Hierarchy 和Parent-child Hierarchy。Level hierarchy包含一个或多个层级,属性层层向上递进向上组成一种多对一的关系,直到最上层。常见的level hierarchy的例子是一个地址的层次,包含大洲,国家,州等等。Parent-child hierarchy使用父属性来在源表数据间定义树状层级结构。这里的父属性相当于描述表中一个自参考关系或者自连接关系。     在这篇文章中,分别使用procedure和level 

在SAP HANA的native development中,可以创建两种类型的存储过程:Text类型的存储过程以.hdbprocedure为文件后缀,XML类型的存储过程以.procedure为文件后缀。其中,XML类型的存储过程可以和Modeler Procedure editor兼容,但可能不支持SQLScript的一些新特性。其激活以后的存储过程在_SYS_BIC schema下。Text类型的存储过程可以选择其激活后所要保存在的schema名。 其中,XML类型的存储过程,支持使用procedure template来创建存储过程。Procedure template顾名思义就是一个存储过程的模板。对于一系列可能有相同逻辑的但是操作对象不同的存储过程,可以通过使用procedure template保存相同的操作架构,来简化开发过程。Procedure template中的操作都执行在用户定义的相关占位符上。对于具体的procedure template instance,即使用procedure template的存储过程,用具体的对象名来代替对应的占位符。 占位符只能使用在存储过程的BEGIN和END之间,使用“<”和“>”包围。能使用占位符的对象包括: Schema name Table name and table column name View name and view column name Procedure name 创建 Procedure Template     

     We have a Chinese version(http://scn.sap.com/community/chinese/hana/blog/2014/06/16/sap-hana%E4%B8%ADgrouping-sets-rollup-cube%E7%9A%84%E4%BD%BF%E7%94%A8) of this document.     In the SELECT query sentences, you can use GROUP BY sentence to group the table using the content of one or more columns and use

     We have a Chinese version(http://scn.sap.com/community/chinese/hana/blog/2014/04/02/sap-hana-sqlscript-procedure%E4%B8%AD%E7%9A%84%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86) of this document.      For SQL procedure using SQLScript, SAP HANA provides corresponding methods of exception handling. There are three tools can be used: EXIT HANDLER, CONDITION, SIGNAL or

     We have a Chinese version(http://scn.sap.com/community/chinese/hana/blog/2014/03/12/sap-hana-%E5%9F%BA%E4%BA%8Eweb%E7%9A%84ide%E7%9A%84%E9%85%8D%E7%BD%AE%E5%8F%8A%E4%BD%BF%E7%94%A8) of this document.      For SAP HANA developer, SAP HANA Studio is a common client tool to develop or manage on SAP HANA. At the same time, SAP HANA

     We have a Chinese version(http://scn.sap.com/community/chinese/hana/blog/2014/03/03/sap-hana-ce-function%E5%BC%95%E7%94%B3-%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94) of this document.      In the previous blog, I have introduced the usage of common CE functions simply. And this blog will compare the performance between the CE functions

     对于使用SQLScript 的存储过程,SAP HANA提供了对存储过程的调试功能,即debug功能。当对一个存储过程进行调试时,这个存储过程中的代码将被顺序执行,而并不是按照实际的可能情况并行执行。因此在对存储过程进行调试时,只是为了验证逻辑的正确性,查看执行过程中变量的值,而并不能保证调试中的性能。 相关权限      要对一个存储过程进行调试的用户必须具有相关的权限,才可以进行调试。所以必须先赋予相应的权限给此用户。      对于进行调试 的用户,首先要有对此存储过程的CALL的权限,以及对存储过程所访问的对象(table,view)的SELECT的权限。然后,要有对此存储过程的DEBUG的权限。      在Object Privileges下选择相应的procedure,勾选DEBUG的权限。或者选择相应schema下DEBUG的权限,则可以对此schema下所有procedure或者calculation view 的DEBUG的权限。      同样,也可以使用SQL语句进行授权。 GRANT DEBUG ON <procedure_name>  TO <user_name>; GRANT DEBUG ON SCHEMA <schema_name> TO <user_name>; 调试design-time procedure       对于在一个共享的project中的存储过程,你可以进行调试和分析。即对workspace中已经被提交和激活的一个.hdbprocedure或者.procedure文件进行调试。这是从HANA SPS6版本开始提出的功能。

   在SELECT查询语句中,可以使用GROUP BY子句来实现按照某一列或者几列进行分组,并可以再结合聚合函数对每个分组进行统计计算。同样,也可以使用同一个关键字,在同一语句中实现同时对不同分组进行统计,其结果即相当于将多个GROUP BY语句的结果进行UNION ALL后的结果。在下文中,将介绍使用GROUPING SETS, ROLLUP和CUBE实现完成这个目的。 语法: SELECT <attributes> [, grouping_id(<attributes>) ]   [, text_filter(dimensional_attribute) ] FROM … GROUP BY GROUPING SETS [BEST n] [LIMIT n] [OFFSET n] [WITH SUBTOTAL] [WITH BALANCE] [WITH TOTAL] [TEXT_FILTER

     对于使用SQlScript 的存储过程,SAP HANA提供了相应的异常处理的方法。分别包含几三个相关的工具:EXIT HANDLER, CONDITION, SIGNAL或 RESIGNAL。      使用EXIT HANLDER的例子如下所示: CREATETABLE MYTAB (I INTEGERPRIMARYKEY); CREATE PROCEDURE MYPROC1 AS BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT ::SQL_ERROR_CODE, ::SQL_ERROR_MESSAGE FROM DUMMY; INSERT INTO MYTAB VALUES (1);

    对于开发者来说,SAP HANA Studio是对SAP HANA 进行开发、管理所必需的客户端工具。但是, SAP HANA XS 也提供了一个基于Web的开发工具,只需使用浏览器,就可以进行一些轻量级的操作。当开发者不能或者不需要安装HANA Studio时,或者需要在一个远程环境下进行开发时,可以使用这个IDE完成所需要的操作。     这个基于Web的IDE称为 SAP HANA Web-based Development Workbench。主要包含了四个模块: Editor:对HANA repository中的对象进行操作。 Catalog:管理catalog中的对象。 Security:对用户和权限进行管理。 Trace:查看或者下载XS上应用的trace文件。 注:在SPS06版本中,SAP HANA XS提供了两个基于Web的IDE工具:可以进行简单操作的SAP HANA IDE (Integrated Development Environment) lite 和 可以完成相对复杂操作的SAP HANA