JSON转换为数据,并使用缺少的属性和值去支点

eduard_wagnereduard_wagner 成员职位:3.贡献我
2018年12月编辑 帮助

大家好!

毕竟我无法找出如何解决这个问题:我有一个JSON文件与其属性和值不一致,有些缺失。是这样的:

[{“高”,“日期”:1465632900:0.00199281,“低”:0.00199281,“开放”:0.00199281,“关闭”:0.00199281,“卷”:0.00078269,“quoteVolume”:0.39276167,“weightedAverage”:0.00199281},{“低”,“日期”:1465633200:0.00199281,“开放”:0.00199281,“关闭”:0.00199281,“卷”:0.00034535,“quoteVolume”:0.17329899,“weightedAverage”:0.00199281}]

正如您所看到的,第二个条目中有第二个属性“high”,它的值丢失了。如果不创建缺失的属性和值,就不可能在此之前对JSON数据进行De-Pivot处理,会出现以下错误:“系列必须具有相同的长度:不执行转换。”我尝试了“声明缺失值”,但当然这需要在纠正任何值之前的属性。

不幸的是,数据集非常大。是否有一种方法/操作员来修复这个过程?

非常感谢!

最佳答案

  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
    解决方案接受

    你好@eduard_wagner-是的,这对JSON数组来说相当棘手。:)这是你的一个变通办法:

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.6.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    <参数键=“文本”值= "[{“date": 1465632900,“引起:0.00199281,“low": 0.00199281,“open": 0.00199281,“close": 0.00199281,“volume": 0.00078269,“quoteVolume": 0.39276167,“weightedAverage": 0.00199281},{“date": 1465633200,“low": 0.00199281,“open": 0.00199281,“close": 0.00199281,“volume": 0.00034535,“quoteVolume": 0.17329899,“weightedAverage": 0.00199281}] " / >
    < /操作符>







    < /操作符>


    < /操作符>




    < /操作符>


    < /操作符>










    > < /过程
    < /操作符>
    > < /过程

    斯科特

答案

  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    你好@eduard_wagner-欢迎来到社区。所以有几种方法来解析JSON文件:1)使用“JSON到数据”操作符;2)使用“JSON到XML”操作符转换为XML,然后使用“读取XML”,3)如果你从web服务中获得JSON,你可以使用内置的JSON解析器在通过web服务操作符充实数据。这些操作符在文本处理/ Web挖掘扩展中(可通过市场访问)。

    如果您需要更多帮助,可以使用工具将您的RapidMiner进程作为XML发布到这个线程中。这让我们更容易提供帮助。

    斯科特

  • eduard_wagnereduard_wagner 成员职位:3.贡献我

    谢谢你的帮助@sgenzer。我得到了你所描述的过程,这是xml:

    创建Document -> JSON到Data -> De-Pivot -> res

    (对于这个例子,我使用简化的JSON数据集)

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.5.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    <参数键=“文本”值= "[{“date": 1465632900,“引起:0.00199281,“low": 0.00199281,“open": 0.00199281,“close": 0.00199281,“volume": 0.00078269,“quoteVolume": 0.39276167,“weightedAverage": 0.00199281},{“date": 1465633200,“low": 0.00199281,“open": 0.00199281,“close": 0.00199281,“volume": 0.00034535,“quoteVolume": 0.17329899,“weightedAverage": 0.00199281}] " / >
    < /操作符>


    <列出关键= " attribute_name " >








    < / >列表

    < /操作符>






    > < /过程
    < /操作符>
    > < /过程

    当De-pivot操作符尝试创建属性并填充值时,会发生流程错误。问题是,JSON数据集的第二个对象缺少属性/JSON键“high”及其值。

    是否有一种方法,depivot操作符跳过缺失的属性/值或插入预定义的值?我试图用“替换/声明丢失的值”操作符捕获错误,但它们不能应用,因为在提取之前未指定属性。此外,“生成属性”操作符不工作。

    希望您在xml中看到问题所在:)

    非常感谢!

    爱德华·

  • eduard_wagnereduard_wagner 成员职位:3.贡献我

    很有效,太棒了,谢谢@sgenzer!我明白了,枢轴操作符根据id属性分组,在进行枢轴旋转时,缺失的值显示为问号。

    sgenzer
  • danhleedanhlee 成员职位:2贡献我

    该XML代码放在哪里?

  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
  • danhleedanhlee 成员职位:2贡献我

    @sgenzer

    非常感谢你的信息!我现在就去看看。

    sgenzer
登录注册置评。