1

ユーザーがXLSスプレッドシートをアップロードして、データウェアハウス(DW)のテーブルにデータを入力できるようにするための最適なソリューションを探しています。

私たちのユーザーはヘビービジネスオブジェクト(BO)ユーザーであり、BOを使用するとXLSにエクスポートできます。DWにロードする必要のあるスプレッドシートにデータがある場合、XLSのデータをDWのデータベースにアップロードするプロセスが必要です。その結果、私たちが本当に必要としているのはプログラムによる自動フィードであると考えると、これらの「インターフェース」の多くができあがります。システム間フィードのデータソースとしてExcelを使用することは、私の直感では、私には悪い考えのように思えます。

質問1:あなたが同意するかどうか、そしてその理由または理由を確認したいと思います。

OK、その流れに逆らって泳ぐことはないので、XLSのアップロードが私たちのためにここにあることを前提としています。今、私は最良の解決策を見つける必要があります。最初に、私たちが今何をしているのかを説明し、次にそれについて私が嫌いなことを説明します。

Webページを介して、定義された列のセットを持つ空のXLSファイル(行なし)を提供します。各ファイルは、異なるターゲット宛先テーブルを更新するために使用することを目的としています。各スプレッドシートには「アップロード」ボタンがあります。[アップロード]ボタンを押すと、スプレッドシートのマクロがファイルの内容をCSVにシリアル化し、データをサーバーフォルダーにFTPで送信します。スケジューラーは、CSVファイルを入力として使用するInformatica ETLジョブを定期的に起動し、データをカスタムXLS固有のステージングテーブルにロードし、レコードが編集を通過した場合は、適切なターゲットテーブルにロードします。発生したエラーはすべてエラーテーブルに記録されます。アップロードされたXLSファイルごとに、データはファイルに固有の個別のステージングおよびエラーテーブルになります。

私が私たちのプロセスについて含めたくないもののいくつかは次のとおりです。

1)XLSのマクロコードが公開されすぎており、たとえばパスワードが含まれているため、改ざんされる可能性があり、ユーザーが最新のXLSテンプレートを使用していることを確認する際に問題が発生します。2)ビジネスルールの編集はETLプログラムに配置されますが、エラーをできるだけ早くキャッ​​チしたいので、つまりスプレッドシートで、編集もマクロコードに追加されます。これにより、ビジネス編集が重複します。これらのルールを1か所にまとめて集中管理したいと思います。私見ですが、XLSにマクロコードを入れると、ストアドプロシージャの呼び出し(一部はあります)やWebサービスの呼び出し(XLSマクロから.NET Webサービスの呼び出しはまだ試みていません)でさえ、メンテナンスの問題が発生すると思います。)3)すべてのXLSファイルアップロードテンプレートには、ステージングテーブルとエラーテーブルの個別のセット、および発生したエラーを報告するためのカスタム画面を備えた独自のプロセスがあります。より一般化された再利用可能なソリューションが必要なようです。

BOからXLSにデータをエクスポートすることが多いほか、ユーザーはExcelも気に入っています。これは、Webインターフェイスを介して個々のレコードを編集するよりも、多数のレコードを編集する方が簡単で、扱いにくいためです。

これが私が考えている一般的な方向性です。

まず、スプレッドシートに埋め込みマクロを含めずに、編集を使用してExcelを簡単に編集できるようにする必要があります。私はExcelと互換性のあるFarpointのグリッドを試しました...

http://www.fpoint.com/netproducts/spreadweb/tour/excel.aspx

...そして、ユーザーが自分のPCにあるXLSファイルを開いてブラウザーで開き、サーバー側から読み取ったデータに簡単にアクセスできるようにするのは非常に簡単であることがわかりました。 NETWebコード。Excelはブラウザでローカルに実行されていませんが、Excelの機能は再現されています。おそらく、クライアント側のスクリプトを多数使用することで、自分自身を複製するのは非常に困難だと思います。ローカルのスプレッドシートからWebのスプレッドシートにカットアンドペーストすることもできます。これは素晴らしいことのように聞こえますが、最大の問題はコストです。私たちの会社は死にかけているので、新しいソフトウェアを購入することはできません。

次に、すべてのスプレッドシートのアップロード処理に共通するコンポーネントを特定し、一般的な処理コードを考え出します。たとえば、各スプレッドシートと、列名とデータ型の定義を含む各スプレッドシートの形式を、おそらくハードコーディングではなく宛先列の観点から定義するテーブルを想像します。このテーブルテンプレート定義に基づいて、このテーブル定義からダウンロードするXLSテンプレートを生成できます。入力したデータがテーブル定義と一致することを確認するために、簡単な一般的な編集を実行することもできます。また、1つの一般的なWebページを使用して、データを表示し、レポートデータ型の不一致エラーを許可し、ユーザーがそれらを修正できるようにすることができます。また、送信番号、行番号、名前、値の2つの列を持つテーブルを使用して、データを「ステージング」テーブルに格納するための共通テーブルを定義します。多分。これ以上の「すべてをカスタマイズする」ことが目標ではありません。

次に、ビジネスルールをどこに置くかを決める必要があります。私の部門の管理者は、データのすべてのロードはInformatica ETLバッチプロセスによって行われる必要があるため、ルール/編集は「Informatica」に属すると固く信じています。私はInformaticaツールの経験がまったくなく、.NETの人です。したがって、これらのルールがどのように実装されているかはわかりませんが、特定のレコードを検証するために.NET Webページで使用できるという意味で、再利用できないと思われます。場合によっては、ユーザーが一括アップロードを実行していないときに、特定のレコードを編集する機能があり、ETL一括挿入プロセスによって適用されたのと同じ編集を個々の更新に適用したいことがあります。 Webページを介して単一のレコードを試行します。単一のレコードの更新を実行するWebページから呼び出すことも、一括アップロードのレコードごとに数千回呼び出すこともできる単一のWebサービスまたはストアドプロシージャを作成するソリューションの場合はどうでしょうか。後者は非効率に聞こえます。

上記のことについてのあなたの考えは大歓迎です。

4

1 に答える 1

1

コストの観点から、Web上でスプレッドシート機能を再作成するために必要な作業は、Farpointまたはその他のコントロールのコストを上回ります。1時間に20ドル稼いだとしても、2週間以内に実用的な製品を完成させることができると思いますか?ETL機能をExcelに存在させる場合、メンテナンスの問題について話し合ったときに、事実がわかっていると思います。変換ルールを維持するための作業量は2倍になります。保守可能で堅牢なソリューションを作成するには、いくつかの柔軟なユーティリティが必要であることを経営陣に納得させる必要があると思います。

Farpointは良い選択です。また、Excelマクロを解釈してWebサーバー上で実行できる.NetエンジンであるSpreadsheetGearもあります。Win32コントロールがあり、Excelインターフェイス機能を備えたWinFormsソリューションを作成できます。前回チェックしたとき、製品のWebコントロールがありませんでした。大量のデータを処理するためのExcel機能を提供する優れた機能を果たします。

幸運を。あなたはすべての異なる潜在的な解決策の賛否両論をよく理解しているように見えるので、あなたは良い解決策を見つけると思います。

于 2009-06-11T10:31:22.673 に答える