2017-05-11 145 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