在 Pentaho 中使用变量 JSON 字段

Working with variable JSON fields in Pentaho

我是 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 中编程,我会简单地对数组进行交互,并在循环中使用循环来做我想做的事情。

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

您可以执行以下操作:

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

我找到了答案,我正在寻找一种方法来规范化我的数据(我不知道这是以前的术语),来自 pentaho 论坛的一个叫 marabu 的成员提供了帮助。 这样做的方法很简单,我们想要对数据进行归一化,我们应该标记选项 "Rownum in output" 并为其命名,如下所示。 The rownum option

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