„Wofür benötigen wir eigentlich noch ACCESS?“

Manchmal führe ich ja Selbstgespräche…

„Wozu brauchen wir eigentlich ACCESS noch?“ werde ich oft gefragt und frage mich das auch immer wieder selbst.

Na, zum strukturierten Speichern von Daten natürlich! Datenbank eben. Das haben wir hier im BLOG ja schon diskutiert…

Ja, aber EXCEL kann doch auch speichern und ist viel leichter zu bedienen.  

Das stimmt, aber man kann nicht so viele Zeilen speichern, es ist weniger performant, nicht organisiert und stabil, weder relational noch redundanz-arm, von Positionsunabhängigkeit und struktureller Flexibilität ganz zu schweigen! Und die Performance ist in jedem Fall noch schlechter, wenn durch das Herunterkopierern vieler SVERWEISE ineffizient gearbeitet wird!

OK, aber was ist dann mit PowerQuery? Das ist auch relational, flott, stabil. Und SVERWEISE nehme ich da auch keine!

Gerne, aber wie sieht es mit der Historisierung von Daten aus. Stichworte Zeitstempel, Monatsscheibe etc. Stellen wir uns mal vor, dass jeden Monat neu Daten hereinkommen und mit einer Art Stempel versehen werden, damit der Verlauf über die Zeit dokumentiert werden kann.

Okay, das kann ich auch mit einer EXCEL-Datei pro Monat lösen. Über Ordner Auslesen in PowerQuery lassen sich die prima untereinander setzten. Aus dem Speicherdatum generiere ich mir dann den Zeitstempel.

Ja, sicher geht das. Nur werden dann jeden Monat zu den wirklich neuen Daten auch immer die Alt-Daten eingelesen und aufbereitet, die ja schon aufbereitet waren und sich nicht mehr geändert hatten! Diese Aktualisierung kostet regelmäßig Zeit und ist redundante Arbeit.

Aber wie sieht es mit der Aufbereitung der Daten beim Import aus? Kann Access denn genauso gute Aufbereitungsschritte wie PowerQuery und auch die vielfältigen Quellen anzapfen?

Erwischt! Da hat nun wirklich EXCEL mit PowerQuery die Nase vorne.

Ende des Selbstgesprächs…

Datenaufbereitung in EXCEL bzw. PowerQuery vs. ACCESS

Die Aufbereitung „hässlicher“ Textdateien oder von CSV-Dateien mit Zwischenzeilen, mehrzeiligen Datensätzen oder Pivot-Strukturen, die de-pivotiert werden sollen… alles dann kann PowerQuery wie ich so schön sage: mit einer Hand an der Maus und der anderen an der Kaffeetasse! Also recht einfach, ohne Programmierung und Makro- oder VBA-Code .

PowerQuery für ACCESS

Daher hatte ich bei Microsoft schon den Vorschlag eingebracht, ACCESS um die Fähigkeiten von PowerQuery zu ergänzen. Auf access.USERVOICE.com hört Microsoft sehr auf die Vorschläge der User im Praxisbetrieb. Die Vorschläge können dort auch bewertet werden… Dank der starken Community der Access-Entwickler-Konferenz (AEK) und der Promotion durch den Veranstalter Karl Donaubauer wurde der Vorschlag auch zum bestbewerteten, die Gruppe dort je hatte! Die Aufmerksamkeit von Microsoft war geweckt, doch leider wurde entschieden: no current plan. Also: wird nicht implementiert. Begründung: man wolle keine Konkurrenz zu Excel aufbauen.

Ich sehe hier aber keine Konkurrenz, eher eine sinnvolle Ergänzung.

Wollte man keine Konkurrenz, dürfte Excel kein Diagramm erzeugen, sondern müsste das PowerPoint überlassen, Access sollte keine Pivots erzeugen, sondern nur Excel, das dafür aber auch keine intelligenten Tabellen haben dürfte (und keinen SVERWEIS).

Ich sehe eher, dass eine schon entwickelte Technik es ermöglichen würden, den Import – wohlgemerkt nicht die dynamische Anbindung – von Daten zu erleichtern. Diese würden dann in ACCESS gespeichert. Bei meinem Vortrag auf der AEK 2017 habe ich auch dahingehend argumentiert und große Zustimmung erhalten. Da aber bis dato keine Reaktion von Microsoft zu meinem Vorschlag in Sicht war, habe ich eine Interimslösung präsentiert: Daten nach Excel importiert via PowerQuery, dann diese Tabelle in ACCESS eingebunden, regelmäßig per VAB aktualisiert und das Ergebnis per Anfüge-Abfrage in ACCESS final gespeichert.

powerquery-in-access.png

Diese Lösung ist nunmehr die einzig machbare und ich werde sie in einem späteren Beitrag einmal detailliert darstellen.

PowerQuery oder das „alte“ Microsoft Query kommen dann natürlich wieder zum Einsatz, wenn die Daten zur Auswertung, Verdichtung, Visualisierung nach EXCEL übergeben werden.

Der Datenimport kann natürlich auch in eine andere, eventuell serverbasierte Datenbank wie SQL-Server oder AZURE-Datenbanken erfolgen, falls das aus Platz-, Performance- oder Berechtigungsgründen erforderlich ist, aber Frontend für die Steuerung und Automatisierung der Importe oder Datenerfassung bleibt bei mir stets gerne ACCESS. Nicht für die Analyse! Da kommen EXCEL und PowerBI zum Einsatz.

An dieser Stelle möchte ich nicht die enorme Flexibilität und Leistungsfähigkeit von ACCESS bei der Anwendungs- oder Frontendentwicklung diskutieren – mir geht es primär um die reine Datenaufbereitung und Speicherung von Daten, die in anderen Systemen erzeugt wurden und für Reporting- oder Analysezwecke gesammelt werden sollen.

Fazit

Gerne verwende ich PowerQuery mit Excel allein, falls das ausreicht. Bei der Anforderung nach Historisierung, bei größeren Datenmengen, bei Forderung von Redundanzfreiheit und Inkonsistenz-Vermeidung, für manuelle Datenerfassung oder auch nur beim Wunsch einer „schönen“ Benutzeroberfläche für unerfahrene Anwender greife ich stets gern auf Access zurück.

Management Summary

Wozu benötigen wir noch ACCESS?

Wenn PowerQuery & Co. ausreichen: nicht unbedingt! Falls Performance, Datenmenge und Historisierung erforderlich sind, empfehle ich eine Datenbank zur Speicherung: gerne ACCESS. Falls es noch größer und schneller werden muss: SQL-Server, AZURE & Co.

Die Connection zur Auswertung in Excel erfolgt dann gerne mittels PowerQuery oder gleich PowerBI, das auch PowerQuery enthält.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s