2017-05-11 74 views
0

我是Pentaho的新用户,我试图在Kettle步骤中解析JSON。在Pentaho中使用变量JSON字段

Steps

JSON parsing

我知道如何解析不改变所有的JSON领域,但也有一些字段,我不能确定长度,因为他们是数组。在下面的例子中,实地考察一下“palavras_chave”:

{ 
    "identificacao": "Manejo Floinga. ", 
    "historico": "A técni.", 
    "descricao": "A.sasasa ", 
    "objetivos": "Existem. ", 
    "sustentabilidade": "Co.", 
    "vantagens_desvantagens": "VANTAGENS: resi", 
    "custos": "INVESTIMENTOS e CUSTOS: a", 
    "direitos": "Tecnologia livre. ", 
    "instituicao": "Tecnologia ", 
    "assistencia_manutencao_te": " ", 
    "experiencia": "Existem cerca de ", 
    "entraves_adocao": "ENTRAção. ", 
    "condicoes_requeridas": "Aio.", 
    "fornecedores": "Sódocumentlarizada.", 
    "usuarios": "Produtecolementar. ", 
    "programa": "Eme.", 
    "avaliacao_impacto": " reidos. ", 
    "transferencia_tecnologia": "públrsos.", 
    "outros": "Até 1000 cs", 
    "visualizacao_tecnologia": "Consu", 
    "palavras_chave": [ 
     "Caaga", 
     "uso vel", 
     "padeireiros", 
     "manrestal" 
    ], 
    "referencias": "Livro '.pdf", 
    "replicabilidade": "Atéa. ", 
    "fonte": "Meiro" 
}, 

另一段代码:

{ 
    "identificacao": "Manejatinga. ", 
    "historico": "A técni.", 
    "descricao": "A.sasasa ", 
    "objetivos": "Existem. ", 
    "sustentabilidade": "Co.", 
    "vantagens_desvantagens": "VANNS: resi", 
    "custos": "INVESTUSTOS: a", 
    "direitos": "Tecnologia livre. ", 
    "instituicao": "Tecnologia ", 
    "assistencia_manutencao_te": " ", 
    "experiencia": "Existem cerca de ", 
    "entraves_adocao": "ENTRAção. ", 
    "condicoes_requeridas": "Aio.", 
    "fornecedores": "Sódocumeda.", 
    "usuarios": "Produtentar. ", 
    "programa": "Em áre.", 
    "avaliacao_impacto": " reduzidos. ", 
    "transferencia_tecnologia": "públicos diversos.", 
    "outros": "Até 1000 cs", 
    "visualizacao_tecnologia": "Cong", 
    "palavras_chave": [ 
     "teste", 
     "aaaaaaa", 
    ], 

如何可以解析输入可变长度和水壶,这方面的工作?如果我使用Python进行编程,那么我只需简单地介绍一下数组,然后按照循环内的循环进行操作。

有没有办法在这里做到这一点?这个概念错了吗?

回答

0

你可以做到以下几点:

解析的JSON输入步骤数组$.palavras_chave。它会给你一个用逗号分隔的数组元素的字段。连接步骤Split fields to rows并在逗号分隔此字段。它会在结果中为每个数组元素提供一行。我相信对您的问题会有更好的解决方案,但这是我能想到的快速解决方案。

+0

最大的问题是我无法将字段拆分为行,因为数组“palavras_chave”的大小并不一样。我可以处理可变大小的字段吗? – WagnerAlbJr

+0

我明白了你的观点。但是,当您在逗号分割字段时,它将自动为每个数组元素生成一行。如果数组中有3个元素,它将生成3行。如果你有9个元素,它会产生9行。逗号在这里是一个重要的球员。我只是在我的机器上测试过它,它工作。 – Nikhil

+0

你能看到你的水壶文件吗?我会赞赏,我没有得到我将如何使数组的值和他们的父亲之间的关系插入他们的关系在桌子上。 – WagnerAlbJr

0

我找到了答案,我正在寻找一种方法来规范化我的数据(我不知道这是前面的术语),一个来自pentaho论坛的名为marabu的成员帮助了我。 要做到这一点很简单,我们希望规范化数据,我们应该在“输出中”标记选项“Rownum”并为其指定一个名称,如下所示。 The rownum option

之后,我可以使用ROWNUM领域保持参照各JSON的每个ID,这样我可以插入正确的参考,在关系数据库管理系统。步骤在这里。 the kettle step