バックストーリー:
経営陣からの新しいプロジェクト: 現在の ETL 計画の 1 つを評価し、プロセスの改善の余地を探すというソフト プロジェクトを上司から与えられました。ガイダンスを求めています。
動機: Excel は現在使用されており、ファイル サイズが原因で処理中に頻繁にクラッシュします。
タスク: アナリストは毎月、15,000 行を超える最大 750 列 (すべてが一意の名前ではない) を含む大きな csv ファイルを調査ベンダーから受け取り、大きな csv ファイルを、列に基づいて分割された 7 つのワークシートを含む Excel ファイルに単純に変換します。 csv の見出し。分解方法の詳細は以下の通りです。
私の質問は、VB.NET と VS2010 または VBA を使用して複数のワークシートを含む編集された Excel ファイルに 1 つの大きな csv を変換することです。それとも、Excel を使用するのがこのプロセスを継続する最も簡単な方法でしょうか? 私は Excel の上級ユーザーですが、VBA、VB.NET、またはその他の言語でコーディングする初心者から中級者です。
詳細な質問:
私は無料またはオープン ソースのソフトウェアを使用することにオープンですが、VB.NET と Excel と Excel-VBA に最も精通しています。here にある同様のTextFieldParser コードを使用して、csv をデータテーブルにロードする単純な Windows フォーム アプリケーションを少しコーディングしてみました。列見出しをより簡単に編集して重複した列見出しを見つけるために、配列または 2 次元配列にロードすることを考えました。一意の列見出しが必要であり、すぐに Excel ファイルを作成する場合にデータテーブルを使用する必要があるかどうかわからないため、datatable オプションでは回答よりも多くの質問が残ります。CodeProject の CSVreaderを試してみましたヘッダー名が重複しているファイルでは機能しません。このようなプロセスをどの方向に処理すべきかわからないため、ライターをブロックしているように感じます。ご提供いただけるご意見をお待ちしております。この質問に明確なベストアンサーが 1 つもない場合は、申し訳ありません。よろしくお願いいたします。
Excel を使用した現在のアナリスト タスク
現在の分析計画では、アナリストが Excel で csv を開き、行 1 の上に行を挿入し、vlookup を使用して、別の単純な 2 列のルックアップ テーブルに基づいて「新しい」列名を「古い」列名に置き換えるように指示しています。ワークシート。例えば
New becomes Old
"org-name" becomes "org_name" or
"item_1_Vendor" becomes "item_1" or
"date-created_Survey" becomes "date_created"
etc...checking all sent "New" columns against the list of all possible 750 columns.
次に、最初の行の値を貼り付けてから、変更する新しい見出しを含む 2 番目の行を削除します。
次に、アナリストは「sid」と呼ばれるファイルの主キーを修正する必要があります。調査 ID フィールド (sid) には、データ ファイルの各行の番号が必要です。代わりに、sid_HCAHPS または sid_CGCAHPS フィールドの下に sid が表示されることがあります。アナリストは、「sid」フィールドの横に列を挿入し、次のように式を挿入します。たとえば、
=IF(BE2<>"",BE2,IF(RD2<>"",RD2,IF(UH2<>"",UH2,"")))
実際のセル参照は変更されますが、Excel の式の例では、
"sid"=Range("BE2")
"sid_HCAHPS"=Range("RD2")
"sid_CGCAHPS"=Range("UH2")
新しく作成された主キー列が作成され、空白なしで入力されたら、元の「sid」列を削除できます。
次のステップは、列の冗長な HCAHPS セクションがある可能性があるため (2 回目の調査が送信され、ウェーブ 2 としてコード化されて返されるため)、列を確認することです。2 番目の列セット「sid_HCAHPS」から「language」を削除します。
次は最大の変更点です。これは、この情報を 7 つのワークシートの Excel ファイルの形式でデータベース管理者に送信するシステムをセットアップしたためです。このファイルは、MS Access Query によってロードされ、各シートからテーブルが作成され、独自にロードされます。ビジネス インテリジェンス ソフトウェア。すべて完了!!