2009-06-11 9 views
1

Ich suche die beste Lösung, um unseren Benutzern das Hochladen von XLS Tabellenkalkulation zu ermöglichen, damit sie Tabellen in unserem Data Warehouse (DW) füllen können.Excel Upload in die Datenbanktabelle

Unsere Benutzer sind schwere Benutzer von Business Objects (BO) und mit BO können Sie nach XLS exportieren. Wenn sie Daten in einer Tabelle haben, die in die DW geladen werden müssen, benötigen sie einen Prozess, um die Daten im XLS in die DW-Datenbank hochzuladen. Als Ergebnis haben wir viele dieser "Schnittstellen", wenn ich denke, dass wir einen programmatischen automatisierten Feed benötigen. Die Verwendung von Excel als Datenquelle für systemübergreifende Feeds scheint in meinem Bauch eine schlechte Idee zu sein.

Frage # 1: Ich würde gerne sehen, ob Sie einverstanden sind und warum oder warum nicht.

OK, es gibt kein Schwimmen gegen diese Flut, also nehme ich jetzt an, dass XLS-Uploads hier sind, um für uns zu bleiben. Jetzt muss ich die beste Lösung finden. Zuerst erkläre ich, was wir jetzt machen und was ich nicht mag:

Über Webseiten bieten wir leere XLS-Dateien (keine Zeilen) mit einem definierten Satz von Spalten an. Jede Datei soll verwendet werden, um eine andere Ziel-Zieltabelle zu aktualisieren. In jeder Tabelle ist ein "Upload" -Button. Wenn Sie die Schaltfläche Hochladen drücken, wird das Makro im Arbeitsblatt den Inhalt der Datei als CSV-Datei serialisieren und die Daten in den Serverordner übertragen. Ein Scheduler löst regelmäßig einen Informatica-ETL-Job ab, der die CSV-Datei als Eingabe verwendet und die Daten in eine benutzerdefinierte XLS-spezifische Staging-Tabelle und dann, wenn die Datensätze Bearbeitungen bearbeiten, in die entsprechende Zieltabelle lädt. Alle aufgetretenen Fehler werden in einer Fehlertabelle protokolliert. Für jede hochgeladene XLS-Datei landen die Daten in einer separaten Staging- und Fehlertabelle, die für die Datei spezifisch ist.

Einige der Dinge, Ich mag es nicht zu unseren Verfahren gehören, sind:

1) Der Makrocode in dem XLS zu exponiert ist, enthält Passwörter können beispielsweise manipuliert werden und es gibt Probleme sicherzustellen, dass Die Benutzer verwenden die neuesten XLS-Vorlagen. 2) Business Rule-Änderungen werden im ETL-Programm platziert, wo sie wahrscheinlich sein sollten, aber da wir die Fehler so schnell wie möglich abfangen möchten, d. H. In der Tabelle, werden auch Bearbeitungen zum Makro-Code hinzugefügt. Dies führt zu einer Duplizierung von Geschäftsänderungen. Ich will diese Regeln an einem Ort und zentral gesteuert. Ich denke, dass das Einfügen eines beliebigen Makrocodes in das XLS zu einem Wartungsproblem führt, sogar zu gespeicherten Prozeduren (von denen wir einige haben) oder zu Webdiensten (wir haben noch nicht versucht, .NET Web Services aus XLS-Makros aufzurufen).) 3) Jede Vorlage zum Hochladen von XLS-Dateien hat einen eigenen Prozess mit verschiedenen Staging- und Fehlertabellen und einen benutzerdefinierten Bildschirm für das Melden von Fehlern. Es scheint, als ob wir eine verallgemeinerte wiederverwendbare Lösung brauchen.

Neben den Daten, die oft von BO in XLS exportiert werden, bevorzugen die Benutzer auch Excel, weil es einfacher ist, eine große Anzahl von Datensätzen zu bearbeiten und weniger klobig als das Bearbeiten einzelner Datensätze über eine Webschnittstelle.

Dies ist die allgemeine Richtung, die ich denke ich:

Zuerst möchte ich die Benutzer mit der Bearbeitung die einfache Bearbeitung von Excel haben, aber ohne eingebettete Makros in der Tabelle darunter. Ich experimentierte mit Farpoint des Grid mit Excel-Kompatibilität ...

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

... und ich fand, dass es ganz einfach, ein Benutzer die Möglichkeit, eine XLS-Datei zu öffnen, zu ermöglichen, die auf dem PC befindet, und haben Es öffnet sich in einem Browser und kann einfach auf die Daten zugreifen, die vom serverseitigen .NET-Webcode gelesen werden.Excel wird nicht lokal in ihrem Browser ausgeführt, aber die Funktionalität von Excel wird reproduziert, vermutlich durch eine Menge clientseitiger Skripts, von denen ich erwarte, dass es ein echter Schmerz wäre, mich zu duplizieren. Sie können sogar aus einer lokalen Tabelle in die Tabellenkalkulation des Web einfügen. Das hört sich gut an, das größte Problem sind die Kosten. Unsere Firma ist dem Tod nahe und erlaubt uns keine neue Software zu kaufen.

Als Nächstes möchte ich die gemeinsamen Komponenten für die Verarbeitung aller Tabellen-Uploadvorgänge identifizieren und generischen Verarbeitungscode erstellen. Zum Beispiel stelle ich mir eine Tabelle vor, die jedes unserer Tabellenkalkulationsblätter und deren Format definiert, einschließlich der Spaltennamen und Datentypdefinitionen, vielleicht in Form ihrer Zielspalten anstelle der harten Codierung. Basierend auf dieser Definition der Tabellenvorlage kann ich aus dieser Tabellendefinition XLS-Vorlagen zum Herunterladen generieren. Ich kann auch einfache generische Änderungen vornehmen, um sicherzustellen, dass die eingegebenen Daten mit der Tabellendefinition übereinstimmen. Und eine gemeinsame Webseite kann verwendet werden, um die Daten zu präsentieren und Fehler des Berichtsdatentyps zuzulassen und dem Benutzer zu ermöglichen, sie zu korrigieren. Ich würde auch eine gemeinsame Tabelle für das Speichern der Daten in einer "Staging" -Tabelle definieren, unter Verwendung einer Tabelle mit zwei Spalten, Vorlage #, Zeilennummer, Name und Wert, vielleicht. Nicht mehr "custom everything" ist das Ziel.

Als nächstes muss ich entscheiden, wo die Geschäftsregeln zu setzen sind. Meine Abteilung ist fest davon überzeugt, dass das gesamte Laden von Daten von Informatica ETL-Batch-Prozessen durchgeführt werden sollte und die Regeln/Bearbeitungen daher "in Informatica" gehören. Ich habe keine Erfahrung mit Informatica Tools, ich bin eher ein .NET-Typ. Ich bin mir daher nicht sicher, wie diese Regeln implementiert werden, aber ich vermute, dass sie nicht wiederverwendbar sind, da sie von einer .NET-Webseite verwendet werden können, um einen bestimmten Datensatz zu validieren. In einigen Fällen kann der Benutzer, wenn er keinen Bulk-Upload durchführt, einen bestimmten Datensatz bearbeiten, und ich möchte, dass dieselben Bearbeitungen, die vom ETL-Masseneinfügungsprozess angewendet wurden, auf ein einzelnes Update angewendet werden Versuch, einen einzelnen Datensatz über eine Webseite zu erstellen. Wenn die Lösung zum Schreiben eines einzelnen Web-Service oder einer gespeicherten Prozedur, die von der Webseite aus aufgerufen werden kann, eine Aktualisierung eines einzelnen Datensatzes vornimmt oder tausende Male für jeden Datensatz in einem Bulk-Upload aufgerufen wird? Letzteres klingt ineffizient.

Ihre Gedanken zu etwas darüber wären sehr willkommen.

Antwort

1

Aus Kostengründen übersteigen die Anstrengungen, die Sie durchführen müssen, um Tabellenkalkulationsfunktionen im Web neu zu erstellen, die Kosten von Farpoint oder anderen Steuerelementen. Selbst wenn Sie 20 Dollar pro Stunde verdienen, denken Sie, dass Sie ein funktionierendes Produkt in weniger als 2 Wochen fertigstellen könnten? Ich denke, Sie haben die Fakten auf Ihrer Seite, wenn Sie Wartungsprobleme besprochen haben, wenn Sie ETL-Funktionalität in Excel zulassen - Sie haben doppelt so viel Arbeit, um die Transformationsregeln zu verwalten. Ich denke, Sie müssen das Management davon überzeugen, dass Sie für die Erstellung einer wartbaren, robusten Lösung einige flexible Dienstprogramme benötigen.

Farpoint ist eine gute Wahl. Es gibt auch SpreadsheetGear, das ist eine .NET-Engine, die Excel-Makros interpretiert und auf einem Webserver ausgeführt werden kann. Es hat ein Win32-Steuerelement, mit dem Sie eine WinForms-Lösung mit sehr Excel-Schnittstellenfunktionalität erstellen können. Als ich das letzte Mal überprüfte, gab es keine Webkontrolle für das Produkt. Es bietet hervorragende Möglichkeiten, Excel-Funktionen für die Verarbeitung großer Datenmengen bereitzustellen.

Viel Glück. Ich denke, Sie werden eine gute Lösung finden, da Sie ein gutes Verständnis für die Vor- und Nachteile aller möglichen Lösungen haben.

+0

Danke für die Kommentare – ChadD

Verwandte Themen