在 Pentaho 中使用可变 JSON 字段

Posted

技术标签:

【中文标题】在 Pentaho 中使用可变 JSON 字段【英文标题】:Working with variable JSON fields in Pentaho 【发布时间】:2017-05-11 12:55:17 【问题描述】:

我是 Pentaho 的新用户,我正在尝试在 Kettle 步骤中解析 JSON。

我知道如何解析所有不变的 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",  
    ],

如何解析可变长度的输入并在 Kettle 中使用它?如果我在 Python 中编程,我会简单地对数组进行交互,并在循环中使用循环执行我想要的操作。

这里有什么办法吗?概念错了吗?

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

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

【讨论】:

最大的问题是我无法将字段拆分为行,因为数组“palavras_chave”的大小始终不同。我可以处理可变大小的字段吗? 我明白你的意思。但是,当你用逗号分割字段时,它会自动为每个数组元素生成一行。如果数组中有 3 个元素,它将生成 3 行。如果您有 9 个元素,它将生成 9 行。逗号是这里的重要参与者。我刚刚在我的机器上测试了它,它可以工作。 你能看到你的kettle文件吗?我会很感激,我不知道如何使数组的值与其父亲之间的关系将它们的关系插入表中。【参考方案2】:

我找到了答案,我正在寻找一种方法来规范化我的数据(我不知道这是之前的术语),一位来自 pentaho 论坛的名为 marabu 的成员提供了帮助。 做到这一点的方法很简单,我们想要规范化数据,我们应该标记选项“Rownum in output”并给它一个如下所示的名称。 The rownum option

之后,我可以使用 rownum 字段来保留对每个 json 的每个 id 的引用,这样我可以在关系 dbms 中插入正确的引用。步骤在这里。 the kettle step

【讨论】:

以上是关于在 Pentaho 中使用可变 JSON 字段的主要内容,如果未能解决你的问题,请参考以下文章

在 Pentaho 数据集成中将字段从 String 更改为 Int

如何在 Json 文件中使用 FK/PK - Pentaho

根据用户输入在 Pentaho 报表中显示/隐藏字段

Pentaho HTTP Post 使用 JSON

使用 Pentaho 解析嵌套的 JSON

如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档