Technologie

Unsere Analysen sind maßgeschneiderte Einzelstücke, perfekt angepasst auf Ihre Fragen. Passend dazu haben wir unsere Analyse-Technologie speziell für diese Anwendung entwickelt. Wichtigster Leitfaden ist dabei ein hoher Anspruch an die Qualität unserer Produkte.

Unsere Analyse-Architektur

Datenintegration und Modellierung

Wir importieren Daten aus einer Vielzahl von öffentlich verfügbaren Quellen, verbinden sie miteinander und transferieren sie in ein einheitliches Datenmodell. Dabei führen wir auch ausführliche Konsistenzprüfungen durch. Auf die Daten wenden wir komplexe numerische Modelle an, unter anderem das Vebeto Patientenmodell und die Simulation zur Krankenhausplanung.

Analyse-Frontend

Zur Abfrage der Daten und zur Visualisierung benutzen wir eine Web-basierte Anwendung. Diese ist nur innerhalb von Vebeto verfügbar. Mit dieser Anwendung führen unsere Mitarbeiter die von Ihnen beauftragten Analysen durch.

Erstellung Ihres Reports

Die Ergebnisse der Analyse legen wir in einem Report nieder. Wir leiten Sie darin durch die Analyse, stellen die Daten visuell dar und erläutern unsere Interpretation. Den Report erhalten Sie als PDF-Datei und als hochwertigen Druck in Buchform.

Automatisierung sichert Qualität

Wenn Sie bei uns eine Analyse bestellen, verfassen wir diese speziell für Sie und folgen dabei Ihren Fragen und Anforderungen. Dabei lassen wir uns aber vom Computer unterstützen - und zwar bei den Aufgaben, die ein Computer besser bewältigen kann als wir.

Wir bearbeiten Daten nicht manuell. Die manuelle Verarbeitung von Daten, z.B. mit einem Tabellenkalkulationsprogramm, ist fehleranfällig und im Zweifelsfall nicht nachzuverfolgen. Jeder Schritt unserer Datenverarbeitung wird deshalb in Code durchgeführt, immer nachvollziehbar und reproduzierbar.

Wir tippen keine Zahlen ab. Wenn Menschen Zahlen aus einer Datenquelle in einen Report übertragen, machen sie dabei zwangsläufig Tippfehler. Die Zahlen in unseren Reports stammen aus Datenbankabfragen und werden vom Computer direkt in den Report eingefügt.

Wir automatisieren Prozesse. Je weniger manuelle Schritte die Datenintegration, Datenverarbeitung, Analyse und Report-Erstellung beinhaltet, desto weniger Fehler können sich einschleichen. Um Fehler bei repetitiven Vorgängen zu minimieren und die Verarbeitung nachvollziehbar zu machen, verfolgen wir eine Zero-Click-Strategie.

Unsere Entwicklungsstandards

Volle Versionskontrolle

Die komplette Datenverarbeitung, Algorithmik und Visualisierung steht unter Versionskontrolle per git. Das schließt auch alle Reports und Analysen mit ein, die wir für unsere Kunden durchführen.

Extensive automatische Tests

Aktuell haben wir 1400 Unit Tests und 600 Integration Tests. Die Test Coverage für Daten-Queries liegt bei über 90% (nur Unit Tests - Integration Tests nicht mitgerechnet). Wir haben deutlich mehr Test-Code als Feature-Code. Jeder relevante Task in unserer ETL-Pipeline hat einen zugehörigen Task für Konsistenzchecks. 

Weit verbreitete Basistechnologien

Wir arbeiten ausschließlich mit Open-Source-Technologien. Die Pakete, die bei uns zum Einsatz kommen, werden von unzähligen Entwicklern und Firmen weltweit genutzt. Außerdem können wir immer den Quelltext der Pakete einsehen. Das sichert eine hohe Qualität und die schnelle Beseitigung von Bugs.

Unser Werkzeugkasten

Datenbank, ETL, DevOps

  • postgresql
  • python: luigi, sqlalchemy, tdda, pandas, geopandas, dask, lxml
  • ansible

Analyse-Frontend, Queries

  • python: flask, sqlalchemy, jinja2, networkx, pandas
  • bootstrap
  • datatables.js
  • gunicorn + nginx
  • webpack + npm

Visualisierung

  • leaflet.js
  • d3.js
  • vega-lite.js via python/altair
  • html + css

The CTO's Corner

Unser CTO, Eberhard Hansis, schreibt kurze Artikel zu technischen Themen in seinem persönlichen Blog "Things I Learned" (auf Englisch). Hier eine kleine Auswahl:

Use a Weighted Percentile Rank to Benchmark against Skewed Distributions

When you are presenting data, for example in a report or dashboard, it is often a good idea to indicate if a certain value is 'large' or 'small', compared to benchmarking data. As we will see in this post, using a weighted percentile rank is a good way to determine size for such a benchmarking.

Three Levels of Testing in Data Analytics

A data scientist or data engineer should follow established best practices for software development, including automated testing. This post suggests testing methods geared specifically towards data analytics work.

Wrap your Python Analytics Results in dataclass or attrs

When writing data queries or analysis functions, it is often necessary to pass back multiple result values. Here I want to describe how (and why) to use the attrs package for this purpose.

Deliberate Practice for Programmers

There is lots of content on the web about deliberate practice, how to define it and its benefits. However, it was not obvious to me how I could leverage it as a programmer to improve my skills. Here are a few suggestions for deliberate practice that I have found to be beneficial for my programming skills.

Chaining Immutable Pandas

This post talks about mutable and immutable operations, with a focus on how to apply them when working with the Pandas data analysis package.