使用旧世界计算的WebAutomation扩展在RapidMiner中解析JSON
旧世界计算的WebAutomation扩展
定义从JSON数据中提取简单表的格式
那么它到底是如何工作的呢?例如,假设提供了JSON格式的图书数据。数据来自内部数据库,以JSON字符串的形式存储。
{"books":[{"title":"Java ist auch eine Insel", "subtitle":" einfhrung, Ausbildung, Praxis", "authors":[{"first name":"Christian", "last name":"Ullenboom"}], "language":"German", "edition":"13 "。,aktualisierte und überarbeitete Auflage", "publication date":2018, "publishing company":"Bonn Rheinwerk Verlag", "keywords":[ "Java Standard Edition 8", "Java Standard Edition 9", "Programming" ] }, { "title":"The elements of statistical learning", "subtitle":"data mining, inference, and prediction", "authors":[ { "first name":"Trevor", "last name":"Hastie" }, { "first name":"Robert", "last name":"Tibshirani" }, { "first name":"Jerome", "last name":"Friedman" } ], "language":"English", "edition":"2. ed., corr. at 5. print.", "publication date":2011, "publishing company":"NY Springer", "keywords":[ "Machine Learning", "Statistics" ] }, { "title":"Learning Spark", "subtitle":"lightning-fast data analysis", "authors":[ { "first name":"Holden", "last name":"Karau" }, { "first name":"Andy", "last name":"Konwinski" }, { "last name":"Wendell" }, { "first name":"Matei", "last name":"Zaharia" } ], "language":"English", "publication date":2015, "publishing company":"Beijing [u.a.] O'Reilly", "keywords":[ "Machine Learning", "Cluster", "Big Data" ] } ] }
查看JSON,您将看到数据中有几个关系不能用简单的表表示。例如,每本书可以有不同的作者对象。但是现在,我们只打算提取表格数据,但是扩展可以很容易地将这些关系提取为单独的关系表或使用重复条目进行非规范化。

从右边的树视图中也可以看到,扩展使用带有子流程的操作符来建模JSON的结构。Process Object操作符中有一个Array操作符,该操作符又容纳了Extract Properties和Commit Row操作符。
这些操作符一起定义了如何从JSON文件中提取数据的结构。Process Object和Process Array将告诉解析器输入对象或数组。由于JSON总是以对象或数组开头,所以最外层的操作符将不包含任何参数。但是,请注意,在这个外部操作符内部,可以有进一步的进程数组和进程对象操作符,它们将具有参数,镜像JSON结构。
让我们看看内部进程数组操作符是怎样的:

在这里,我们输入“books”属性并将其定义为一个对象数组。现在进程数组操作符内部发生的任何事情都将对内部对象作出反应。

看一下process Array的内部进程,我们看到两个操作符:Extract Properties和Commit Row。对象中找到对象时应该发生什么书一个给定JSON的数组。简而言之,这个过程定义了解析器应该提取一些属性并将它们作为属性存储在结果示例集中,然后在处理对象时完成结果示例集中的一行,这意味着我们可以从当前对象的属性中提取具有标量值(如字符串、数字或布尔值)的任何信息。一旦我们完成了这些,我们就可以提交行,这样每个对象就由结果示例集中的一行表示。
在这种情况下,对象书都有标题,字幕,和更详细的信息,如语言或出版日期.为了提取这些属性,我们在extract properties操作符中配置extract properties参数:在“property”下,我们设置属性的名称。在这个例子中有标题,副标题等等。在右边的“属性名称和类型”下面,我们可以自由地指定属性的名称及其类型。当使用定义进行解析时,结果将包含此属性,并将信息存储在其中。

请注意,需要将规范对象传递给Process object和Process Array操作符的输出。总是有一个输入和多个输出,但您至少必须提供一个输出。您可以在最外层的Process Object或Process Array操作符上获得最终规范。
使用解析器规范解析JSON数据
在下一段中,我们将看到如何使用上一段中创建的规范来实际解析JSON。我们将继续从数据库表中获取图书数据的场景。我们现在需要做的就是添加一个来自Data的Process JSON操作符,向它提供数据和解析器规范,并告诉它哪个属性包含JSON数据。

然后,解析器将接受输入规范并为每个规范生成一个数据集。

您可以对其他各种解析操作符使用相同的规范。有一个可以从文件和文件对象中解析JSON,在与RapidMiner评分代理或RapidMiner服务器的web服务连接时非常方便。您还可以使用由宏交付的JSON,它的应用程序主要作为web服务部署或web应用程序构建。最后但并非最不重要的一点是,与新操作符的集成可以与RESTful web服务交互,从而可以直接解析web服务响应,而无需额外开销。
答案
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
你可以通过邮箱联系我们(电子邮件保护)