65.9K
CodeProject 正在变化。 阅读更多。
Home

帮助 Thomas 入门 SAP HANA

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2019年11月15日

CPOL
viewsIcon

17208

利用 SAP HANA,在其他开发者的帮助下,通过文本分析、图和地理空间功能,帮助 Thomas 入门。

您将学到

  • 如何在 SAP Cloud Platform 的试用账户中启动您自己的免费 SAP HANA 实例
  • 如何利用 Web IDE 使用 SAP HANA 中的高级分析功能,包括 JSON 文档存储、地理空间、图和语言文本搜索功能

详细说明

准备好探索 SAP HANA 了吗?作为一个有趣的练习,您可以先帮助我们虚构的开发者 Thomas,与社区中的其他开发者一起在 SAP HANA 上创建他自己的数据库模式,以在数据库中使用文本、图和地理空间处理。

引言

SAP HANA 是一个完整的数据库和应用程序开发平台。它允许您使用高级数据处理功能——文本、空间、预测等——从所有类型的数据中提取见解。

通过将内存存储与列存储相结合,数据操作比传统的基于磁盘存储的数据库执行得更快。SAP HANA 也是分析型事务处理 (translytical) 的,这意味着开发人员可以在同一个结构上实时执行事务处理和分析操作,而无需创建额外的数据副本,例如物化视图。

本教程基于您在 SAP Cloud Platform 的免费试用账户中获得的 SAP HANA 实例。

如果您不想使用此方法,可以查看 下载或安装 SAP HANA express edition 及其相应教程的其他可用选项

我们如何帮助 Thomas?

与大多数开发人员一样,Thomas 希望紧跟最新的技术。他的第一步是开始学习免费教程,就像本教程一样。第二步是与社区中的其他开发人员和专家联系,以分享知识并共同学习。

来自世界各地的开发人员每天都在联系以交流信息。我们将通过文本分析他们的社区意见,来了解他们是否也对 SAP HANA 及相关主题感兴趣。

得益于 SAP HANA 中的多个引擎,我们还将结合文本分析和图算法,来了解社区成员之间的联系。

最后,我们将利用 SAP HANA 中的地理空间功能,来查找距离 Thomas 在慕尼黑的所在地更近的开发人员。

步骤 1:登录社区

本教程使用验证来跟踪完成情况,并确保您在完成重要步骤后一切就绪。

通过点击右上角的 person 图标 **登录或注册**。如果您是首次注册,您只需要一个电子邮件地址或社交媒体账户。

使用您的电子邮件地址或社交媒体账户。

步骤 2:注册 SAP Cloud Platform 试用账户

导航到 SAP Cloud Platform 的试用环境。

按照步骤登录或注册账户。如果您需要详细步骤,可以 按照此教程

步骤 3:配置您的试用账户

如果您尚未完成,系统将提示您使用电话号码验证您的账户。完成验证。

完成验证后,再次点击 **登录**,然后选择 **US East (VA)** 和 **Create Account**。

是否已有其他数据中心的账户?

要将您的试用权限转移到 US East (VA) 中的新子账户,请参阅 此博文中的说明

一旦预配完成,点击 **Continue**。

在主登录页面上,再次点击 **Launch SAP Web IDE**。

步骤 4:配置 SAP Web IDE

SAP Web IDE Full stack 打开后,访问 Preferences。

点击 **Extensions** 并启用 **SAP HANA Database Development Tools**

点击 **Save**。出现提示时,**Refresh**。

SAP Web IDE 刷新后,点击 Preferences 中的 **Cloud Foundry**。

选择 US10 作为 API Endpoint。

在提示时输入试用账户凭证,然后 **Log on**。

子账户和空间将自动填充。

最后,配置 **Database Explorer**。选择 US10 区域,然后点击 **Save**。

步骤 5:克隆仓库

您现在可以将现有的 GitHub 仓库克隆到您的工作区。此仓库包含创建模式、文档存储和插入数据的工件。

右键单击 Workspace,然后选择 **Git > Clone Repository**。

输入以下 URL,然后点击 **Clone**

https://github.com/SAP-samples/hana-cf-get-started-trial/

当被问及是否忽略系统文件时,选择 **Do it later**。

步骤 6:创建数据库工件

克隆的仓库包含设计时定义的配置文件,这些文件用于通过 SAP HANA Deployment Infrastructure (HDI) 在数据库中创建工件。HDI 提供了一项服务,使您能够将数据库开发工件部署到所谓的容器中,并构建运行时数据库对象。您可以将 HANA 容器视为一个隔离区域,其中包含一个用于所有对象的单个数据库模式。

当前项目中的工件将被转换为物理数据库模式和 JSON 文档存储。

您刚刚克隆的仓库包含用于在数据库中创建工件的设计时定义。这些工件将被转换为物理模式和 JSON 文档存储。

展开克隆的文件夹,右键单击 db 文件夹。选择 **Build**。

发生了什么?

设计时定义将由 HANA Deployment Infrastructure 部署——SAP HANA 中的一个服务层。

通过 HDI,物理工件将由技术用户在相应的容器中创建和管理。您通常只会通过设计时定义将数据库工件部署到这些容器中,因为物理构建数据库工件是 HDI 的职责。

物理工件将由技术用户在容器中创建和管理,而您通常只会通过设计时定义将数据库工件部署到这些容器中。

在本练习的后面,为了学习目的,您将在数据库中直接创建更多数据库对象。但建议使用 HDI,并通过设计时工件建模来构建数据库对象,然后将其部署到 HDI 容器。

您将在控制台中看到构建日志。等到构建成功完成。

右键单击 db 模块,然后选择 **Open HDI container**。

数据库浏览器将开始加载。如果被要求添加数据库连接,请点击 **No**。

您可以看到您的容器,其中包含一个模式和一个名为 COMMUNITY 的 JSON 集合。它们是从克隆仓库中的定义生成的。

步骤 7:NoSQL 时间!将数据加载到您的文档存储中

打开 SQL 控制台。

粘贴以下语句以将新的 JSON 文档插入到您的集合中,然后运行这些语句。

注意:编辑器可能会将语句标记为错误。您可以忽略这些错误。

insert into "COMMUNITY" values({"name" : 'Sol' , "hint" :'I love using SAP HANA to develop applications', "learns_from" :'Sam', "office" :'Toronto', "tenure" :17, "geolocation" : 'Point( -79.380186 43.647944 )' });
insert into "COMMUNITY" values({"name" :'Sam', "hint" :'I like developing in different languages and SQLScript', "learns_from" :'Sol', "office" :'Walldorf', "tenure" :3, "geolocation" : 'Point( 8.636789 49.29487 )' });
insert into "COMMUNITY" values({"name" :'Jose', "hint" :'I use SAP Cloud platform to deploy cloud-native applications', "learns_from" :'Sol', "office" :'Palo Alto', "tenure" :5, "geolocation" : 'Point( -122.146603 37.398989 )' });
insert into "COMMUNITY" values({"name" :'Charlotte', "hint" :'Developing apps with SAP HANA has been a game changer. I used to need several databases, now I only need one', "learns_from" :'Sam', "office" :'Australia', "tenure" :6, "geolocation" : 'Point( 151.209092 -33.834509 )' });
insert into "COMMUNITY" values({"name" :'Maria', "hint" :'I am a coder. In my country, we say developing with SAP HANA is muito legal', "learns_from" :'Charlotte', "office" :'Sao Leopoldo', "tenure" :3, "geolocation" : 'Point( -51.148393 -29.796256 )' });
insert into "COMMUNITY" values({"name" :'Wei', "hint" :'System administrator here, excited to learn you technologies', "learns_from" :'Sam', "office" :'Beijing', "tenure" :12, "geolocation" : 'Point( 121.601862 31.20235 )' });
insert into "COMMUNITY" values({"name" :'Hiroshi', "hint" :'I developed many applications with both HANA and SQL Anywhere. I like both', "learns_from" :'Sol', "office" :'Fukuoka', "tenure" :8, "geolocation" : 'Point( 130.399091 33.592314 )' });
insert into "COMMUNITY" values({"name" :'Saanvi', "hint" :'Developing apps from bangalore to the world', "learns_from" :'Sol', "office" :'Bangalore', "tenure" :7, "geolocation" : 'Point( 77.637116 12.972402 )' });
insert into "COMMUNITY" values({"name" :'Rick', "hint" :'My team plays with databases regularly. HANA is one of the favorites', "learns_from" :'Maria', "office" :'Irving', "tenure" :11, "geolocation" : 'Point( -96.938460 32.873744 )' });
insert into "COMMUNITY" values({"name" :'Ann', "hint" :'I like meeting other fellow coders', "learns_from" :'Casey', "office" :'San Ramon', "tenure" :1, "geolocation" : 'Point( -121.961661 37.766586 )' });
insert into "COMMUNITY" values({"name" :'Hugo', "hint" :'I had never developed such cool apps before', "learns_from" :'Maria', "office" :'Monterrey', "tenure" :2, "geolocation" : 'Point( -100.353643 25.64757 )' });
insert into "COMMUNITY" values({"name" :'Sofia', "hint" :'I connected SAP Analytics Cloud to HANA', "learns_from" :'Hiroshi', "office" :'Copenhagen', "tenure" :1, "geolocation" : 'Point( 12.589387 55.710640 )' });
insert into "COMMUNITY" values({"name" :'Muhammed', "hint" :'I used to prefer Excel spreadsheets but Lumira changed that for me', "learns_from" :'Charlotte', "office" :'Ra anana', "tenure" :11, "geolocation" : 'Point( 34.882402 32.201905 )' });

您应该会收到成功消息,如下例所示

发生了什么?

文档存储允许您将与同一记录相关的所有信息存储在同一个文档中。这些文档不像典型的关系表那样具有预定义的格式或字段数量。

SAP HANA 中的文档存储没有表和行,而是有集合和文档。同一集合中的文档可能具有不同的结构和数据类型。
 
当文档之间的关系不是太重要且数据结构需要灵活时,这尤其有用。例如,用户账户的数据,其中电话号码等字段可能未输入,也可能根本不存储。在同一场景中,不需要外键和用户记录之间的关系。有关 SAP HANA 中文档存储的更多信息,请 参阅帮助文档

以下语句演示了 JSON 对象表达式在 select 语句中的用法。运行此语句以完成下面的验证

select {office : "office"} as "location"
from "COMMUNITY"
where "name"  = 'Maria';

注意:您可以在输入新语句之前清除 SQL 控制台中的语句(推荐)

步骤 8:SQL 时间!选择社区中至少有一年经验的人员

免费资源,例如本教程,是入门的好方法。社区中更有经验的人通常愿意在您的学习过程中提供帮助。对于我们的开发者 Thomas 来说,选择有经验的人意味着他可以快速上手。

您将选择经验为 2 年或以上的人员。您还需要将这些记录移动到列表中,以便执行仅在列存储中可用的高级分析。

首先创建列表

create column table "DEVS"(
  "DEVNAME" nvarchar(100) PRIMARY KEY,
  "LEARNS_FROM" nvarchar(100),
  "HINT_TEXT" text FAST PREPROCESS OFF ASYNC,
  "CITY" nvarchar(100),
  "LON_LAT" nvarchar(200)
);

请注意语句中的列表定义。

SAP HANA 默认创建列表。column 关键字是可选的,但在示例中使用它是为了提醒用户 SAP HANA 中表的本机列存储。

列表在 HINT_TEXT 字段上具有文本索引。

您应该会在 TABLES 下看到新创建的表

将数据从文档存储插入到列表中,过滤掉任职时间不足 1 年的社区成员

insert into "DEVS"
select "name", "learns_from", "hint", "office", "geolocation"
from "COMMUNITY"
where to_bigint("tenure") > 1

计算新表中已插入的记录数

select count(*) from "DEVS";

将上一个 SQL 命令的结果插入下面的框中以完成以下验证

步骤 9:使用语言文本搜索查找可以提供帮助的开发人员

SAP HANA 有许多不同的工作方式。一些开发人员对其分析功能感兴趣,一些开发人员通过系统和数据库管理使其顺利运行,还有一些开发人员将其用于创建数据驱动的应用程序。为了帮助 Thomas,您需要寻找喜欢开发应用程序的人。

您将使用语言文本搜索来查找谁说了与开发应用程序相关的内容。

select "DEVNAME", TO_NVARCHAR("HINT_TEXT") as "testimony", "LEARNS_FROM"
from "DEVS"
where contains("HINT_TEXT", 'develop', linguistic)

语言搜索会查找所有与搜索词具有相同词干(此处为 develop)的词。

注意

通过 SAP HANA 中的文本引擎,还可以应用其他功能,例如模糊搜索、文本挖掘和情感分析。

要了解有关语言搜索和其他类型搜索的更多信息,请访问 官方文档

您将使用这些结果创建一个表来显示谁向谁学习。此表将用于创建图工作区。使用以下 SQL 语句创建它

create table "LEARNING_RELATION"(
	"ID" int NOT NULL UNIQUE GENERATED ALWAYS AS IDENTITY (START WITH 10 INCREMENT BY 1),
	"SOURCE" nvarchar(100) NOT NULL,
	"TARGET" nvarchar(100) NOT NULL
);

将记录插入新表中

insert into "LEARNING_RELATION"
("SOURCE", "TARGET")
select "LEARNS_FROM", "DEVNAME"
from "DEVS"

插入新表中的记录数是多少?

步骤 10:使用图查找谁向谁学习

现在您已经有了一个包含学习关系和社区中专家开发人员的表,您可以找出这些人之间是如何相互关联的。表示人际网络的一种方法是使用图数据库。

在 SAP HANA 中,图由顶点(在此示例中为开发人员)和边(它们之间的连接,取自 LEARNS_FROM 字段)表示。

SAP HANA 参考如何应用于文本分析 中查找有关图数据模型的更多信息。

创建一个图工作区,以表和列的形式定义图

create graph workspace "HANA_GRAPH"
  edge table "LEARNING_RELATION"
    source column "SOURCE"
    target column "TARGET"
    key column "ID"
  vertex table "DEVS"
    key column "DEVNAME";

您可以通过导航到 **Graph Workspaces**,选择您刚刚创建的图,然后选择 **View Graph** 来预览图。

有一些已知的算法可以应用于图。其中之一是强连通分量。

点击 **Algorithm**,选择 **Strongly Connected**,然后点击 **Apply**。

在有向图中双向连接的名称以相同的颜色标记

步骤 11:查找最近的地理位置

到目前为止,您已经找到了具有两年或两年以上经验、并且对开发应用程序感兴趣的联系最紧密的开发人员。现在找出离 Thomas 最近的人,以便他们可以在下次社区活动中与他会面。

Thomas 位于德国慕尼黑。该城市的大致地理位置是

经度 11.57548
纬度 48.13702

使用以下查询计算到 Thomas 位置的距离

select "DEVNAME",
round(st_geomFromText( 'Point( 11.57548 48.13702 )', 4326).st_distance(st_geomFromtext( "LON_LAT", 4326), 'kilometer'),0) as "DISTANCE_KM"
from "DEVS"
where contains("HINT_TEXT", 'develop', linguistic)
order by "DISTANCE_KM"

步骤 12:谁能帮助我入门?

恭喜您帮助 Thomas 找到并与其他开发人员协作!

如果您准备好无限制地探索更多功能,可以下载 SAP HANA express edition。SAP HANA express edition 最多可免费使用 32 GB RAM,甚至可用于生产用途。您可以选择

以下是如何开始使用 SAP HANA 中的任何面向开发者的主题以及更多内容

  • SAP Developer Center:您可以在 developers.sap.com 上找到大量免费下载和教程,以帮助您处理各种主题。您可以学习 机器学习 等新主题,深入研究 地理空间,或者切换到完整的 SAP HANA express edition 镜像,使用 XS Advanced 创建具有微服务的云原生应用程序
  • 社区:同行开发人员在 博客文章 中分享他们的经验和建议,许多人愿意在 问答环节 回答您的问题。
  • 社区活动:您还可以查看离您最近的 活动,以便与其他开发人员见面。
© . All rights reserved.