Jupyter笔记本和SAP HANA:如何在SAP HANA中持久化数据框架

395 阅读7分钟

你好,世界!最近,我为我的工程团队的数据科学挑战工作。在这项工作中,我需要一种方法来持久化SAP HANA中的Pandas DataFrame(通常来自Jupyter Notebook)。在这篇博文中,我想与你分享如何实现这一目标。目标是使用DataFrame的 "to_sql "接口在SAP HANA中持久化一个Pandas DataFrame。在这里,我提供并演示了一个示例项目。

绪论

Jupyter Notebook或R通常是数据科学家的首选工具。它使得使用数据操作、数据探索和分享变得很方便。 SAP HANA是全球最重要企业的首选数据库。 连接这两个世界,Jupyter Notebook和SAP HANA提供了一个令人难以置信的潜力,需要被抓住。

SAP HANA

我想用我自己的话来说明一下SAP HANA是什么。SAP HANA是一个内存数据库,它提供了很多好处,特别是对于分析用例。它在一个数据库中连接了数据库的不同方面。除了关系型数据库的典型属性外,它还提供NoSQL数据库的属性,如基于列的数据库。根据使用情况,可以激活或停用特定的属性,以便从系统中获得最佳性能。

SAP%20HANA

SAP HANA是SAP应用程序的数据库。SAP S/4HANA也在后台使用SAP HANA。在SAP商业技术平台(BTP)中,SAP HANA是持久化数据的首选数据库。在CAP CDS等工具的帮助下,可以方便地进行数据建模和构建服务。 此外,像SAP数据仓库云和SAP分析云这样的产品也使用SAP HANA作为数据库。

Jupyter笔记本

Example%20of%20a%20Notebook

笔记本的例子

Jupyter笔记本与R编程语言一起,是应对数据科学挑战时的首选工具。在Jupyter Notebook中,经常使用Pandas DataFrames。Jupyter Notebook实际上只是提供了图形化的网络界面,这使得用python进行交互式编程成为可能。实际的库是Pandas、Numpy和Matplotlib。在Pandas中,有一个叫做 "DataFrame "的流行类,符合数据科学家在工作中经常出现的需求。这三个python库相互之间有很好的整合,提供了一个强大的工具。

DBeaver

我使用DBeaver作为我的数据库的图形用户接口。它可以帮助调查原始数据并运行SQL语句来生成特定的输出。DBeaver可以与phpmyadmin、MySQL Workbench或pgAdmin相媲美。

DBeaver还提供与SAP HANA的连接。连接到SAP HANA数据库,只需选择SAP HANA瓦片并输入你的证书。

例子

让我们从演示开始吧!我想通过提供一个样本来介绍这个解决方案。如果你有一个现有的SAP HANA实例,有证书,在你的电脑上有Jupyter笔记本和DBeaver,你可以克隆我的资源库,执行笔记本,做和我一样的步骤。

数据集样本

曼海姆是我所在的城市,该市在其自己的开放数据门户中提供了一些数据。这个数据集是在dl-de/by-2-0下授权的这意味着它既可以用于商业用途,也可以用于非商业用途,只要你链接到许可证文本和数据源。

我下载并使用了这个数据集的CSV源。它也包含在git资源库中。

将数据加载为数据框架

当你想加载这些数据集的时候,Jupyter笔记本的力量就变得很明显了。库 "Pandas "提供了非常好的接口来完成这个任务。 从机器可读的文件格式如XML、JSON或CSV中读取数据 是一个简单的步骤。

在这里,你可以看到第一个命令块中的依赖关系的声明。在第二个块中,CSV文件被读入一个DataFrame。在第三块中,部分数据集被输出,这样你就可以检查一切是否正确。

数据处理

现在,数据存在于DataFrame中。做一些数据探索是非常容易的。我们可以从数据中获得什么价值?Pandas DataFrames拥有与其他知名的数据科学库(如numpy和matplotlib)进行通信的接口。合并、拆分、清理、与其他数据集连接以及进行机器学习在这个步骤中,创造力是事情的极限。

在SAP HANA中坚持数据

现在是令人兴奋的部分。我不得不承认,我试验了一段时间,直到我弄清楚它是如何工作的。SAP HANA有安全要求,必须要有某些参数。这也是我分享这篇文章的真正原因。如果其他人正在处理类似的问题,你可以用这个例子来获得你的快速入门。

我的要求是使用DataFrame提供的 "to_sql "接口来持久化数据集。这样你就不用担心数据类型的问题,而且你可以更快地到达目标。

为了实现无缝集成,需要 "hdbcli "和 "sqlalchemy "库。你可以用Python软件包管理器pip来安装它们。你需要将你的HANA实例的凭证添加到相应的变量中。重要的是。不要在git仓库中推送你的凭证。 您需要端口、地址、用户和密码。在没有SSL的情况下,与HANA的连接是不工作的。这意味着必须将SSL参数与连接信息一起传递。这在本例中通过sqlalchemy库发生。

你创建一个连接,并将其传递给 "to_sql "命令。有一条来自sqlalchemy的警告信息。这可以被忽略。这就是了!在SAP HANA中持久化一个DataFrame就是这么简单。

检查持久化的数据

现在让我们用DBeaver看看,所有的东西是否被正确地持久化了。我打开相应的连接的表。

好了!我们可以确认一切正常。由此,我们可以确认一切工作正常。

接下来的步骤

当然,我在这里介绍的只是许多其他潜在用例的先决条件。为了好玩,我把上述例子中创建的表持久化到SAP数据仓库云实例的HANA实例中,并建立了一个小型数据管道。

我需要这个解决方案的用例是一个数据管道,我无法将数据源自动化到SAP数据仓库云(DWC),因为它被放在多个Excel表格中,而且数据经常变化。每次我运行Notebook,我在SAP DWC中的本地表就会被更新,这使得这成为以前本地数据集(如在Excel、CSV中)的半自动化解决方案。如果你在一个转型项目中工作,这是很有意义的。

Data%20Pipeline%20%28Graphical%20View%29%20in%20SAP%20Data%20Warehouse%20Cloud

SAP数据仓库云中的图形视图

使用笔记本,我对文件系统中的几个Excel文件进行了合并,并将它们持久化在DWC HANA表中。在DWC中,我可以使用图形视图或数据流来执行进一步的操作。

Story%20in%20SAP%20Analytics%20Cloud

SAP分析云中的故事

最后,我在这里使用现有的实时连接器在SAP分析云中可视化了Mannheims的人口数据。这展示了一个基于样本数据的数据科学用例。我不知道我是否会为此写一个单独的帖子,以了解更多细节。但现在,就这样了

结论

用Jupyter Notebook在SAP HANA上进行笔记本操作的能力是一个强大的工具,它有潜力。在数据科学的背景下,对我来说,这种潜力似乎没有得到充分的挖掘。特别是在转型项目中,这种潜力是可以被抓住的。