水壶中的RDB到JSON?

Posted

技术标签:

【中文标题】水壶中的RDB到JSON?【英文标题】:RDB to JSON in Kettle? 【发布时间】:2013-04-29 17:30:30 【问题描述】:

我目前正试图通过尝试将我目前通过 Python 执行的操作移植到 Kettle 作业中,从而了解 Kettle 4.4 如何处理数据转换。

我有一个包含四个表的关系数据库,我需要将它们导入到我的数据管道中。这是模型的简化版本...

小部件

+-----------+-------------+----------------+
| WIDGET_ID |    Name     |     Notes      |
+-----------+-------------+----------------+
|         1 | Gizmo       | Red paint job  |
|         2 | Large Gizmo | Blue paint job |
+-----------+-------------+----------------+

客户

+-----------+------------+----------------------------------+
| WIDGET_ID |    Name    |         Mailing_Address          |
+-----------+------------+----------------------------------+
|         1 | Acme, Inc. | 123 Fake Street, Springfield, IL |
|         2 | Fake Corp. | 555 Main Street, Small Town, IN  |
|         2 | Acme, Inc. | 123 Fake Street, Springfield, IL |
+-----------+------------+----------------------------------+

库存

+-----------+--------+------------+
| WIDGET_ID | Amount |    Date    |
+-----------+--------+------------+
|         2 |  11000 | 2012-01-15 |
|         1 |  13000 | 2012-02-05 |
|         1 |    900 | 2013-01-01 |
+-----------+--------+------------+

我希望能够采用上述方法并生成如下 JSON 输出:


    "id": 1,
    "Name": "Gizmo",
    "Notes": "Red Paint Job",
    "Customers": [
        
            "Name": "Acme, Inc.",
            "Address": "123 Fake Street..."
        
    ],
    "Inventory": [
        
            "Amount": 13000,
            "Date": "2012-02-05"
        ,
        
            "Amount": 900,
            "Date": "2013-01-01"
        
    ]


我尝试使用 Kettle 的连接、JS 转换和 JSON 输出都不是很成功,而且我发现文档非常缺乏。任何人都可以帮助我,或指出正确的方向吗?

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 3 个(总共 6 个)水壶步骤进行此转换:

1) 为每个表格添加 3 个表格输入步骤

2) 添加下一个 Multiway Merge Join 步骤,将 3 表输入步骤箭头分组到此, 选择widget_id作为key field,选择inner join type。

3) 在多路连接步骤的输出流中添加 1 个 json 输出步骤

要制作最终的 json 格式,您必须使用 JSONPath 表示法:

http://goessner.net/articles/JsonPath/

希望对你有帮助。

(如果您是水壶新手,我建议您查看水壶勺中包含的示例文件夹)

【讨论】:

感谢您的回复!我是否必须在 Kettle 之外进行 JsonPath 转换,还是我可以在设计器中完成? 单击 json 输出步骤,您可以在此处使用 jsonpath 表示法编辑您的字段。 (无需走出勺子设计模式)

以上是关于水壶中的RDB到JSON?的主要内容,如果未能解决你的问题,请参考以下文章

转换水壶中的错误

水壶 - JSON 输入在无法解析的日期失败

错误水壶 - Json 输入和 Javascript 解析返回 [object Object]

如何存储一行中的变量以在 Pentaho 水壶中的后续行中使用?

谈IO中的阻塞和非阻塞,同步和异步及三种IO模型

redis -- RDB