水壶中的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 输入和 Javascript 解析返回 [object Object]