`

HANA常用CE FUNCTION

 
阅读更多

注意:以下代码中的数据表来自TPC-H生成的数据表

 

--1.CE_COLUMN_TABLE     这个函数使用一个已经存在的列存储表格作为数据源,选取其全部或者部分列,返回相应内容绑定到一个表变量上。
--  注意:TT_CUSTOMER 为创建的表类型
create type TT_CUSTOMER as table(
	C_CUSTKEY integer,
	C_NAME varchar(25),
	C_ADDRESS varchar(40)
);

DROP PROCEDURE ProcWith_CE_COLUMN_TABLE;

CREATE PROCEDURE ProcWith_CE_COLUMN_TABLE(OUT o1 TT_CUSTOMER) 
    LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView AS 
    BEGIN 
        o1 = CE_COLUMN_TABLE("CUSTOMER",["C_CUSTKEY","C_NAME","C_ADDRESS"]);
        --相当于o1 = SELECT C_CUSTKEY,C_NAME,C_ADDRESS FROM CUSTOMER;
    END;
    
CALL ProcWith_CE_COLUMN_TABLE(NULL);

--2.CE_PROJECTION     这个函数选取表变量中的一列或者多列,可以对每列进行重命名,计算表达式或者使用过滤条件。

DROP PROCEDURE ProcWith_CE_PROJECTION;

CREATE PROCEDURE ProcWith_CE_PROJECTION(OUT o1 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView1 AS 
    BEGIN 
    	product = CE_COLUMN_TABLE("CUSTOMER");
        o1 = CE_PROJECTION(:product,["C_CUSTKEY","C_NAME","C_ADDRESS" AS "C_ADDRESS"]); 
		--相当于o1 = SELECT C_CUSTKEY,C_NAME,C_ADDRESS AS C_ADDRESS FROM CUSTOMER;
    END;

CALL ProcWith_CE_PROJECTION(NULL)

--3.CE_JOIN     这个函数可以得出给出的两个表变量通过某些属性相关联的内连接的结果集。对于相关联的两个属性,结果中只包含一个,因此要求必须有相同的属性名,否则提前进行重命名。

DROP PROCEDURE ProcWith_CE_JOIN;

CREATE PROCEDURE ProcWith_CE_JOIN(OUT o3 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView2 AS 
    BEGIN 
    	product = CE_COLUMN_TABLE("CUSTOMER");
        o1 = CE_PROJECTION(:product,["C_CUSTKEY","C_NAME","C_ADDRESS"]); 
        o2 = CE_COLUMN_TABLE("CUSTOMER",["C_CUSTKEY"]); 
		o3 = CE_JOIN(:o1,:o2,["C_CUSTKEY"],["C_CUSTKEY","C_NAME","C_ADDRESS"]);
		--相当于o3 = SELECT C_CUSTKEY,C_NAME,C_ADDRESS FROM o1 INNER JOIN o2 ON o1.C_CUSTKEY=o2.C_CUSTKEY
    END;

CALL ProcWith_CE_JOIN(NULL)

--4.CE_JOIN_VIEW     这个函数使用一个已经存在的连接视图(即Attribute View,属性视图)作为数据源,选取其全部或者部分列,返回相应内容绑定到一个表变量上。

DROP PROCEDURE ProcWith_CE_JOIN_VIEW;

CREATE PROCEDURE ProcWith_CE_JOIN_VIEW(OUT product2 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView3 AS 
    BEGIN 
    	product2 = CE_JOIN_VIEW("_SYS_BIC"."demo/CUSTOMER",["C_CUSTKEY","C_NAME","C_ADDRESS"]);  
    END;

CALL ProcWith_CE_JOIN_VIEW(NULL)


--5.CE_OLAP_VIEW     这个函数使用一个已经存在的OLAP视图(即Analytical  View,分析视图)作为数据源,选取一些关键值或者维度作为参数,按这些维度分度并求对应的聚合值,返回相应内容绑定到一个表变量上。

DROP PROCEDURE ProcWith_CE_OLAP_VIEW;

CREATE PROCEDURE ProcWith_CE_OLAP_VIEW(OUT product2 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView4 AS 
    BEGIN 
    	product2 = CE_OLAP_VIEW("_SYS_BIC"."demo/CUSTOMER_ORDER",["C_CUSTKEY","C_NAME","C_ADDRESS"]);  
    END;

CALL ProcWith_CE_OLAP_VIEW(NULL)

--6.CE_CALC_VIEW     这个函数使用一个已经存在的计算视图(即Calculation View视图)作为数据源,选取其全部或部分属性,返回相应内容绑定到一个表变量上。
--创建输出表类型
create type TT_CA_DEMO as table(
	P_NAME VARCHAR(55),
	P_RETAILPRICE DECIMAL(15,2),
	P_SIZE INTEGER
);

DROP PROCEDURE ProcWith_CE_CALC_VIEW;

CREATE PROCEDURE ProcWith_CE_CALC_VIEW(OUT product2 TT_CA_DEMO)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView5 AS 
    BEGIN 
    	product2 = CE_CALC_VIEW("_SYS_BIC"."demo/CA_DEMO",["P_NAME","P_RETAILPRICE","P_SIZE"]);  
    END;

CALL ProcWith_CE_CALC_VIEW(NULL)

--7.CE_LEFT_OUTER_JOIN     使用方式与CE_JOIN相同,实现左外连接的功能。

DROP PROCEDURE ProcWith_CE_LEFT_OUTER_JOIN;

CREATE PROCEDURE ProcWith_CE_LEFT_OUTER_JOIN(OUT o3 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView6 AS 
    BEGIN 
    	product = CE_COLUMN_TABLE("CUSTOMER");
        o1 = CE_PROJECTION(:product,["C_CUSTKEY","C_NAME","C_ADDRESS"]); 
        o2 = CE_COLUMN_TABLE("CUSTOMER",["C_CUSTKEY"]); 
		o3 = CE_LEFT_OUTER_JOIN(:o1,:o2,["C_CUSTKEY"],["C_CUSTKEY","C_NAME","C_ADDRESS"]);
    END;

CALL ProcWith_CE_LEFT_OUTER_JOIN(NULL)

--8.CE_RIGHT_OUTER_JOIN     使用方式与CE_JOIN相同,实现右外连接的功能。

DROP PROCEDURE ProcWith_CE_RIGHT_OUTER_JOIN;

CREATE PROCEDURE ProcWith_CE_RIGHT_OUTER_JOIN(OUT o3 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView7 AS 
    BEGIN 
    	product = CE_COLUMN_TABLE("CUSTOMER");
        o1 = CE_PROJECTION(:product,["C_CUSTKEY","C_NAME","C_ADDRESS"]); 
        o2 = CE_COLUMN_TABLE("CUSTOMER",["C_CUSTKEY"]); 
		o3 = CE_RIGHT_OUTER_JOIN(:o1,:o2,["C_CUSTKEY"],["C_CUSTKEY","C_NAME","C_ADDRESS"]);
    END;

CALL ProcWith_CE_RIGHT_OUTER_JOIN(NULL)

--9.CE_CALC 这个函数用于其它关系操作的函数内部,通常是计算一个表达式的值并且绑定为一个新列,比较常用于CE_PROJECTION函数中。
--他一般有两个参数,分别为计算的表达式和结果的数据类型。计算的表达式中还可以使用一些函数,包括转换函数、字符串函数、数学函数、日期函数以及一些其它函数。
DROP TYPE TT_CE_CALC_RES
CREATE TYPE TT_CE_CALC_RES AS TABLE(
	C_NAME VARCHAR(25),
	C_ACCTBAL DECIMAL(15,2),
	C_ACCTBAL_VAT DECIMAL(15,2)
)

DROP PROCEDURE ProcWith_CE_CALC;

CREATE PROCEDURE ProcWith_CE_CALC(IN vat_rate INTEGER, OUT o3 TT_CE_CALC_RES)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView9 AS 
    BEGIN 
        product = CE_COLUMN_TABLE("CUSTOMER");
    	o3 = CE_PROJECTION(:product, ["C_NAME","C_ACCTBAL",CE_CALC('"C_ACCTBAL" * :vat_rate',decimal(15,2)) AS "C_ACCTBAL_VAT"]);
    	--相当于 o3  SELECT C_NAME,C_ACCTBAL, C_ACCTBAL * :vat_rate as C_ACCTBAL_VAT FROM CUSTOMER; 
    END;
    
    

CALL ProcWith_CE_CALC(10,NULL)

--10.CE_AGGREGATION     这个函数对输入列分组并且计算每个分组的聚合结果,包含常用的COUNT 、 SUM 、 MIN 、 MAX聚合函数。
--创建表输出

DROP TYPE TT_RES
CREATE TYPE TT_RES AS TABLE(
	CNT INTEGER,
	C_NATIONKEY INTEGER
)

DROP PROCEDURE ProcWith_CE_AGGREGATION;

CREATE PROCEDURE ProcWith_CE_AGGREGATION(OUT o3 TT_RES)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView10 AS 
    BEGIN 
        product = CE_COLUMN_TABLE("CUSTOMER");
    	o3 = CE_AGGREGATION (:product,[COUNT ("C_CUSTKEY") AS "CNT"], ["C_NATIONKEY"]); 
    	--相当于 o3 = select C_NATIONKEY,COUNT(*) AS CNT from CUSTOMER GROUP BY C_NATIONKEY 
    END;

CALL ProcWith_CE_AGGREGATION(NULL)




--11.CE_UNION_ALL     这个函数计算两个具有相同列名和列顺序表变量UNION ALL的操作,即存在相同行均保留。
DROP PROCEDURE ProcWith_CE_UNION_ALL;

CREATE PROCEDURE ProcWith_CE_UNION_ALL(OUT o3 TT_CUSTOMER)
	 LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView11 AS 
    BEGIN 
    	product = CE_COLUMN_TABLE("CUSTOMER");
        o1 = CE_PROJECTION(:product,["C_CUSTKEY","C_NAME","C_ADDRESS"]); 
        o2 = CE_COLUMN_TABLE("CUSTOMER",["C_CUSTKEY","C_NAME","C_ADDRESS"]); 
		o3 = CE_UNION_ALL(:o1,:o2);
    END;

CALL ProcWith_CE_UNION_ALL(NULL)

 

分享到:
评论

相关推荐

    SAP-HANA-Business-Function-Library-(BFL)-Reference.2013

    HANA Business Function Library(BFL)是SAP HANA的一部分,它提供了一组预先构建的业务函数,允许用户在应用中调用这些函数以执行特定的业务逻辑。 本文档的目标受众包括咨询顾问、系统管理员、硬件合作伙伴以及...

    SAP HANA运维文档

    SAP HANA运维工具 自动化脚本 备份工具 SAP HANA运维工具 自动化脚本 备份工具

    HANA Studio 操作手册

    - **Create Scalar Function**和**Table Function**:创建标量函数和表函数,扩展HANA的计算能力。 - **Create Calculation View**:构建计算视图,用于数据聚合、转换和过滤,支持复杂的数据建模。 - **Create ...

    HANA 1.0升级2.0

    SAP HANA是一个高性能的数据处理和分析平台,专为实时业务操作和智能数据洞察而设计。从HANA 1.0升级到2.0是企业为了利用新功能、提高性能和安全性的重要步骤。本教程详细介绍了这个升级过程,旨在确保用户能够安全...

    SAP HANA SR配置手册

    《SAP HANA SR配置手册》是一份详细指导如何配置SAP HANA系统复制(System Replication)的重要参考资料。这份手册旨在确保SAP HANA数据库的高可用性(HA)和灾难恢复能力,通过系统复制技术,可以在主系统发生故障...

    SAP HANA 内存使用分析

    标题和描述中提到的知识点有:SAP HANA内存使用分析、SAP技术顾问或 Basis相关人员、通过SQL语句进行分析。 在SAP HANA数据库中,内存是最重要的资源之一。内存的使用情况对于SAP HANA系统的性能有着直接影响。因此...

    SAP HANA-STUDIO 安装包

    SAP HANA Studio是一款强大的集成开发环境(IDE),专门用于设计、开发和管理SAP HANA平台的应用程序和服务。这款工具由SAP提供,旨在帮助开发者充分利用HANA的大数据处理能力,实现高效的数据分析和实时业务操作。...

    HANA数据库检查脚本

    标题中的“HANA数据库检查脚本”指的是针对SAP HANA数据库的一系列自动化检查工具,这些脚本旨在帮助管理员监控和评估HANA系统的健康状态。HANA是SAP推出的一款高性能内存数据库系统,专为大数据处理和实时分析设计...

    SAP HANA操作手册

    SAP HANA是SAP公司推出的一款高性能数据库产品,它能够处理大量的数据并提供实时分析能力,满足现代企业对业务数据处理和分析的需求。HANA支持多种数据类型,包括结构化数据和非结构化数据,支持数据存储、处理、...

    sap hana 自动备份与清理脚本

    在IT行业中,数据库管理系统是企业运营的核心组成部分,而SAP HANA作为一个高性能的数据处理平台,其数据安全性至关重要。为了确保数据的完整性和可用性,定期备份和适时的清理策略是必要的。本文将深入探讨“SAP ...

    HANA studio安装及操作手册

    - 首先,从指定目录下载HANA Studio安装包:`\\192.168.3.186\00_bo个人常用客户端\80_SAP_HANA_STUDIO_22_32bit` - 运行安装程序`hdbsetup.exe`开始安装。 - 在安装过程中可能会遇到C++相关的错误提示,但这些...

    SAP HANA studio window版本2.4.126

    SAP HANA Studio是SAP公司为开发和管理SAP HANA数据库系统提供的一款集成开发环境(IDE)。在Windows平台上,版本2.4.126是该工具的一个特定更新,它包含了各种改进和增强功能,旨在提升开发人员的工作效率和数据库...

    HANA Studio

    【HANA Studio】是SAP公司为开发和管理SAP HANA数据库提供的一款集成开发环境(IDE)。这个版本,即2.3.29.000000,是专为Windows 64位操作系统设计的。SAP HANA(High-Performance Analytic Appliance)是一种内存...

    SAP HANA 数据库 2.8.22 含 ODBC

    SAP HANA数据库是SAP公司推出的一款高性能的数据管理和分析平台,专为处理大量实时数据而设计。2.8.22是该数据库系统的一个版本号,代表着在该版本中,SAP对HANA进行了多方面的优化和更新,以提供更高效、稳定的服务...

    SAP_HANA_STUDIO_2.3.15_X64

    SAP HANA Studio是SAP公司为开发和管理SAP HANA数据库系统提供的一款集成开发环境(IDE)。这个2.3.15_X64版本是专为64位操作系统设计的,它集成了多种工具,帮助开发者进行高效的数据模型设计、应用程序开发以及...

    SAP HANA 中调试存储过程

    SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...

    SAP Data Services如何连接HANA

    当需要与SAP HANA进行交互时,SAP Data Services 提供了直接的连接能力,使用户能够轻松地访问和处理存储在HANA数据库中的大量结构化数据。以下将详细介绍如何在SAP Business Objects Data Services (BO Data ...

    SAP_HANA_CLIENT64

    SAP HANA客户端是用于与SAP HANA高性能分析数据库交互的软件工具,它提供了多种方式来连接和操作数据。标题“SAP_HANA_CLIENT64”表明我们讨论的是64位版本的SAP HANA客户端,这通常适用于64位操作系统。在描述中...

    HANA SQL参考手册

    - **Function表达式**:调用内置函数或用户自定义函数。 - **Aggregate表达式**:如 `SUM`, `COUNT`, `AVG`, `MAX`, `MIN` 等聚合函数。 - **表达式中的子查询**:子查询可以在表达式中作为整体的一部分使用。 ####...

Global site tag (gtag.js) - Google Analytics