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

数据库_免费国外云主机_

小七 141 0

在本文中,我将为您提供一个逐步指导,介绍如何通过允许最终用户动态配置您的操作符,使您的自定义python操作符的配置更加灵活。因此,它们将在操作员的配置中使用占位符,然后在运行时用其中一条输入消息中提供的消息头值替换占位符。这些占位符将采用\${=}的形式,其中"varName"指定应放置在此处的输入消息属性名称,如果不存在,将采用默认值。

请注意,本指南可能需要一些SAP Data Hub Python运算符的初步经验。这就是为什么我建议大家首先看一下我的同事Jens Rannacher编写的这一系列教程:

SAP Data Hub–从基本操作符开发定制管道操作符(第1部分)SAP数据中心—开发、运行、监控和跟踪数据管道(第2部分)SAP Data Hub–开发一个带有自己Dockerfile的自定义管道操作符(第3部分)

示例目标:动态路径格式化

如果您使用过标准的"写入文件"操作符,您可能已经知道此功能。此运算符允许使用方案和消息头设置动态路径格式。在本指南中,我们将了解消息头部分。这使得最终用户可以动态地将文件写入路径,例如/my/main/path/\${current year}/\${current month}/\${filename}.csv,从而生成例如"/my/main/path/2019/10/retailer001.csv"。下面您可以看到一个关于它的动态路径格式化特性的操作员文档截图。

让我们把它放到我们的自定义Python运算符中

在本指南的末尾,您应该能够运行一个带有自定义Python运算符的图,该运算符能够用消息头替换其路径配置中的变量名"

消息生成器将生成具有随机本月和本年属性值的消息。不会提供属性文件名,因此操作员必须用默认值替换此配置变量。我们将用以下字符串"/my/main/path/\${current\u year}/\${current\u month}/\${filename=foo}.csv"配置操作符"path"配置。结果将写入输出消息,并在第二次窃听中显示,以供演示。结果应类似于此输出:

1。使用我们的消息生成器创建一个新图形

首先创建一个新图形,将"消息生成器"和"Wiretap"操作符拖放到您的图形中,物联网网关,连接它们,然后打开"消息生成器"操作符的代码编辑器。用以下代码片段替换代码:

保存图形,大数据推荐,运行图形并查看第一次窃听的输出。您应该会看到类似的输出:

2。添加自定义Python操作符

将"Python 3"和第二个"Wiretap"操作符拖放到图形中。将以下两个端口添加到自定义的python3操作符:

如上图所示连接操作符并打开"python3"操作符的代码编辑器。用以下代码段替换代码。现在请仔细看一下代码并试着理解它。基本上,这里有两个功能可以将您的配置转换为动态配置。""字符串"类型配置的"动态配置字符串",以及"对象"类型配置的"动态配置dict"(dicts)。为了用消息属性值替换占位符,我们使用regex库"re"和下面的搜索模式"${}"。

正如您在"on\u input"函数中看到的,我们基本上只需要提供配置和输入消息,结果将写入输出消息的正文。

3。添加动态路径配置

既然我们的定制python操作符能够处理动态配置,买服务器云,我们只需要将"路径"配置添加到操作符。因此,单击操作员的配置图标,并使用以下值向操作员的配置添加一个新属性:

Name:"path"(我们使用api.config.path)类型:"文本"值:"/my/main/path/\${current\u year}/\${current\u month}/\${filename=foo}.csv"

保存图形并运行它。现在它应该提供我们在第二次窃听中所期望的结果:

恭喜,您已经到达本教程的结尾。

4。(额外)动态JSON Dict配置

还记得我们上面没有使用的动态配置Dict函数吗?它基本上只是将JSON dict转换成字符串来替换变量,然后将resultString转换回resultDict。让我们通过如下方式调整自定义Python操作符的on\u输入函数来尝试:

当然,我们还需要向操作符添加新的配置"metadataObj"。只需按照"3"中提到的步骤。添加"动态路径配置",海淘客,值如下:

Name:"metadataObj"类型:"json"价值:{"year":"\${当前年份}","month":"\${当前月份}","filename":"\${filename=foo}.csv"}

第二次窃听的结果现在应该类似于此输出:

注意!:为了简单起见,我们使用该功能在这里的UI中添加了一个类型为"json"的配置。但是,此配置仍然被解释为json字符串。所以基本上我们先把它转换成JSON Dict(json.loads文件())调用动态配置dict函数,即使我们可以直接调用动态配置字符串函数。但是,如果您创建一个从python3操作符扩展而来的自己的操作符,则可以添加类型为"Object"的配置属性。这些配置将被直接解释为dict。在这里您需要使用这个函数。只要记住这一点,并享受与动态配置工作!

最终图形JSON(包括奖金):