AltovaのMapForceを使用して、代替の「ファイル変換プロセス」(現在はSQLの混乱)のプロトタイプを作成するように依頼されました。私の入力はヘッダー付きのCSVファイルです。私の問題は、ダウンストリーム処理で使用するデータと列名の両方をキャプチャする必要があることです。
MapForceにC#メソッドをフィードさせる必要があります(2つのパラメーターを受け取るためインポートされます:fieldNameとvalue。値に簡単にアクセスできますが、マニュアル(1000ページ!)に何時間も注いだ後、アクセス方法の例が見つかりませんでした。出力としてのフィールド名。
各出力にフィールド名と値が必要な理由は、すべてのマッピング/変換がデータベースで現在どのように管理されているかと関係があります。.NETコードはこの時点でジャンプインし、必要なデータベースルックアップを実行します。
たとえば、次のファイルがある場合:
"Symbol", "Account", "Price", ...
"FOO", "10101", "1.23", ...
"BAR", "10201, "13.56", ...
そして静的メソッドstring TransformField( string fieldName, string value )、
SymbolCSVファイルのデータ出力をメソッドのvalueパラメーターにマップし、フィールド名"Symbol"をメソッドのパラメーターにマップしたいと思いfieldNameます。
いくつかの制限:
- MapForceGUIで「配線」を表示したままにする必要があります。将来的には、プログラマー以外の人がマッピングを維持する予定です。したがって、これらすべてをコードで行うことはオプションではありません。
- MapForceは、同社が選択したツールです。私たちの元のプロセスがそのような混乱である理由の一部は、元のプログラマーが彼自身のマッピング/変換ツールをロールバックしたためです(TSQLからも同様です-痛いです)。
- メソッド呼び出しへのすべての入力/出力を文字列として扱うことができます。変換は後で行われます。
- 入力としてスカラーリテラルを使用することは避けたいと思います。私はすでにファイルから列名を持っています-それぞれを再入力してメソッドにフィードしたくありません。
このツールを使用した経験のあるユーザーの数はわかりませんが、3日間いじくり回した後、多くの可能性があります。私だけがこの現在のこだわりを乗り越えることができれば、会社は彼らの現在の混乱に代わる確かな選択肢を持っていると思います。
任意/すべての提案をありがとう。