問題タブ [kiba-etl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
74 参照

ruby - Kiba (またはプレーン Ruby) を使用して、ETL プロセス中に CSV の行と列を転置します。

サードパーティのシステムは、保護者の教師の予約の HTML テーブルを生成します。

列の数は、予約している教師の数によって異なります。行数は、作成するスロットの数によって異なります。

最終結果は、次のような各教師のハッシュである必要があります。

各教師を行として ETL 処理するのが最も理にかなっていると思うので、今回は Numbers の行と列を入れ替えて、CSV として保存しました。

オフィスのスタッフが使用できるようにプロセス全体をできるだけシンプルにしようとしているので、Kiba (またはプレーン Ruby) で行と列の転置を行うことは可能ですか? 木場では、すべての行を処理し、教師ごとにハッシュを蓄積し、最後に各教師のハッシュを出力する必要があると思いますか?

0 投票する
1 に答える
33 参照

kiba-etl - 変換を独立したパイプラインに分割する kiba-etl パターン

Kiba は非常に小さなライブラリであり、その価値のほとんどは、小さな独立した変換のモジュラー アーキテクチャを適用することから得られると理解しています。

しかし、一連のシリアル変換のモデルは、私たちが直面している ETL の問題のほとんどに当てはまらないように思えます。この問題を説明するために、不自然な例を挙げましょう。

ソースは次の構造のハッシュを生成します

私たちが好む出力はハッシュのリストで、値は異なるかもしれませんが、いくつかのキーはソースからのものと同じかもしれません

ここで、結果の支出を計算するには、一連の変換が必要です: ConvertCurrency, MultiplyByPeopleetc. etc. そして、コストの計算も同様です: ConvertCurrencyDifferently, MultiplyByOriginalSpend.. コストの計算は、元の (変換されていない) 支出値に依存することに注意してください。

最も自然なパターンは、2 つの独立したパイプラインで支出とコストを計算し、最終的な出力をマージすることです。必要に応じてマップ縮小パターン。パイプラインを並行して実行することによってもメリットが得られます。

ただし、私の場合、実際にはパフォーマンスの問題ではありません (変換が非常に高速であるため)。問題は、Kiba が一連の一連のステップとしてすべての変換を適用するため、費用の計算が費用の計算の影響を受け、間違った結果になってしまうことです。

木場はこの問題を解決する方法を持っていますか? 私が考えられる唯一のことは、宛先名がソース名と同じでないことを確認することです。たとえば、「originSpend」や「finalSpend」などです。ただし、支出計算パイプラインが、関連するキーを渡すだけでなく、各ステップのキーの完全なセットを確実に渡してから最後にコスト キーをマージする必要があることは、依然として気になります。あるいは、2 つの独立した kiba ジョブを定義し、マスター ジョブに 2 つを呼び出して、最終的にそれらの結果をマージさせることもできますか? これに対する最も木場的な解決策は何ですか?

ETL パイプラインを複数の並列パスに分割することは、ほとんどの ETL ツールの重要な機能のようですが、kiba がサポートしていないように見えることに驚いていますか?