云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

美国服务器_redis分布式存储_返利

小七 141 0

您好,

我们最近遇到了几种情况,需要从已经有API的外部系统获取信息,以便通过web服务公开数据。

通常的方法是编写脚本或使用ETL,但这些选项有一些缺点:

提供过时的数据,除非经常计划,但它会创建工作负载以刷新可能未使用的数据集难以从SAP HANA传递参数和控制

通过SAP HANA SDI中的数据联合,我们可以创建虚拟表,这意味着它们可以像常规表一样进行操作或使用,但实际上没有存储任何数据。当查询引用虚拟表时,数据由连接到源系统的代理发送。

在下面的示例中,我们将创建一个由5列组成的虚拟表,在每个查询中由来自web服务的内容填充。

SAP HANA SDI SDK提供了通过一个接口实现任何处理和格式化逻辑的能力数据库级别,使其无缝嵌入到视图、odata服务或任何HANA数据库工件中。

与往常一样,淘客大玩家,文档总是一个很好的起点,什么是物联网,以及一些以前的博客文章。

分解代码以尽可能减少添加新web服务的工作量

在浏览github上发布的适配器代码之后,它对公开的函数数量有点惊讶,这些函数允许控制适配器行为的大部分方面。我的情况需要从多个web服务收集数据,我不想每次都编写所有必需的适配器函数,因此我编写了一些抽象类来考虑某些任务:

将数据源参数暴露到SAP HANA中的数据配置UI使web服务显示为虚拟表或虚拟函数将行发送到SAP HANA还有一些小任务:初始化一个http客户机,json解析

这是一个有用的类图,适配器基类一些创建工作适配器必须实现的方法:

这两条虚线代表类继承。因此,对于每个web服务功能,有三个部分需要编写:

公共web服务器上托管文件的示例

以下是一个没有版权的数据源的示例,客户需要从SEC网站上公开的公司文件中获取一些财务信息。

有一个名为主索引的文件,定期更新。而不是编写下载、转换和导入文件的脚本,我们将使文件的内容作为数据库表提供。

内容从11行标题开始,然后用管道将值分隔:

我们将调用此webservice SED Edgar Master

我们在SECEdgarMasterService中实现抽象类WebserviceConfig。在这种情况下,没有输入参数,服务器云服务,我们只是将webservice定义为一个由5列组成的虚拟表。

我们在SECEdgarMasterRequest中实现了抽象类webservicequesthandler。它包括打开URL并将结果作为CloseableHttpResponse返回

我们在SECEdgarMasterResponse中实现了抽象类WebserviceResponseHandler。它逐行使用http请求的输出。跳过头之后,它将构建一个记录列表并返回它。然后WebserviceAdapter类将处理将记录批量发送到SAP HANA的操作。

内部类SecedGamasterRecord必须实现方法"appendTo",该方法被调用以将记录发送到SAP HANA。

结果

这就是编码!然后构建适配器,大数据行业分析,将jar作为自定义适配器部署在现有的数据供应代理上,并在saphana中注册适配器。当浏览与适配器相关联的远程源时,我们可以看到4个作为虚拟表公开的Web服务,包括我们的示例表。

然后我们创建一个指向SEC\u EDGAR\u MASTER表的虚拟表,我们可以开始探索表的内容。

获取虚拟表的第一行需要3秒钟,然后获取所有227000行都需要3.2秒。

结论

将底层方法抽象为几个类后,为web服务开发数据库接口相当容易。我们只使用SAP HANA和一个数据供应代理来呈现数据,没有ETL,什么叫物联网,没有调度和平面文件导入。

在将来,我可能会发布另一个适配器,一个使用输入参数的更高级的适配器。

所有源文件都在github上