次のデータを持つ 2 つの PostgreSQL テーブルがあります。
家:
-# select * from houses;
id | address
----+----------------
1 | 123 Main Ave.
2 | 456 Elm St.
3 | 789 County Rd.
(3 rows)
そして人々:
-# select * from people;
id | name | house_id
----+-------+----------
1 | Fred | 1
2 | Jane | 1
3 | Bob | 1
4 | Mary | 2
5 | John | 2
6 | Susan | 2
7 | Bill | 3
8 | Nancy | 3
9 | Adam | 3
(9 rows)
Spoon には、SQL を持つHouse Inputという名前の最初の2 つのテーブル入力があります。
SELECT
id
, address
FROM houses
ORDER BY id;
2 番目のテーブル入力は、次の SQL を使用してPeople Inputという名前になります。
SELECT
"name"
, house_id
FROM people
ORDER BY house_id;
のキーを持つ最初のステップとしてHouse Inputを使用し、 のキーを持つ 2 番目のステップとして People Input を使用するMerge Joinに両方のテーブル入力を入れています。id
house_id
次に、これをMongoDb 出力に入れ、データベースdemo、コレクションハウス、および Mongo ドキュメント フィールドaddress
とname
. (MongoDB が を割り当てることを期待しているため_id
)。
db.houses.find();
Mongo シェルから変換と入力を実行すると、次のようになります。
{ "_id" : ObjectId("52083706b251cc4be9813153"), "address" : "123 Main Ave.", "name" : "Fred" }
{ "_id" : ObjectId("52083706b251cc4be9813154"), "address" : "123 Main Ave.", "name" : "Jane" }
{ "_id" : ObjectId("52083706b251cc4be9813155"), "address" : "123 Main Ave.", "name" : "Bob" }
{ "_id" : ObjectId("52083706b251cc4be9813156"), "address" : "456 Elm St.", "name" : "Mary" }
{ "_id" : ObjectId("52083706b251cc4be9813157"), "address" : "456 Elm St.", "name" : "John" }
{ "_id" : ObjectId("52083706b251cc4be9813158"), "address" : "456 Elm St.", "name" : "Susan" }
{ "_id" : ObjectId("52083706b251cc4be9813159"), "address" : "789 County Rd.", "name" : "Bill" }
{ "_id" : ObjectId("52083706b251cc4be981315a"), "address" : "789 County Rd.", "name" : "Nancy" }
{ "_id" : ObjectId("52083706b251cc4be981315b"), "address" : "789 County Rd.", "name" : "Adam" }
私が取得したいのは次のようなものです:
{ "_id" : ObjectId("52083706b251cc4be9813153"), "address" : "123 Main Ave.", "people" : [
{ "_id" : ObjectId("52083706b251cc4be9813154"), "name" : "Fred"} ,
{ "_id" : ObjectId("52083706b251cc4be9813155"), "name" : "Jane" } ,
{ "_id" : ObjectId("52083706b251cc4be9813155"), "name" : "Bob" }
]
},
{ "_id" : ObjectId("52083706b251cc4be9813156"), "address" : "345 Elm St.", "people" : [
{ "_id" : ObjectId("52083706b251cc4be9813157"), "name" : "Mary"} ,
{ "_id" : ObjectId("52083706b251cc4be9813158"), "name" : "John" } ,
{ "_id" : ObjectId("52083706b251cc4be9813159"), "name" : "Susan" }
]
},
{ "_id" : ObjectId("52083706b251cc4be981315a"), "address" : "789 County Rd.", "people" : [
{ "_id" : ObjectId("52083706b251cc4be981315b"), "name" : "Mary"} ,
{ "_id" : ObjectId("52083706b251cc4be981315c"), "name" : "John" } ,
{ "_id" : ObjectId("52083706b251cc4be981315d"), "name" : "Susan" }
]
}
}
なぜ私が得ているものを手に入れているのかはわかっていますが、オンラインや例では、私が望む場所に私を連れて行くための何かを見つけることができないようです.
誰かが私を正しい方向に動かしたり、私が達成しようとしていることに近い例を指摘したり、これは Kettle が行うべきことの範囲外であることを教えてくれることを望んでいました (後者ではないことを願っています)。