《SAP HANA平台应用开发》—第2章2.3节熟悉SAP HANA工作台-阿里云开发者社区

开发者社区> 华章出版社> 正文

《SAP HANA平台应用开发》—第2章2.3节熟悉SAP HANA工作台

简介:

本节书摘来自华章出版社《SAP HANA平台应用开发》一书中的第2章,第2.3节熟悉SAP HANA工作台,作者刘刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 熟悉SAP HANA工作台
SAP HANA工作台是一个客户端软件,是基于Eclipse核心并且遵守GPL规范进行的扩展和功能开发。SAP提供了不同操作系统版本的软件供用户下载。
SAP HANA工作台的版本必须和SAP HANA服务器的版本相同,Revision的版本尽量不要相差太多,虽然其也支持向下兼容,但是毕竟不同的SPS版本还是有一些差异的,所以,在项目开发中,尽量保持SAP HANA服务器和SAP HANA工作台软件版本的一致性。
作为和SAP HANA系统进行交互工作的客户端软件,SAP HANA工作台软件提供了如下功能:

  • 对SAP HANA系统进行监控、安全管理、配置管理、审计、启动和升级、系统备份等。
  • 在SAP HANA中创建数据库表、视图、存储过程、信息模型。
  • 对SAP HANA进行Data Provision操作,从外部系统实时复制数据到SAP HANA,或者直接将离线CSV文件传输到数据库表中。
  • 基于SAP HANA共享资源库进行XS原生应用的协同开发、部署、版本管理。

2.3.1 视角切换
在启动SAP HANA工作台客户端软件后,单击工具栏上的“”按钮,SAP HANA工作台软件会出现图2-8所示的界面,用户选中不同的视角,然后单击“OK”按钮,将会使SAP HANA工作台切换到不同的视角中。
在SAP HANA工作台中最常用的视角有三个,下面对这三个视角及该视角下的能做的一些操作进行简要介绍。

  1. SAP HANA Administration Console视角
    在该视角下,用户可以对SAP HANA系统执行与系统管理相关的所有操作(例如,监控、权限、备份恢复等)。


18fe1ff2262a0fd6379b3ed6acd16cb3e58465df

如图2-9所示,用户可以在这个视图下查看SAP HANA系统的基本管理信息(例如,内存和CPU使用率),对系统进行配置、日志查看、安全审计和备份等操作。

0300dfdd8168ac88cb9b1951d1645d53a12efc44

在这个视角下,管理员用户可以对数据库进行运行监控和管理等操作,创建数据库Schema、表、视图、存储过程,创建用户、角色、赋予权限等操作。此外,还可以单击SQL Console按钮,打开一个SQL查询的执行界面,然后直接输入SQL语句,执行需要完成的操作。
**提示信息:
在这个管理员视角下,能做的操作就是将SAP HANA当作一个数据库来进行常规的管理操作。**
  1. SAP HANA Development视角
    这是SAP HANA XS原生应用的开发视角,也是本书中主要应用的视角。

如图2-10所示,在该视角下,用户可以使用XS系统资源库来管理项目,创建基于SAP HANA的原生应用程序。


fa639a53da1664eb6c58f9d70e40a9c045c67add
  1. SAP HANA Modeler视角
    这是SAP HANA信息建模的视角,在SAP HANA提供XS项目的开发功能之前,信息建模视角和系统管理视角是SAP HANA工作台的主要功能。

如图2-11所示,在该视角下,用户主要是创建信息模型(属性视图、分析视图、计算视图,本书中统称为信息模型),并且将开发的内容打包为Delivery Unit(简称DU,交付包),然后在SAP HANA系统中进行DU的导入/导出等。


53c8a0254f5d0e2c46f417ef89b35dc6feeb108c

**注意事项:
因为SAP HANA信息建模的功能目前已经全部被整合到XS项目中,所有新开发的信息建模的对象(属性视图、分析视图、计算视图、分析权限)都可以作为一个设计期对象放在XS项目中。从长期来看,这个视角下的功能应该会被逐渐废弃,目前处于一个过渡时期,所以还保留着这个视角。
因为很多老SAP HANA项目的HANA信息模型基本上都是直接在Content目录下开发的,目前无法直接将其迁移到一个XS项目中(迁移过去之后,视图的名字和package都将发生变化),所以,还保留着这个开发视角让客户可以维护原来在非XS项目中直接开发的视图。**

2.3.2 SAP HANA系统运行期对象
切换到“Administration”视角,当前SAP HANA系统中的所有运行期可以执行的对象都分布在以下4个文件夹中。展开一个SAP HANA系统,就能看到Catalog、Content、Security、Provisioning这4个文件夹,每个文件夹中所保存的内容都是不同的,如图2-12所示。


5fa4f9cb9917b6891bcd56cdd886af11c1195fba
  1. Catalog文件夹
    Catalog文件夹存放着当前SAP HANA系统下的所有Schema,每个Schema可以被视为一个单独数据库空间。用户可以创建新的Schema,并且可以在新Schema下创建新的数据库表、存储过程、Sequence、触发器、视图等。
  2. Security文件夹
    Security文件夹存放着当前系统的审计策略和设定信息,以及SAP HANA的所有用户、角色。管理员用户可以直接在这里创建新的用户和角色,也可以对已有的用户和角色进行权限上的调整。
  3. Provisioning文件夹
    创建一些SDA的配置,为外部的其他数据源(见图2-13)在SAP HANA中配置一个连接对象。例如,创建一个Oracle的连接,这样可以在SAP HANA中通过Virtual Table作为媒介对Oracle数据库中的表进行读/写操作。


12d9ddb4672fec8ff9b8e92897c6ea8ce91a32fb
  1. Content文件夹
    在Content文件下存放着系统自带的业务内容和用户自己开发的业务内容,主要是信息模型对象和分析权限,而且Content下面的package在展开之后,只会显示那些信息模型对象,而将其他的Web对象统统隐藏起来了。如果用户需要查看这些package下被隐藏的对象,需要切换到Repositories标签下进行查看。

如图2-14所示,即使不使用XS项目,用户也可以直接在这里创建package、HANA信息模型(属性视图、分析视图、计算视图)和分析权限对象。


f741565814366ac8e1cd035c867610a3c4385c5a

当然,直接在Content下创建对象是以前的方式,如果需要开发XS应用,那么自然而然,就需要将这些对象创建到XS项目中。
注意事项:
即使用户不使用XS项目来进行开发,也可以做其他工作,例如,直接创建Schema、数据库表、存储过程、视图、HANA信息模型、角色等。
但是,唯独Web对象是无法在这三个文件夹下进行开发的,在这种情况下SAP HANA中所开发的对象基本上是用来为外部的BI系统或者应用系统提供数据的。
在SAP HANA提供XS项目、资源库之后,所有的开发都可以迁移到XS项目中进行开发,但是原来的功能还是继续保留,主要原因如下:
过去直接在Content下开发的对象,用户继续对其进行维护,暂时没必要迁移到一个新的XS项目中。如果要迁移,原来访问这个信息模型的外部应用有可能也需要修改代码(因为对象所在的package路径发生变化,那么激活后的列视图的名称也会带上新的命名空间的路径)。
在项目上线后,SAP HANA系统的管理员还会创建额外的数据库用户、新角色,供技术支持人员来使用。
2.3.3 常用的三个按钮
在图2-14中,有三个按钮,这三个按钮是经常使用的,这三个按钮(从左到右的顺序)的功能如下。
System Monitoring():打开当前SAP HANA工作台中所有连接上的SAP HANA系统基本监控信息界面。
Administration():显示当前SAP HANA系统的信息界面,例如,CPU利用率、内存和磁盘使用占比等监控信息。
SQL Console():打开一个新的SQL命令操作界面。用户可以在SQL Console中输入各种SQL命令对SAP HANA系统进行操作。在后面的很多章节中,笔者只要提及打开一个SQL Console,就是这个界面。如图2-15所示,界面上的TR1(SYSTEM)意味着当前的这个SQL Console是用SYSTEM用户来连接到TR1这个系统的。

8f4bd9cdf459c9324b429b80f74074d58a8a3eaa

用户可以输入SQLScript语句,然后单击按钮或者按F8键执行该SQL代码,最后,在Result选项卡中会出现这个SQL操作的结果,并且在下面的log区域会返回SAP HANA执行该SQL代码所花费的时间,以及处理是否成功的提示。如果出现错误(如权限不够、语法不对),提示信息也会出现在log区域。
提示信息:
在SAP HANA工作台中,可能会使用多个不同的用户连接同一个SAP HANA系统。如果要用不同的用户去执行SQL Console界面中的SQL语句,那么只需要单击按钮,就可以切换到其他的用户上。
2.3.4 创建表和上传数据
  1. HANA Schema
    用户可以直接在SQL Console界面中输入以下SQL代码,从而创建一个名为TEST的Schema对象。如果不指定所有者,创建的Schema的所有者就是当前执行这个SQL的用户。

语法如下:
CREATE SCHEMA [OWNED BY ]
例子如下:
CREATE SCHEMA TEST OWNED BY SYSTEM
在创建好TEST之后,启动SAP HANA工作台,使用SYSTEM用户登录到SAP HANA系统,然后展开HANA系统,打开Catalog文件夹,TEST就出现在用户可以访问的列表中了。除了上述这种命令行方式之外,也可以通过可视化向导创建新用户(参考2.4.1节)的方式来创建一个Schema对象。
在SAP HANA工作台中展开Security文件夹,右击,创建一个新用户,在最后激活这个用户时,系统会创建一个和用户同名的Schema。该用户就是这个同名Schema的拥有者。可以对这个Schema进行任何操作,对这个Schema下的内容进行管理。
如图2-16所示,假如使用SYSTEM登录到系统,然后创建DEMO、DEMO_2、HANA_TPCH三个新用户,系统就会自动在Catalog文件下创建出3个同名的Schema对象。


057a94f84367fa7324b9b92658bfeb747b9ffd04

展开Schema对象,用户可以在其中创建各种数据对象,例如,列视图、数据库视图、索引、表类型、存储过程、数据库表、触发器、序列对象等。除了用户自己创建的新Schema以外,系统也会默认自带一些Schema。表2-2对这些系统默认的Schema进行了简要介绍。
表2-2 系统默认自带的一些Schema
系统Schema 说  明
_SYS_BI 用户在SAP HANA中创建的信息模型的元信息(例如,多少维度、多少指标,以及虚拟信息立方体的信息)都被保存在这个Schema中的数据库表中,例如,所有分析视图和计算视图的元信息都保存在BIMC_ALL_CUBES表中
_SYS_BIC 在用户创建的信息模型、决策表被激活之后,将生成相应的Column View(列视图),这些列视图被保存在这个Schema下
_SYS_REPO 用户新开发的信息模型、XS应用、开发包、发布包等对象都保存在这个Schema中,包括其不断更新、激活的版本信息。也可以理解成在进行应用开发时的资源库
_SYS_SECURITY 保存着当前SAP HANA系统的密码、黑名单等
_SYS_STATISTICS 该Schema中主要用于Statistics Server保存系统运行状态(例如,有多少新创建的数据库表、占用多少空间、CPU运行负载、硬件和持久层的实时状态信息),以及监控系统所用的数据库表
_SYS_XS 保存着用户开发的XS应用的运行期配置、访问统计等信息

e05196d06ede5e64a76153966995c3c72924fb0f

注意事项:
因为前面提及了SQL Console,这意味着用户可以在SQL Console中执行SQLScript脚本,如CREATE COLUMN TABLE、CREATE SCHEMA等操作。既然可以创建对象,这就引出了一个创建出来的对象的拥有者的问题,因此,这里做一些补充说明。
  • 所有通过SQL Console创建的数据库对象,其拥有者是当前执行这个SQL命令的用户。如果其他的用户希望访问这个数据库对象,只能让这个对象的拥有者赋予其操作的权限,否则,即使是SYSTEM也无法访问。
  • 所有在XS项目中创建数据库对象的定义,激活后产生的数据库对象的拥有者是
    _SYS_REPO这个系统用户。
  1. HANA Table
    前面我们使用SYSTEM账户登录了HANA系统,并且创建了DEMO用户,及其同名的Schema,接下来,就可以在Schema中创建数据库表了。

(1)使用图形界面
在SAP HANA工作台中,找到可以使用的Schema对象,在该Schema对象上右击,在弹出的快捷菜单中选择“New Table”命令,如图2-17所示。


4cfb028ceec39e15ab6ea7f007a073d62da1dfe4

接下来,会在右边面板中出现图2-18所示的界面。用户可以在这个数据库表的定义面板中实现以下功能:
  • 定义新创建的数据库表的名称。
  • 定义数据表的存储类型,即是行存储还是列存储。
  • 定义数据库表所包含的字段及其SQL数据类型。
  • 定义额外的索引对象。


2c44d8c340e89ae2f84da5babd147d5defd3db3d

表2-3列出了在SAP HANA中可以使用的SQL数据类型,在创建数据库表时可以参考进行引用。

922f2d854823dfbc988835561c5b52b6fc9b84bf

(2)使用SQL命令行
直接在SQL Console中输入创建数据库表的命令,就可以得到和上一种方法相同的结果。
语法如下:
CREATE [] TABLE ...
举例如下:
CREATE COLUMN TABLE M_CUSTOMER_INFO (
CUSTOMER_ID VARCHAR(8) PRIMARY KEY,
F_NAME VARCHAR(16),
L_NAME VARCHAR(16)
);
如果需要参考源Oracle数据库系统的表,则可以将数据库表的DDL定义信息复制出来,粘贴到SAP HANA工作台的SQL Console中,稍加调整就可以执行。
**提示信息:
如果Oracle数据库中有大量表需要迁移到SAP HANA中,可以使用SAP Data Services或者DS Workbench工具,前提是设定好目标表的数据类型(可以和Oracle系统的中源表类型不一致)。在运行该ETL作业时,Data Services会自动在SAP HANA中创建相同SQL数据类型的数据库表。**
  1. 导入数据
    SAP HANA工作台中提供了Import功能,使用Import向导可以将离线文件导入已有的数据库表中。下面将演示如何使用Import向导从本地计算机将离线CSV文件录入SAP HANA系统的某个数据库表中。

具体步骤如下:首先在SAP HANA工作台中选择“File→Import”命令,打开如图2-19所示的界面,此时选择“Data from Local File”选项,然后单击“Next”按钮,进入下一步。


a550cdc18323aafeb56829fb0790cb3461a5ec02

在“Target System”向导界面中选择一个目标系统,以及以哪个用户来执行此次Import操作。
如图2-20所示,本次选择了“TR2(SYSTEM)”作为目标系统(注:TR2是HANA系统,表示以SYSTEM为登录用户来执行这个操作),将数据导入TR2这个SAP HANA系统,Import数据的操作则使用SYSTEM这个账户来执行。

234233ac5e5b33d05d9ee19caa0c7f6c197cb396

单击“Next”按钮,进入下一步,并且在图2-21所示的界面中设置以下参数。
Surce File:具体的CSV数据文件。
Field Delimiter:离线文件的数据分隔符。
Header Row:离线文件是否有头描述行。
Import all data:从文件的第几行数据截止到第几行数据。
Target Table:是将数据加载到现有的某个Schema中的数据库表,还是根据本地CSV文件的数据类型来新创建一个数据库表。

a0130dbb843f7eed851697a9fbdcf88cb1d81349

设置好上述信息后,单击“Next”按钮,进入下一步。
在图2-22所示的界面中,SAP HANA工作台提取了一些“data.csv”文件中的数据,并显示在该界面左边的Source Filed区域,同时将其命名为COLUMN_0、COLUMN_1、COLUMN_2、COLUMN_3。
在图2-21所示界面右边的Target Table区域,将目标数据库表中的所有字段和类型信息显示出来,供用户建立映射关系时使用。
最后,用户需要单击按钮,建立离线数据文件列和目标数据库表列的一个映射关系,完成后的效果如图2-22所示。

2a2eb1c1732151c3bff648363e0590114d02d545

最后,单击“Finish”按钮完成整个过程。
在Import过程执行完成之后,右击目标数据库表,在弹出的快捷菜单中选择“Open Data Preview”命令,就可以显示出当前这个数据库表中所有数据记录,如图2-23所示。
到这里为止,关于使用SAP HANA工作台提供Import向导功能的介绍结束了。

8d5fe45f4cbefa2978025fac9c15313e0c302a11

提示信息:
在用户导入少量数据的情况下(例如,几十万条数据记录),使用SAP HANA 工作台的Import向导工具较为快速。
如果用户需要导入的离线数据量较大(例如,离线数据文件超过几千万条记录或者容量有好几个GB),而当前环境中又没有ETL软件可以使用,则可以考虑在服务器端使用Import命令来进行导入,其基本的操作方式如下。
将离线文件复制到HANA系统所在的Linux系统中的某个目录下,在SAP HANA工作台中打开SQL Console,然后执行如下命令:
IMPORT FROM CSV FILE '/LINUX目录/离线数据文件名.csv' 
INTO "目标Schema"."目标数据库表"
WITH 
RECORD DELIMITED BY '\n'         
FIELD DELIMITED BY ','
THREADS 20        
BATCH 5000;

使用Import命令可以将较大的离线数据文件导入到SAP HANA中,而且不需要任何ETL软件环境。关于Import命令更为详细的参数介绍,可以参考SAP HANA SQL Reference Manual文档→SQL Statement→Data Import Export Statements→IMPORT FROM部分。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接