最近、リモート サービスからデータを取得し、ローカル モデルに合わせて変更してから保存するように、最初の "etl" フローをセットアップしました。読み終わった今、いくつかの理由でかなりグロテスクに感じます
mysource
はリモート サービスからの JSON です
myは、オリジナルに基づいて、それぞれを新しく定義された localにtransform
置き換えますrow
model
source
row
transform
また、さまざまな値を見て、追加のローカル関係を定義します
destination
次に、現在ORMのモデルになっている.save
、新しく置き換えられたものを呼び出します。rows
- 外部データソースに基づいてローカル レコードを作成するにはどうすればよいですか? 私のモデルはリモート ソースのようには見えません。
row
新しい Model オブジェクトでエントリを置き換えるのは正しいですか? - の値
row
を自分のローカル モデルに置き換える場合、後続の各アクションをtransform
その新しい行 (現在はモデル) に分割する必要があると思いますか?
全体として、私の .etl は次のようになります
pre_process do
@some = <Go To DB and fetch data>
@variables = <Setup More Information>
end
source MyRemoteSource
transform DoABunchOfWork,@some,@variables
destination CallSaveOnModels
DoABunchOfWork クラスにはprocess
、さまざまな方法でリレーションシップを操作またはセットアップするために呼び出す約 6 つのメソッドがあります。