Einführung
Kontakte, Spenden, Mitglieder oder Events managen, Kampagnen durchführen, mit den eigenen Zielgruppen kommunizieren oder Daten zur Wirkungsmessung erheben: immer mehr zivilgesellschaftliche Organisationen nutzen die Open Source Software CiviCRM. CiviCRM ist flexibel und vielseitig einsetzbar in zivilgesellschaftlichen Organisationen. So sind für viele Mitarbeiter*innen und Engagierte CiviCRM-Daten die Grundlage ihrer täglichen inhaltlichen Arbeit geworden.
Doch wie können zivilgesellschaftliche Akteur*innen in CiviCRM gesammelte Daten nutzen - zur Fördermittelakquise, zur Berichterstattung, zur Wirkungsmessung, zur Verbesserung ihrer Prozesse oder zum organisationellen Lernen? Wie können CiviCRM-Daten ausgewertet, analysiert und visualisiert werden?
Diese Fragen zu erkunden, war das Ziel eines internen Datenvorhabens, welches ein Team des Civic Data Labs im Sommer 2025 durchgeführt hat. Ausgehend von Gesprächen und schriftlichen Austauschen mit zivilgesellschaftlichen Akteur*innen zu ihrer CiviCRM-Nutzung recherchierten Jonas Stettner und Leo Preu Tools und führten verschiedene technische Experimente durch, in denen sie Testdaten einer eigens eingerichteten CiviCRM-Instanz analysierten und visualisierten.
Dieses Material dokumentiert die Ergebnisse dieses Datenvorhabens und skizziert Use Cases, Ansätze, Experimente und Tools. Es richtet sich vor allem an Personen, die CiviCRM bereits nutzen und ihre CiviCRM Daten analysieren (wollen). Aber auch Personen, die überlegen, CiviCRM in ihrer Organisation einzuführen, oder die an Open Source Software oder gemeinwohlorientierter Datennutzung interessiert sind, sind herzlich willkommen, hier durchzustöbern.
Wie gehts weiter?
- Zuerst betten wir die typischen Schritte bei der Auswertung von CiviCRM-Daten und potenziell hilfreiche Tools in den "Datenlebenszyklus" ein.
- Use Cases & Ansätze: Wie nutzt die Zivilgesellschaft CiviCRM? Welche Anwendungsfälle gibt es und wie können wir ihnen technologisch begegnen?
- In den Unterseiten geht es dann ins Details: Wir beschreiben unsere Experimente und Use Cases, die wir näher untersucht haben.
- Die verwendeten CiviCRM-Komponenten und externen Tools beschreiben wir im Abschnitt Tools.
- Im Fazit fassen wir unsere Erkenntnisse zusammen.
Limitationen des Datenvorhabens
CiviCRM ist ein mächtiges und komplexes Tool und wir sind weder CiviCRM- noch Fundraising- oder CRM-Expert*innen. Deshalb kann es sein, dass uns vielversprechende Optionen aus dem Civi-Universum entgangen sind. Dies gilt v.a. für fachspezifische CiviCRM-Erweiterungen - wir hatten leider nicht die Zeit, um uns tiefergehend mit allen Anwendungsfällen (Fundraising, Freiwilligenmanagement, ...) und den dazugehörigen Erweiterungen auseinanderzusetzen.
Unsere Experimente haben wir mit unserer selbst gehosteten Basisinstallation von CiviCRM 6.4.0. durchgeführt. Zwischen der Standalone-Version von CiviCRM und dessen Nutzung in Kombination mit CMS wie Drupal oder Wordpress gibt es Unterschiede. Auch Spezifika von Hosting-Anbietern (z.B. Systopia-eigene Extensions) konnten wir nicht berücksichtigen. Über Beiträge zu dieser Dokumentation von Personen, die in diesen Bereichen mehr Ahnung haben, würden wir uns sehr freuen.
In der Bearbeitung der Use Cases waren wir inhaltlich beschränkt durch unsere selbst erstellten Testdaten. Wir hatten Kontakte und Zuwendungen, aber keine Events oder Aktivitäten wie Eventteilnahmen o.ä.
Hinweise zur Bedienung & zur Kennzeichnung
Zur Navigation kann die Seitenleiste und/oder die Pfeile am Ende der Unterseiten verwendet werden. Mit der 🔍 Suchfunktion kann die Seite nach Begriffen durchsucht werden.
Die Inhalte dieser Seite wurden von Jonas Stettner und Leo Preu (beide CorrelAid e.V., tätig im Civic Data Lab) erstellt. Zum Teil haben LLMs die beiden bei der Recherche, Übersetzung und Formulierung unterstützt. Wenn signifikante Teile von Seiten oder Sektionen von LLMs geschrieben sind, haben wir dies separat gekennzeichnet. Alle LLM-generierten Inhalte wurden durch uns inhaltlich überprüft.
CiviCRM Daten im Datenlebenszyklus
Der Datenlebenszyklus, visualisiert in der obigen Grafik, gibt einen Überblick über den Ablauf einer Datenanalyse - von der Planung bis hin zur Umsetzung. Wir werden dieses Konzept hier nicht genauer erklären. Deswegen empfiehlt es sich, bei Bedarf und Interesse die entsprechende Informationsseite auf der CDL-Website zu lesen.
Wir verwenden den Datenlebenszyklus hier, um Komponenten und Tools den Schritten zuzuordnen und fokussieren uns dabei auf die folgenden Aspekte:
Planen und fragen 🗺️
Welche Fragen will ich mithilfe von Daten beantworten? Welche Daten brauche ich?*
Bei unserem Projekt gingen wir größenteils davon aus, dass interessierte Organisation schon Daten haben und auch wissen, welche Fragen sie an die Daten stellen wollen. Allerdings können manche Fragestellungen nur beantwortet werden, wenn man die in CiviCRM erfassten Daten um eigene Felder erweitert.
Daten organisieren 💾
Wo und wie werden Daten gespeichert? Wie werden sie verwaltet und wie werden sie bereinigt?
→ Im Kontext unseres Datenvorhabens hat CiviCRM und seine SQL-Datenbank als Ort zur Speicherung und Verwaltung von Daten häufig ausgereicht. Trotzdem gibt es auch Fälle, wo zusätzliche Tools (z.B. eine Managed Datenbank) zur Organisation und Speicherung von CiviCRM-Daten sinnvoll waren.
Dabei geht es nicht nur um den Speicherort: Wenn Daten langfristig gespeichert werden und auf deren Basis Analysen stattfinden sollen, lassen sich in diesem Schritt Methoden aus dem Bereich des Data Engineering und Data Modeling anwenden. Dies umfasst unter anderem das Aggregieren oder das Kombinieren von Datensätzen.
💾 CiviCRM Datenbank 💾 Managed Datenbank
Daten auswerten 🔢
Wie werden Daten analysiert? Wie werden Ergebnisse analysiert?
→ CiviCRM Daten können unterschiedlich ausgewertet und analysiert werden: Von einfachen deskriptiven Analysen über tiefergehende Analysen hin zu komplexen Machine-Learning-Modellen zur Vorhersage von Spenden. Wir haben uns in unserer Arbeit überwiegend auf einfache Auswertungen fokussiert, da diese am übertragbarsten sind.
🔢 CiviCRM SearchKit 🔢 Excel, Google Sheets & Co. 🔢 Metabase & andere BI Tools 🔢 Python & R 🔢 CiviCRM Reports/Berichte
Daten visualisieren 📊
Wie werden Daten visuell ansprechend und passend für die Zielgruppe aufbereitet?
→ Viele Organisationen möchten ihre CiviCRM-Daten nicht nur auswerten, sondern auch in Datenvisualisierungen oder Dashboards aufbereiten.
📊 CiviCRM ChartKit 📊 Excel, Google Sheets & Co. 📊 Metabase & andere BI Tools 📊 Python & R 📊 Civisualize
Daten kommunizieren 💬
Wie werden Ergebnisse zielgruppengerecht kommuniziert und geteilt?
→ Auswertungen von CiviCRM-Daten können unterschiedliche Zielgruppen haben: man selbst, die eigene Organisation bzw. das eigene Team, die breite Öffentlichkeit, existierende Fördermittelgeber oder potenzielle Sponsor*innen. Je nach Zielgruppe(n) ergeben sich unterschiedliche Anforderungen an die Tiefe und Komplexität der Analyse, an das Design der Visualisierungen, an die Kommunikationswege.
Das Kommunizieren von Daten und Ergebnissen von Datenauswertungen ist eine Kunst bzw. ein Handwerk an sich1. Wir beschränken uns hier nur darauf, inwiefern Analyse- und Visualisierungs-Tools die Möglichkeiten bieten, Ergebnisse zu teilen, und inwiefern sie Ansprüche an Design und Professionalität erfüllen. Deshalb listen wir hier nicht separat "Datenkommunikationstools".
Das E-Learning Datenvisualisierung und Storytelling des Civic Data Labs gibt einen guten Einstieg ins Thema.
Daten verbinden & Datenflüsse ermöglichen ⚙️
Wie werden Daten zusammengeführt? Wie werden Datenflüsse zwischen Tools ermöglicht?
→ Zusätzlich zu den Schritten des Datenlebenszyklus ist es bei unseren Experimenten sehr relevant gewesen, Komponenten und Tools miteinander zu integrieren, sie zu verbinden und Datenflüsse zu ermöglichen. Deshalb sprechen wir zusätzlich auch von Daten verbinden & Datenflüsse ermöglichen.
⚙️ CiviCRM-API ⚙️ Workflow Automation Tools ⚙️ MS Power Query ⚙️ Google Apps Script ⚙️ Python
Datenschutz
→ Da in CiviCRM fast immer personenbezogene Daten gespeichert werden, bildet Datenschutz einen wichtigen Rahmen für die Auswertung von CiviCRM-Daten. Dies ist vor allem relevant, wenn Daten außerhalb von CiviCRM weiterverarbeitet werden. Wir haben bei unserer Arbeit darauf geachtet, Tools zu priorisieren, die Datensouveränität ermöglichen.
Trotzdem haben wir auch Software von außereuropäischen Anbietern in unsere Recherche miteinbezogen. Wenn ihr diese Tools nutzen möchtet, empfehlen wir euch, Daten in CiviCRM oder europäischen Umgebungen so weit zu aggregieren, dass kein Rückschluss mehr auf Individuen möglich ist.
Use Cases & Ansätze
Use Cases: Wie nutzt die Zivilgesellschaft CiviCRM?
Im Sinne der partizipativen Technikgestaltung haben wir im Rahmen des Datenvorhabens schriftlich und in persönlichen Gesprächen Meinungen, Bedarfe und Anfoderungen von zivilgesellschaftlichen CiviCRM-Nutzer*innen eingeholt. Wir danken allen, die mit uns ihre Anliegen geteilt haben. Es zeigte sich, dass es eine große Varianz gibt - in der Nutzung von CiviCRM, aber auch in den Wünschen und Anforderungen an Auswertungen der eigenen Daten.
Welche Daten pflegen Organisationen in CiviCRM?
Standardmäßig nutzen zivilgesellschatliche Organisationen CiviCRM für Kontakte (Personen, Organisationen), häufig auch für Mitgliederverwaltung, Spendenmanagement oder Veranstaltungsmanagement.
Speziellere Anwendungsfälle sind z.B.:
- Fördermittel/Fondsverwaltung
- Case-/Projektmanagement und Aktivitäten
- Engagement-/Integrationsdaten
- Kampagnen- und politische Arbeit
Welche Auswertungen wären besonders hilfreich?
- Finanz- und Spendenberichte: Entwicklung von Spendenaufkommen, Zusammensetzung (Dauer-/Einzelspenden), Verknüpfung mit Aktivitäten.
- Fördermittelmonitoring: Anzahl und Volumen bewilligter Projekte, regionale Verteilungen, Vergleich nach Zielgruppen.
- Mitglieder- und Verbandsentwicklung: Entwicklung nach Region, Alter, Interessen, Potenziale für Beitragsmodelle.
- Veranstaltungen & Engagement: Teilnahmestatistiken, Übergang von Veranstaltungen ins Ehrenamt, Bindungs- und Austrittsgründe.
- Politische Kommunikation: Datenaufbereitung für Sachberichte, Evaluationen, Präsentationen an Ministerien, Fördergeber oder Öffentlichkeit.
Ansätze: Wie CiviCRM-Daten analysieren?
Um einen Use Case von CiviCRM-Daten anzugehen, lassen sich fast immer mehrerer Lösungen finden. Es gibt kein „richtig“ oder „falsch“ – entscheidend ist, welche Tools und Methoden für euch am besten funktionieren.
Grundsätzlich könnt ihr unterscheiden, welche Schritte des Datenlebenszyklus ihr in CiviCRM und/oder extern abbildet:
- Alle Schritte in CiviCRM umsetzen (von Datenorganisation bis zur Datenvisualisierung).
- Daten organisieren und auswerten mithilfe von CiviCRM, Visualisierung und Kommunikation mit externen Tools.
- Nur Datenorganisation in CiviCRM, Auswertung, Visualisierung und Kommunikation mit externen Tools.
- Daten extern organisieren (z. B. in einer zusätzlichen Datenbank oder einem ETL-Tool), Auswertung und Visualisierung ebenfalls extern.
Generell gilt: CiviCRM ist primär ein CRM, kein Datenanalyse- oder Visualisierungstool. Je höher eure Anforderungen an die Auswertung sind, desto eher solltet ihr auf externe Tools setzen.
Darüber hinaus hängt die Wahl des Ansatzes von folgenden Faktoren ab:
- Finanzielle Ressourcen eurer Organisation
- Bestehende technische Infrastruktur
- Vorhandene Fähigkeiten sowie Bereitschaft und Zeit, Neues zu erlernen
- Zielgruppe der Auswertung: interne Nutzung oder externe Stakeholder?
- Anforderungen an die Auswertungsergebnisse: Format, Design etc.
- Flexibilität: Soll explorativ gearbeitet oder nur eine festgelegte Auswertung durchgeführt werden?
Wir beschreiben Vor- und Nachteile der Tools und Ansätze, um euch bei der Entscheidung zu unterstützen – damit ihr eure CiviCRM-Daten bestmöglich auswerten könnt.
CiviCRM Datenbank + Metabase
Das Business Intelligence Tool Metabase mit der CiviCRM Datenbank verbinden - Daten auswerten und Daten visualisieren in Metabase
💾 daten-organisieren: CiviCRM Datenbank und (partiell) in Metabase
🔢 daten-auswerten: Metabase
📊 daten-visualisieren: Metabase
⚙️ daten-verbinden: über direkte Anbindung der CiviCRM Datenbank an Metabase
Voraussetzungen
- direkter Zugriff auf eure CiviCRM Datenbank
- Einen Account für eine Metabase Instanz mit Admin-Rechten
Anleitung
Setup
Fügt wie hier beschrieben eine Verbindung zu eurer Datenbank zu Metabase hinzu.
Daten analysieren und visualisieren
Sobald Metabase Zugriff auf eure CiviCRM-Datenbank habt, könnt ihr Fragen erstellen und diese in Dashboards visualisieren und darstellen. Mehr zur Analyse und Visualisierung in Metabase hier.
Daten organisieren
Die CiviCRM-Datenbank hat sehr viele Tabellen - verständlich bei so einer umfassenden Softwarelösung. Zum Beispiel sind in der Tabelle Kontakte nur numerische IDs für das Geschlecht vorhanden. Die Labels finden sich in einer eigenen Tabelle. Diese Tabellen bei jeder Frage zusammenzuführen, ist auf Dauer nervig und zeitraubend. Es lohnt es sich daher, ein bisschen Datenmodellierung in Metabase zu machen. Hierfür könnt ihr die Modell-Funktion verwenden. So könnt ihr z.B. ein Modell "Kontakte" anlegen, welches die Genderoptionen bereits an die Kontakte-Tabelle anfügt. Euer Modell könnt ihr dann in allen weiteren Fragen und verbundenen Analyse- und Visualisierungsschritten nutzen.
Beispiel: Kontakt- und Spendendashboard
Als Teil des Datenvorhabens haben wir ein Beispiel-Dashboard erstellt, welches einen Überblick über die Kontakte und Spenden + Kampagnenbeiträge in unserer Testdatenbank gibt. Das Dashboard hat zwei Tabs:
- Kontakte: Deskriptive Statistiken zu unseren Fake-Kontakten
- Spenden: Deskriptive Statistiken zu Zuwendungen, spezifisch zu Spenden und Kampagnenbeiträgen.
Als kleiner Vorgeschmack hier die Visualisierung unserer fiktiven Spendenkampagne im Dezember 2024:
CiviCRM API + Automation + Managed DB + Metabase
💾 daten-organisieren: CiviCRM API Explorer & Managed Datenbank
🔢 daten-auswerten: Metabase
📊 daten-visualisieren: Metabase
⚙️ daten-verbinden:
CiviCRM API & Workflow Automation Tool
flowchart TB subgraph CiviCRM API[API] end subgraph ETL[Automation Tool Knoten] Retrieve[Daten Anfragen] Process[Daten verarbeiten] Load[Daten in die DB laden] Retrieve --> Process --> Load end ExtDB[(Managed DB)] Metabase[Metabase] ETL -->|Modelliert in API Explorer| API ETL --> ExtDB Metabase --> ExtDB
Bei dem hier vorgestellten Ansatz werden die Daten über die API bezogen, während der Datenorganisationsschritt bzw. das Data Modelling, also z.B. die Auswahl der Datenfelder oder Aggregation einmalig über den API Explorer geschieht. Wie hier beschrieben, lassen sich die notwendigen Parameter über eine GUI generieren und kopieren.
Die eigentliche API-Anfrage geschieht schließlich im Workflow Automation Tool, das die Rolle der Data Orchestration erfüllt. Hier kann der Output des Requests auch verarbeitet werden, sodass die Daten anschließend in die externe managed Datenbank, das Data Warehouse, geladen werden kann. An diese Datenbank kann dann Metabase angeschlossen werden, um die Daten zu visualisieren.
Diesen Ansatz wird anhand von zwei Use Cases veranschaulicht, bei denen jeweils eines der zwei ausgewählten Workflow Automation Tools verwendet wird. Zuerst erklären wir, wie man mit n8n durch das Duplizieren eines Datenausschnitts die Datengrundlage für die Visualisierung einfacher deskriptive Statistiken schaffen kann.
Danach wird der komplexere Use-Case der Visualisierung von Spender:innenwanderungen thematisiert. Nachdem notwendige Daten aggregiert in einem API-Request aggregiert wurden, geschieht dies mithilfe von Kestra.
Einfache deskriptive Statistiken visualisieren
Wir stellen uns die Frage, wie sich Geschlecht unter den in CiviCRM erfassten Kontakten verteilt und wollen dafür einen Donut-Chart bauen.
Anleitung
Anlegen einer Tabelle in der Managed Datenbank (Neon)
Erstelle eine neue Tabelle, wie hier beschrieben, mit dem Namen kontakte und füge neben der automatischen ID-Spalte lediglich die Spalten civicrm-id und gender ein. Ersteres sollte den Datentyp integer haben, und als contraints *Not null, sowie Unique haben. Zweiteres sollte den Datentyp varchar und den constraint Not null.
Als SQL, das man auch in den SQL Editor einfügen kann, um die Tabelle zu erstellen, sieht das so aus:
CREATE TABLE "kontakte" (
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "kontakte_id_seq"),
"civicrm_id" integer NOT NULL UNIQUE,
"gender" varchar
);
ℹ️ Diesen und anderen SQL-Code findet ihr auch im Repository in dem Ordner supporting_code/sql
.
Datenmodellierung im API Explorer
Navigiert zum API Explorer und wählt als Entität Contact, sowie als Aktion get aus. Unter select, wählt gender_id:label und id aus. Wichtig ist, dass ihr außerdem -1 bei limit setzt, um alle Daten zu erhalten. Bei diesem Use Case beschränkt sich das Data Modeling auf die Feldauswahl.
🤔 Kleiner Exkurs: gender ist eine separate Tabelle, die alle auf dieser CiviCRM auswählbaren Gender enthält. Kontakte haben ein Feld mit dem Namen gender_id, dass die ID einer Reihe in der Gender-Tabelle enthält, die zum Beispiel als Spalte Label hat.
Nach diesen Schritten könnt ihr bereits den Request Body weiter unten unter REST kopieren. Dies sollte entsprechen: params=%7B%22select%22%3A%5B%22gender_id%3Alabel%22%2C%22id%22%5D%7D
.
Anlegen des Flows in n8n
Auf eurer n8n Instanz, erstellt einen neuen Workflow. Am Ende sollte dieser so aussehen:
ℹ️ Den Flow als importierbare Datei findet ihr auch im Repository in dem Ordner supporting_code/n8n_flows
. Dies solltet ihr so nicht nachmachen, da der Flow in dieser Version auch ein API Token enthält.
Als Trigger dient sowohl die manuelle Ausfühurng als auch eine Schedule (regelmäßig terminiertes Ausführen). Letzteres kann zum Beispiel einmal am Tage geschehen.
Knoten: API-Anfrage
Der erste richtige Knoten ist die API-Anfrage. Unten seht ihr, wie ihr ihn konfigurieren müsst.
Fügt unter URL am Anfang die URL eurer Instanz ein. Im API Explorer unter dem Rest Reiter ist dies auch als Variable CRM_URL definiert. Wie ihr ein API Token erhaltet, lernt ihr hier.
Im Feld Body, das bei Setzen der oben angezeigten Optionen erscheint, fügt ihr nun den im API-Explorer generierten Body ein (siehe oben). Dies könnt ihr direkt mit einem Klick auf "Execute Workflow" testen.
🤔 Hinweis: Wenn mehr als ein paar hundert Kontakte in CiviCRM habt, oder viele Datenfelder verarbeitet, solltet ihr nicht alle Daten auf einmal anfragen, sondern mit Pagination arbeiten. Dies lässt sich im API-Explorer konfigurieren und in n8n so berücksichtigen.
Knoten: Zeilen separieren
Der Output des vorherigen Knotens ist standardmäßig ein json Objekt, das die Daten als Liste als Wert des keys "values" enthält. Der Knoten-Typ Split Out ermöglicht es uns, diese Liste, bzw. deren Einträge zu isolieren.
Die Konfiguration dieses Knotens ist simpel: füllt das Feld Values to Split Out einfach mit dem Wert values.
Knoten: Daten in die managed Datenbank laden
Dieser letzte Knoten ist für das Laden der Daten in die managed Datenbank auf Neon, unser Data Warehouse, zuständig.
Legt zunächst ein Credential für Postgres an. Wie dies funktioniert, ist [hier] beschrieben. Die notwendigen Informationen findet ihr auf Neon so.
Wenn ihr dies erledigt habt, nutzt den Knoten-Typ für Postgres: Insert or update rows in a table und konfiguriert ihn so wie im Bild oben. Wählt die Tabelle aus, die ihr im ersten Schritt angelegt habt. Bei der Zuordnung der Felder aus der API zu den Spalten der Tabelle ist wichtig, dass es einen Unterschied zwischen id, die automatisch erstellt wird, und civicrm_id, die Updates von bereits vorhanden Kontakten erlaubt, gibt. So wird sichergestellt, dass bei erneutem Laden der Daten keine Duplikate entstehen.
🤔 Kleiner Exkurs: In den Begriffen des Data Engineering vollziehen wir hier einen regelmäßigen Full Load. Eine alternative wäre ein ressourcensparender incremental load, bei dem nur neue Daten geladen werden. Neu könnte mit Bezug auf Kontakte meint solche, die geupdatet oder SWtatsächlich neu hinzugekommen sind. Incremental Loads können jedoch komplex werden, auch weil sie Informationen wie das Datum eines Updates und die zuverlässige Sortierung von API Ergebnissen voraussetzen.
Visualisierung in Metabase
Verbindet wie hier beschrieben die Datenbank mit Metabase. An die notwendigen Informationen kommt ihr ähnlich wie beim Anlegen der Postgres Credentials für den letzten Knoten des Workflows.
Die obige Visualisierung ist ein Pie-Chart, für den die Daten mit der Summarize Funktion verarbeitet wurden, indem die Reihen pro Gender gezählt wurden.
Spendendewanderungen
Wie viele Menschen werden von einmaligen Spendende zu monatlichen Spendende? Wie viele Menschen kündigen ihre regelmäßige Spende? Hier beschäftigen wir uns mit der Entwicklung von Spendenkategorien.
Anleitung
Erweiterung der CiviCRM Datenfelder
Wie hier beschrieben, benötigen wir ein neues benutzerdefiniertes Datenfeld, dass den Typ einer spendenden Person erfasst. Für Demonstrationszwecke halten wir es simpel und legen das Feld Donor Type als Auswahlliste mit den Optionen One Time Donor, Monthly Donor und Past Donor an. Die Benennung ist dabei beliebig veränderbar und es könnten auch mehr Optionen genutzt werden.
🤔 Hinweis: Für unseren Test erstellen wir programmatisch Testdaten mit diesem Dateifeld, in der Realität müsst ihr diesen neue Feld jedoch in eure Erfassung von Kontakten integrieren, oder die Information anderweitig erfassen. Eine Option ist zum Beispiel die Nutzung von Gruppen für Kontakte. Auf English ist dies hier dokumentiert. Ihr könntet Gruppen mit Kriterien wie ist zu einer Contribution zugeordnet anlegen.
Anlegen einer Tabelle in der Managed Datenbank (Neon)
Erstelle eine neue Tabelle, wie hier beschrieben, mit dem Namen spendende_typen_agg und füge neben der automatischen ID-Spalte jeweils eine Spalte für die Typen von Spendenden ein. Also z.B. nicht_spendend oder einmalig. Diese Spalten sollten den Typ integer, und als Contraints Not null haben. Weiterhin benötigen wir noch die Spalte timestamp mit dem gleichnamigen Datentyp *timestamp und dem Constraint Not null.
Als SQL, das man auch in den SQL Editor einfügen kann, um die Tabelle zu erstellen, sieht das so aus:
CREATE TABLE IF NOT EXISTS"spendende_typen_agg" (
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (
sequence name "spendende_typen_agg_id_seq"
),
"timestamp" timestamp NOT NULL,
"nicht_spendend" integer NOT NULL,
"monatlich" integer NOT NULL,
"einmalig" integer NOT NULL,
"ehemalig" integer NOT NULL
);
Datenmodellierung im API Explorer
Navigiert zum API Explorer und wählt als Entität Contact, sowie als Aktion get aus. Hier besteht die Datenmodellierung nun aus einer Aggregation nach dem Typ der spendenden Person.
Konfiguriert die API-Anfrage so wie in dem Screenshot oben. Wir zählen die ids pro Spendenden-Typ und zeigen den Namen des Typs an. Außerdem nutzen wir die groupBy Funktion, um die Reihen nach Spendenden-Typ zu gruppieren. Wichtig ist weiterhin, dass wir die Ergebnisse sortieren, da wir später die Position in der Liste der Ergebnisse verwenden.
Anlegen des Flows in Kestra
Hier ist der gesamte Flow als yaml:
id: civicrm_donor_type_count_polars
namespace: company.team
tasks:
- id: request
type: io.kestra.plugin.core.http.Request
uri: http://civicrm.correlaid.org/civicrm/ajax/api4/Contact/get
headers:
X-Civi-Auth: "Bearer {{ secret('CIVICRM_API_TOKEN') }}"
method: POST
contentType: application/x-www-form-urlencoded
body: |
params=%7B%22select%22%3A%5B%22COUNT%28id%29%20AS%20count%22%2C%22Donor_Type.Donor_Type%3Alabel%22%5D%2C%22orderBy%22%3A%7B%22contact_type%3Alabel%22%3A%22DESC%22%7D%2C%22groupBy%22%3A%5B%22Donor_Type.Donor_Type%22%5D%7D
Knoten: API-Anfrage
Ein Beispiel Output ist:
{"values":[{"count":22,"Donor_Type.Donor_Type:label":null},{"count":76,"Donor_Type.Donor_Type:label":"One Time Donor"},{"count":117,"Donor_Type.Donor_Type:label":"Past Donor"},{"count":91,"Donor_Type.Donor_Type:label":"Monthly Donor"}],"entity":"Contact","action":"get","debug":null,"version":4,"count":4,"countFetched":4}
Knoten: Verarbeitung mit jsonata
jsonata ist eine Sprache für die Abfrage und Verarbeitung von Daten. In diesem Fall separieren wir die Zählungen der Typen durch folgende Anfrage:
$merge(
$map(values, function($v) {
{
($v."Donor_Type.Donor_Type:label" != null ? $v."Donor_Type.Donor_Type:label" : "Unlabeled"): $v.count
}
})
)
Die JSONata-Anfrage iteriert mit $map über das Array values und erzeugt für jeden Eintrag ein Objekt, dessen Schlüssel dynamisch aus $v."Donor_Type.Donor_Type:label" stammt oder, falls null, auf Unlabeled gesetzt wird; der zugehörige Wert ist jeweils $v.count. Weil der Feldname Sonderzeichen enthält, wird er mit dem Pfad ."Donor_Type.Donor_Type:label" in Anführungszeichen adressiert. Anschließend fasst $merge alle Einzelobjekte zu einem einzigen flachen Objekt zusammen, sodass die Spendentypen ihren Zählwerten zugeordnet sind.
Beipsiel-Output
{
"Unlabeled": 22,
"One Time Donor": 76,
"Past Donor": 117,
"Monthly Donor": 91
}
Knoten: Laden in die Datenbank
Die als Key und Value separierten Daten lassen sich nun
🤔 Hinweis: Wenn ihr Kestra selbst hostet, könnt ihr API Tokens etc. als Secrets anlegen.
🤔 Kleiner Exkurs: In den Begriffen des Data Engineering vollziehen wir hier einen Daily Snapshot.
Visualisierung in Metabase
Verbindet wie hier beschrieben die Datenbank mit Metabase. An die notwendigen Informationen kommt ihr ähnlich wie beim Anlegen der Postgres Credentials für den letzten Knoten des Workflows.
Die obige Visualisierung ist ein Line-Chart, der direkt auf die Daten angewendet werden kann.
SearchKit + Excel / Google Sheets
SearchKit Suchergebnisse über die API in Excel oder Google Sheets laden - Datenvisualisierung und weitere Auswertung dort.
💾 daten-organisieren: CiviCRM Datenbank
🔢 daten-auswerten: SearchKit
📊 daten-visualisieren: Excel bzw. Google Sheets
⚙️ daten-verbinden: Power Query bzw. Google Apps Script
SearchKit, Excel und Power Query
Voraussetzungen
- CiviCRM API Schlüssel, um auf die folgenden Endpunkte der CiviCRM API eurer Instanz zuzugreifen:
ajax/api4/SavedSearch/get
ajax/api4/SearchDisplay/download
- Lizenz für Microsoft Excel Desktop Version1, optional für Excel für das Web
Für die Einrichtung und Konfiguration ist die Desktop Version von Excel notwendig. Das Abrufen der Daten funktioniert dann auch unter Excel für das Web, wenn man die Datei hochgeladen hat. Der Ansatz wurde getestet unter Microsoft Excel for Mac, Version 16.100.3 unter der Lizenz Microsoft 365.
Anleitung
Setup
-
Ladet die
test-excel.xlsx
Datei aus dem GitHub Repository herunter. Dazu oben rechts auf die drei Punkte und dann auf "Download" bzw. "Herunterladen" klicken. -
Öffnet die Datei in der Desktop Version von Microsoft Excel.
-
Aktiviert die externen Datenverbindungen, indem ihr auf "Inhalt aktivieren" klickt.
-
Öffnet den Power Query Editor über den Ribbon Daten -> Daten abfragen (Power Query) -> Power Query-Editor starten.
- In der Seitenleiste links wählt den Eintrag
CiviToken
. Gebt euren API Schlüssel für die CiviCRM API ein. Klicke auf "Übernehmen".
Eigene SearchKit-Suchen herunterladen
Im Power Query Editor ist die Funktion getSavedSearch
(dt. "bekomme gespeicherte Suche") hinterlegt. Mit dieser Funktion könnt ihr eigene SearchKit Suchen abfragen.
-
In der linken Seitenleiste -> fx
getSavedSearch
-
in das Feld "SearchName" den Namen eurer SearchKit Suche eingeben. Wichtig: Leerzeichen müsst ihr mit Unterstrichen ersetzen. z.B. wird "geschlecht statistik" zu "geschlecht_statistik" oder "Zuwendungen nach Zahlungsmethode" zu "Zuwendungen_nach_Zahlungsmethode". auf "Aufrufen" klicken.
-
dies legt einen neuen Query in der Seitenleiste an und führt ihn direkt aus. Ihr könnt dem Query mit Rechtsklick einen aussagekräftigeren Namen geben.
-
Wenn ihr ganz normal auf den Query in der Seitenleiste klickt, solltet ihr das Ergebnis eurer SearchKit Suche als Tabelle sehen.
-
Sehr ihr anstatt dessen eine Warnung oder einen Fehler, ist etwas schief gelaufen. Überprüft, ob ihr die richtigen Zugriffsrechte habt und ob ihr den API Schlüssel bei Setup richtig hinterlegt habt.
-
Um in Excel gut weiterarbeiten zu können, müsst ihr noch sicherstellen, dass die Daten den richtigen Typ haben. Das ist v.a. wichtig für Zahlenwerte wie Anzahl, Mittelwert, usw. Hierzu in der Vorschautabelle im Power Query Editor Rechtsklick auf den Spaltennamen -> Änderungstyp. Dann den gewünschten Datentyp auswählen.
- Schließt den Power Query Editor mit dem Button Schließen und Laden. Dies legt ein neues Tabellenblatt für die neuen Queries an und fügt die Ergebnistabellen dort ein.
- Ihr könnt jetzt die Tabelle markieren mit den Daten weiterarbeiten: z.B. ein Diagramm (Einfügen -> Diagramm auswählen) oder eine Pivot-Tabelle (Einfügen -> PivotTable) einfügen.
Tipp: auf Windows könnt ihr noch genauer kontrollieren, wie und wo ihr eure Power Queries verwenden wollt. Auf Youtube gibt es viele Videos zu Power Query, die mit der Windows Version arbeiten und euch zeigen, was ihr noch so machen könnt.
Power Queries aktualisieren und bearbeiten
Über Ribbon Daten -> Alle Aktualisieren könnt ihr eure Power-Query-Abfragen aktualisieren. Verbundene Diagramme, Pivot-Tabellen und sonstige Auswertungen aktualisieren sich automatisch.
Falls ihr die Funktion bearbeiten möchtet, könnt ihr dies über Rechtsklick auf getSavedSearch
-> Erweiterter Editor tun. Den Code für die Funktion sowie einen Power Query, der euch eine Liste aller SearchKit Suchen zurückgibt, haben wir auch im GitHub Repository hinterlegt.
Power Query in der Cloud
Power Query wird in Excel für das Web nur eingeschränkt unterstützt. Es gibt keinen Power Query Editor, aber bestehende Queries funktionieren und es gibt den "Alle aktualisieren" Button. Verwendet ihr Excel in der Cloud, kann ein*e Kolleg*in die Queries anlegen und dann die Excel-Datei in die Cloud laden.
SearchKit, Google Sheets und Google Apps Script
todo
Search Kit + Chartkit
Inhalte folgen
Tools
- CiviCRM-interne Tools
- Excel, Google Sheets & Co. 🔢📊💬⚙️
- Business Intelligence Tools🔢📊💬
- Managed Datenbank💾
- Workflow Automation Tools🔢⚙️
- Python & R🔢📊💬⚙️
- Self-Hosting
Legende
💾 daten-organisieren
🔢 daten-auswerten
📊 daten-visualisieren
💬 daten-kommunizieren
⚙️ daten-verbinden
(siehe auch Datenlebenszyklus)
CiviCRM-interne Tools
Es lässt sich wiederholen: CiviCRM is primär ein CRM, kein Datenanalyse- oder Visualisierungstool. Da jedoch externe Tools für mehr Komplexität und Aufwand sorgen, haben wir uns auch mit den Möglichkeiten von CiviCRM selbst beschäftigt.
Unsere Experimente haben wir mit unserer selbst gehosteten Basisinstallation von CiviCRM 6.4.0. durchgeführt. Zwischen der Standalone-Version von CiviCRM und dessen Nutzung in Kombination mit CMS wie Drupal oder Wordpress gibt es Unterschiede. Auch Spezifika von Hosting-Anbietern (z.B. Systopia-eigene Extensions) konnten wir nicht berücksichtigen.
Erweiterung der Datengrundlage
Um Daten auf eine bestimmte Fragestellung hin zu analysieren benötigt man zunächst dafür geeignete Daten. CiviCRM bietet eine vernünftige Auswahl an Standard-Feldern für die unterschiedlichen Datenklassen (Kontakte etc.). Man kann diese jedoch um Eingabefelder erweitern, sollte man zusätzliche Informationen benötigen.
Tags
Eine einfache Art, Kontakte im Bezug auf Art der Unterstützung zu visualisieren ist, ihnen Tags zuzuordnen. Tags lassen sich in den Einstellungen von CiviCRM erstellen und dann bei der Erstellung von Kontakten setzen. Es lassen sich außerde Gruppen von Überkategorien festlegen. So kann man als Überkategorie z.B. "Donor Type" erstellen und als dieser Kategorie zugeordnet "One Time Donor", "Monthly Donor" und "Past Donor". Die Bennennung der Tags ist dabei beliebig. Es ist wichtig, beim Erstellen der Tags die Überkategorie auf nicht auswählbar zu setzen. Beim Import von Kontakten lassen sich nur alle in einem Importierungsvorgang enthaltenen Kontakte zusammen taggen.
Benutzerdefinierte Felder
Eine andere Art CiviCRM Erfassungsmöglichkeiten zu erweitern ist das Anlegen von benutzerdefinierten Feldern. Hierfür muss man zunächst eine Gruppe anlegen und dann ein Feld hinzufügen. In der CiviCRM Dokumentation ist dies hier erklärt.
CiviCRM-Datenbank
Hinter CiviCRM als Software liegt eine relationale SQL-Datenbank1, in der die Daten in zahlreichen Tabellen gespeichert sind. So sind Daten in CiviCRM bereits sehr gut organisiert und verwaltet. Der Zugriff auf die SQL-Datenbank ermöglicht einen direkten Zugriff auf die Daten in CiviCRM. Dies ist v.a. nützlich für andere Komponenten, die einen dauerhaften und beständigen Datenzugriff benötigen.
Eine Erklärung des Begriffs "Datenbank" gibt es im Selbstlernmaterial des Civic Data Labs. Relevant für das Verständnis von CiviCRM auch der Abschnitt "Mehr zu Datenbanken".
Vorteile
- Über die Datenbank erhaltet ihr Zugriff auf den gesamten Umfang eurer Daten und seid somit sehr flexibel in euren Auswertungen
- Tools wie BI-Tools funktionieren am besten mit einer direkten Verbindung mit der CiviCRM-Datenbank
Nachteile
- Datensicherheit: ein direkter Zugriff auf die Datenbank ist auch immer ein Datensicherheitsrisiko. Deshalb kann euer CiviCRM-Dienstleister (berechtigte) Bedenken haben, euch diesen Zugriff zu gewähren. Greift wenn möglich auf die API zurück.
- Komplexität: Die Daten liegen in der CiviCRM in zahlreichen Tabellen ab. Sich hier zurecht zu finden, erfordert eine Einarbeitung in SQL und einen gewissen Spürsinn: Die Entity-Relationship-Diagramme (ERDs) für CiviCRM sind zwar hier dokumentiert, aber trotzdem müsst ihr euch sicher zu einem gewissen Grad selbst durch die Daten "wühlen", v.a. wenn ihr Daten aus verschiedenen CiviCRM-Datentypen kombinieren wollt.
Fazit
Für die Verwendung von bestimmten externen Tools (v.a. BI-Tools) kann ein direkter Zugriff auf die CiviCRM-Datenbank sinnvoll sein. Aufgrund der Datensicherheitsrisiken solltet ihr sehr verantwortungsbewusst mit dieser Option umgehen und Rücksprache mit eurem CiviCRM-Dienstleister halten. Falls ihr für externe Tools den Zugriff auf eine Datenbank benötigt, ist alternativ die "Spiegelung" eines Teils der CiviCRM Daten in eine Managed Datenbank über die API und Workflow-Tools eine Option.
CiviCRM-API & API-Explorer
CiviCRM API
CiviCRM hat eine Programmierschnittstelle (Application Programming Interface / API1), welche wir verwenden, um von extern auf CiviCRM-Daten zuzugreifen.
CiviCRM has a stable, comprehensive API (Application Programming Interface) for accessing and managing data. The API is the recommended way for any extension or external program to interact with CiviCRM. CiviCRM also uses its own API to power all new UIs and bundled extensions.2
In der Basisinstallation gibt es für jeden Datentyp in CiviCRM eine sogenannte Entität (en: Entity):
- Kontakte ->
Contact
- Aktivitäten ->
Activity
- Veranstaltungen ->
Event
- Zuwendungen ->
Contribution
- Emails ->
Email
- uvm.
Jede Entität hat wiederum sogenannte Aktionen, die man mithilfe der API auf ihr ausführen kann. Zum Beispiel kann man Kontakte erstellen (create
) oder löschen (delete
). Für den Datenzugriff am relevantesten ist die Aktion get
, mithilfe der man Dateneinträge abfragen kann.
Aus der Kombination von Entität und Aktion ergeben sich die API-Endpunkte. Hier sind Endpunkte, die wir im Rahmen unserer Experimente verwendet haben:
- Liste von Kontakten:
https://civicrm.correlaid.org/civicrm/ajax/api4/Contact/get
- Liste von in SearchKit abgespeicherten Suchen:
https://civicrm.correlaid.org/civicrm/ajax/api4/SavedSearch/get
- Die Ergebnisse einer gespeicherten SearchKit Suche herunterladen:
https://civicrm.correlaid.org/civicrm/ajax/api4/SearchDisplay/download
Eine Erklärung des Begriffs "API" gibt es im Selbstlernmaterial des Civic Data Labs. Es gibt eine API-Dokumentation (Englisch), die einen guten Überblick gibt über die API v4. Allerdings ist die Dokumentation sehr auf PHP ausgerichtet und bei weitem nicht alle Routen + Endpunkte sind dort dokumentiert.
Um Zugriff auf die API zu erhalten, kontaktiert am besten euren CiviCRM-Dienstleister. Wenn ihr CiviCRM selbst hostet und administriert, folgt der Dokumentation.
API einrichten
Die Konfiguration der API und die Einrichtung von API-Schlüsseln in CiviCRM ist etwas ungewöhnlich und erfordert mehrere Schritte:
- Erweiterung installieren: Zuerst muss die Erweiterung für API-Schlüssel installiert werden. Diese ist unter folgendem Link verfügbar: https://civicrm.correlaid.org/civicrm/admin/extensions?action=update&id=com.cividesk.apikey&key=com.cividesk.apikey
- API-Schlüssel erstellen: Anschließend muss ein API-Schlüssel für einen bestimmten Kontakt erstellt werden.
- Kontakt zu einer Gruppe hinzufügen: Der Kontakt, für den der Schlüssel erstellt wurde, muss einer Gruppe hinzugefügt werden (z. B. der Gruppe „Administratoren“).
- REST-Authentifizierung konfigurieren: Abschließend muss die REST-Authentifizierung konfiguriert werden. Dies erfolgt über den folgenden Link: https://civicrm.correlaid.org/civicrm/admin/setting/authx?reset=1 . Dort müssen die „Authentication Guards“ entfernt und die API-Schlüssel-Methode als erforderliche Authentifizierungsmethode für die relevanten Felder hinzugefügt werden.
API Explorer
⚙️ daten-verbinden🔢 daten-auswerten
Da die Dokumentation der CiviCRM API für Nicht-PHP-Entwickler*innen nicht besonders zugänglich ist, fanden wir es hilfreich, mit dem API-Explorer zu arbeiten. Im API-Explorer kann man mithilfe einer grafischen Benutzeroberfläche direkt in CiviCRM Abfragen an die API konfigurieren und ausprobieren. Das erleichtert es enorm, ...
- ... die richtigen Endpunkte zu finden
- ... zu sehen, wie der
body
bei POST-Requests übergeben wird (siehe unten) - ... die Anfrage so anzupassen, dass sie die gewünschten Daten liefert
Wenn ihr selbst mit der API arbeiten möchtet, ist der API-Explorer ein gutes Werkzeug, um euch in der Entwicklung eurer Lösung zu unterstützen.
In der Basisinstallation findet ihr den API-Explorer unter Unterstützung -> Entwickler -> API-Explorer. Sonst fragt euren CiviCRM-Hosting-Dienstleister.
POST-Request-Parameter aus dem API-Explorer nutzen
Bei POST-Requests an die CiviCRM API kann ein einzelnes Feld namens params
verwendet werden , das eine URL-encoded JSON-Zeichenkette der API-Parameter enthält. URL-Encoding wandelt Sonderzeichen in ein Format um, das sicher in URLs und Formulardaten übertragen werden kann (z.B. wird {
zu %7B
). Dies ermöglicht es, komplexe JSON-Strukturen als einzelnes Formularfeld im POST-Body zu senden, das CiviCRM dann dekodiert und als API-Parameter verarbeitet.
Wenn man eine API-Anfrage konfiguriert hat, hier als Beispiel die Übergabe aller Kontakte, lässt sich weiter unten auf der Seite des API-Explorers der Reiter "REST" auswählen. Hier wird dann für unser Beispiel angezeigt:
curl -X POST -H "$CRM_AUTH" "$CRM_URL" \^
-d 'params=%7B%22limit%22%3A25%7D'
Nützlich für API-Anfragen mit andere Tools ist folgendes: params=%7B%22limit%22%3A25%7D
Beachtet, dass die Anführungszeichen nicht mit kopiert werden sollten.
CiviCRM SearchKit & ChartKit
SearchKit
CiviCRM SearchKit ist eine Erweiterung für CiviCRM, die es Nutzer*innen ermöglicht, komplexe Abfragen an ihre Daten zu stellen. Als Nutzer*in kann man filtern, aggregieren, Felder auswählen und gruppieren.
Wir arbeiten in unseren Beispielen mit einer einfachen Darstellung der Geschlechterverteilung. Diese Suche kann über SearchKit -> Import importiert werden.
[
[
"SavedSearch",
"save",
{
"records": [
{
"name": "geschlecht_statistik",
"label": "geschlecht statistik",
"api_entity": "Contact",
"api_params": {
"version": 4,
"select": [
"COUNT(id) AS COUNT_id",
"gender_id:label"
],
"orderBy": [],
"where": [
[
"gender_id:name",
"IS NOT EMPTY"
]
],
"groupBy": [
"gender_id"
],
"join": [],
"having": []
}
}
],
"match": [
"name"
]
}
]
]
Vorteile
- mächtiges Analysewerkzeug: ihr könnt verschiedene CiviCRM-Datentypen kombinieren, Einträge filtern, relevante Felder auswählen und Kennzahlen wie Anzahl, Mittelwerte, etc. (aggregiert) ausrechnen
- Zugriff auf Ergebnisse über die API: Ihr könnt Daten in SearchKit aggregieren und über die API in andere Tools einbinden. So habt ihr immer die aktuellen Ergebnisse eurer SearchKit-Suchen verfügbar und könnt mit ihnen weiterarbeiten.
Nachteile
- Das Arbeiten mit SearchKit erfordert eine Einarbeitung in datenorientiertes Denken. SearchKit orientiert sich stark an Konzepten von SQL1, was für Personen, die sich nicht damit auskennen, erst einmal herausfordernd sein kann.
- Das User Interface ist nicht immer intuitiv.
Eine Erklärung des Begriffs "SQL" gibt es im Selbstlernmaterial des Civic Data Labs.
Fazit
SearchKit erfordert etwas Einarbeitung, aber dann ist es eine gute und mächtige Option um innerhalb von CiviCRM Daten (deskriptiv) auszuwerten. Die Option, die Ergebnisse über die API abzurufen, eröffnet einen vielversprechenden Lösungsraum insb. für einfache deskriptive Auswertungen wie Output-Monitoring etc., in dem Daten in CiviCRM ausgewertet und aggregiert werden und in einem externen Tool visualisiert werden. Bei datenschutzsensibler und verantwortungsbewusster Aggregation der Daten in SearchKit können dann ggf. auch Tools von US-Anbietern zur Weiterverarbeitung verwendet werden, ohne den Datenschutz zu kompromittieren.
ChartKit
Mit ChartKit kann man basierend auf SearchKit-Suchen einfache Grafiken wie Balken-, Linien- oder Tortendiagramme erstellen.
- Suche in SearchKit anlegen oder bearbeiten
- im SearchKit Editor links Hinzufügen -> Diagramm
- im ChartKit Editor können verschiedene Visualisierungstypen über ein grafisches User Interface konfiguriert werden. Verwendet werden können die Spalten der Ergebnisse der SearchKit Suche.
Für jede Suche können mehrere Visualisierungen erstellt werden.
Chart Kit sollte bei neueren Versionen von CiviCRM vorinstalliert sein. Sonst wendet euch an euren Hosting-Dienstleister.
Vorteile
- ChartKit ist direkt in SearchKit integriert und Visualisierungen sind direkt in CiviCRM gespeichert
- grafische Benutzeroberfläche ist relativ verständlich
- ausreichende Auswahl an Visualisierungen
- ein Button zum Download als PNG oder SVG kann hinzugefügt werden -> praktisch
- wird aktiv weiterentwickelt (z.B. Talk beim CiviCamp Hamburg 2024)
Nachteile
- man kann nicht alle Aspekte der Visualisierungen anpassen (z.B. Farben, bestimmte Marker, ...)
- Visualisierungen können nicht über einen Link mit Externen geteilt, in eine Website eingebettet oder über die API abgerufen werden.
- Visualisierungen sind "Anhängsel" von SearchKit Suchen und können nicht anders sortiert oder angeordnet werden.
Fazit
Chart Kit ist eine gute Option, wenn ihr Datenvisualisierungen v.a. für den internen Gebrauch oder für Berichte ohne große Design-Anforderungen nutzen möchtet. Der Export-Button direkt in der Visualisierung ist sehr praktisch. In der Kombination mit SearchKit sind die Analyse- und Visualisierungsmöglichkeiten sehr umfassend - ihr könnt ChartKit Visualisierungen für alle in CiviCRM Daten erstellen. Es bestehen (noch) Einschränkungen bei der Verfeinerung der Visualisierungen sowie bei der Teilbarkeit aus CiviCRM hinaus. Wenn ihr ansprechendere oder komplexere Visualiserungen oder Dashboard-Funktionalitäten benötigt, solltet ihr daher auf externe Tools zurückgreifen.
Weitere CiviCRM Tools
Reports/Berichte
🔢 daten-auswerten 💬 daten-kommunizieren
Dieser Einführungstext wurde von ChatGPT erstellt.
CiviCRM Reports sind vorgefertigte oder individuell erstellbare Auswertungen, mit denen Organisationen ihre Daten aus CiviCRM (z. B. Kontakte, Spenden, Mitgliedschaften, Events) analysieren können. Sie bieten Filter- und Gruppierungsoptionen, um genau die Informationen sichtbar zu machen, die für Entscheidungen oder Nachweise gebraucht werden. Die Reports können gespeichert, exportiert und auch automatisiert per E-Mail verschickt werden.
Vorteile
- standardisierte Vorlagen
- können als CSV oder direkt als PDF exportiert werden
- Versand via Mail möglich
- einfache Möglichkeit, um "Listen" zu bekommen
Nachteile
- nicht so flexibel und mächtig wie SearchKit
- Ergebnisse können nicht über die API v4 exportiert werden
Civisualize
Civisualize ist eine CiviCRM Erweiterung, mit der Nutzer*innen Grafiken erstellen können. Für die gängigsten CiviCRM Komponenten wie Kontakte, Zuwendungen, Veranstaltungen und Rundschreiben liefert Civisualize einige Überblicksgrafiken mit. Außerdem gibt es ein Mini-Dashboard für Spendentrends ("Donor Trends"). Eine Beschreibung der schon inkludierten Visualisierungen findet sich hier (Englisch). In der Basis-Installation findet ihr Civisualize unter Berichte -> Civisualize.
Eigene bzw. zusätzliche Grafiken können mithilfe der Javascript Bibliotheken d3.js
und dc.js
erstellt werden. Diese Funktion richtet sich jedoch primär an Entwickler*innen, die sich mit SQL, der API von CiviCRM und Javascript auskennen.
Vorteile von Civisualize
- Visualisierungen sind integriert in CiviCRM und leicht auffindbar für alle Nutzer*innen
- vorgefertigte Visualisierungen geben einen ersten deskriptiven Einblick in die gängigsten CiviCRM-Datentypen
- Visualisierungen sind prinzipiell interaktiv und erlauben eine rudimentäre Filterung
Nachteile von Civisualize
- ohne tiefergehende technische Kenntnisse können keine eigenen Visualisierungen erstellt werden. Erfordert viel Zeit zur Einarbeitung.
d3.js
ist ein ziemlich komplex und die Lernkurve ist steil.1- Visualisierungen können nicht als
png
o.ä. exportiert werden - Dashboards / Visualisierungen können nicht mit Externen geteilt werden
- keine Verknüpfung der Datentypen "out of the box" (Ausnahme: Spendentrends-Dashboard).
Selbst die Entwickler*innen der Extension geben dies zu bedenken: "Be warned, d3 is awesome, but the learning curve is steep."
Fazit
Civisualize liefert einige potenziell hilfreiche Grafiken "out of the box" und macht diese zugänglich direkt in CiviCRM. Wenn diese vorgefertigten Visualisierungen hilfreich sind für einen ersten Einblick in die Daten für interne Nutzer*innen, kann eine Installation sinnvoll sein. Die Lernkurve, um eigene Datenvisualisierungen zu erstellen, ist zu steil - gerade für nicht-technische Nutzer*innen -, um einen Einsatz darüber hinaus zu rechtfertigen, außer es ist zwingend notwendig, dass Visualisierungen direkt in CiviCRM auffindbar sind. Civisualize ist kein Tool, welches eine einfache, zugängliche Analyse von Daten ermöglicht.
Use-Case-spezifsche Extensions
Im Rahmen des Datenvorhabens haben wir uns auf CiviCRM-Komponenten und -Extensions konzentriert, die dediziert auf die Analyse und Visualisierung von Daten ausgelegt sind. Aber auch Extensions, die für spezifische Anwendungsfälle (z.B. Spender*innenanalyse, ...) erstellt wurden, haben z.T. Datenauswertungen und -visualisierungen an Bord. Wir freuen uns über Hinweise zu den Datenkapazitäten von "inhaltlichen" Extensions und nehmen sie gerne in die Liste auf.
Contact Categories
Die Extension Contact Categories bietet die Möglichkeit, Kontakte nach Prioritätsgruppen zu kategorisieren. Prioritätsgruppen können eigenständig konfiguriert werden. Datenanalyse und -visualisierung: Als Datenvisualisierung steht ein Flow-Chart zur Verfügung, der die Übergänge von Kontakten zwischen den verschiedenen Kontaktkategorien visualisiert.
Excel & Co.
Microsoft Excel
🔢 daten-auswerten 📊 daten-visualisieren ⚙️ daten-verbinden
Microsoft Excel ist ein häufig genutztes Tabellenkalkulationsprogramm, mit dem ihr Daten aus CiviCRM oder anderen Quellen strukturieren, analysieren und visualisieren könnt. Ihr könnt damit:
- ... CiviCRM-Daten (z. B. Spenden, Mitglieder oder Events) mithilfe von Pivot-Tabellen, Formeln und Filtern auswerten, um z. B. Spendenentwicklungen zu analysieren oder Zielgruppen zu vergleichen (🔢 daten-auswerten)
- ... mithilfe von Diagrammen die Ergebnisse anschaulich darstellen (📊 daten-visualisieren)
- ... mit Power Query (s.u.) Daten automatisch aktuell halten (⚙️ daten-verbinden).
Excel kann sowohl lokal (Desktop-Version) als auch in der Cloud (Excel for the Web) eingesetzt werden.
Vorteile von Excel
- Geringe Einstiegshürde & weit verbreitet: Viele Nutzer*innen kennen Excel bereits, und es entstehen ggf. keine zusätzlichen Kosten, weil Lizenzen bereits vorhanden sind.
- Flexibilität: Excel ermöglicht Datenanalyse, -visualisierung und -management in einem Tool.
- Datenorganisation: in Excel können Daten aus CiviCRM zusammengeführt werden mit Daten aus anderen Quellen
- Integration: Wer die Microsoft Cloud nutzt, kann Excel einfach mit Power BI oder anderen Tools verbinden.
Nachteile von Excel
- "Excel-Parallelwelten": Wenn Nutzer*innen Daten direkt in Excel ändern statt in CiviCRM, entstehen inkonsistente Datenquellen und der Aufwand für die Wiederherstellung einer "Single Source of Truth"1 steigt.
- Datenschutz und Datensouveränität: Bei Excel on the Web müssen Daten mit Microsoft geteilt werden – nicht alle Organisationen möchten / können ihre Daten mit Microsoft teilen.
- Eingeschränkte Visualisierung: Komplexe Dashboards oder maßgeschneiderte Grafiken sind in Excel schwer umsetzbar. Wenn ihr regelmäßiger oder in größerem Umfang auf Dashboards zurückgreifen möchtet, solltet ihr eher auf ein Business Intelligence Tool setzen. Für maßgeschneiderte und komplexere Visualisierungen, die z.B. einmalig für eine Veröffentlichung erstellt werden, sind Programmiersprachen wie Python oder R die beste Wahl.
- Fortgeschrittene Analysen sind in Excel z.T. auch möglich, erfordern aber gute Kenntnis der Funktionen und Formeln. Wenn ihr mittel- bzw. langfristig komplexere Analysemethoden aus dem Bereich Machine Learning2 oder Künstliche Intelligenz3 nutzen möchtet, ist ggf. ein Investment in das Lernen von Python oder R langfristig sinnvoller. Das gleiche gilt für die Analyse von sehr großen Datenmengen (z.B. über 1 Mio. Zeilen).
- Lizenzdschungel: Nicht alle Funktionen sind in jeder Lizenz enthalten. Microsofts Preis- und Lizenzmodelle sind schwer zu durchblicken.
Single Source of Truth (SSOT) bedeutet, dass alle relevanten Daten an einem zentralen, vertrauenswürdigen Ort gespeichert und gepflegt werden – statt in verschiedenen, möglicherweise widersprüchlichen Quellen. So werden Doppelarbeit, Fehler und Unsicherheiten vermieden, weil alle Teams oder Systeme auf dieselben, aktuellen Informationen zugreifen.
Eine Erklärung des Begriffs "Machine Learning" gibt es im Selbstlernmaterial des Civic Data Labs.
Eine Erklärung des Begriffs "Künstliche Intelligenz" gibt es im Selbstlernmaterial des Civic Data Labs.
Fazit
Aufgrund seiner Flexibilität ist und bleibt Excel eine gute Option, um diverse Aufgaben rund um die Analyse und Visualisierung von CiviCRM-Daten zu bewältigen. Es ist zugänglich für viele Nutzer*innen. Bei größeren Datenmengen oder höheren Anforderungen an Auswertung, Visualisierung oder Weiterverbreitung von Daten und Ergebnissen sind spezialisierte Tools fast immer eine bessere Wahl.
Power Query
Power Query ist ein Werkzeug in Excel und Power BI, das Daten aus verschiedenen Quellen (z. B. CiviCRM-API, Datenbanken, Excel-Dateien) importiert, bereinigt und für Analysen aufbereitet. Es automatisiert wiederkehrende Schritte, spart Zeit und reduziert Fehler.
Für die Analyse von CiviCRM-Daten sind v.a. Power Query's Features zum Datenimport relevant. Wir haben Power Query verwendet, um Daten mithilfe der CiviCRM API in Excel zu importieren (siehe unser Experiment zu SearchKit + Excel). Aber auch die anderen Optionen können nützlich sein, z.B. der Import aus anderen Excel-Dateien.
Vorteile von Power Query
- Direkter Datenimport aus CiviCRM mithilfe der CiviCRM API: Ihr könnt Daten automatisch aktualisieren und spart euch den manuellen Schritt des Datenexports aus CiviCRM. Siehe unser Experiment zu SearchKit + Excel.
- Flexibilität: Power Query kann mehr als nur API-Daten laden – eine Einarbeitung lohnt sich.
Nachteile von Power Query
- Nicht ganz einfache Bedienung: Die Benutzeroberfläche ist unübersichtlich, und für fortgeschrittene Funktionen müsst ihr ggf. lernen, in Power Query in der Sprache "M" zu programmieren. Die Dokumentation zu M ist nicht sehr umfangreich und wenn man LLMs um Hilfe fragt, bekommt man manchmal Halluzinationen zurück.
- in Excel für das Web kann man Power Queries nicht bearbeiten, sondern nur ausführen. Das ist unpraktisch, wenn kollaborativ im Browser gearbeitet wird und Queries häufig editiert werden müssen.
- Bewusster Umgang mit Sicherheit nötig: Wenn ihr Power Query verwendet, um mit der CiviCRM API zu kommunizieren, müsst ihr euren CiviCRM API-Schlüssel in der Excel Datei hinterlegen. Das bedeutet, dass ihr diese Datei nicht direkt mit Externen teilen solltet, da diese sonst Zugriff auf euren API-Schlüssel und somit Daten in eurer CiviCRM-Instanz bekommen könnten.
Fazit
Power Query ist eine sinnvolle Option, um CiviCRM-Daten (teil-)automatisch in Excel zu integrieren – das reduziert manuelle Fehler und spart Zeit. Allerdings sollte der Einsatz nur mit einem hohen Bewusstsein für Datensicherheit erfolgen, um API-Schlüssel nicht versehentlich weiterzugeben. Falls bereits (zu) viele Excel-Dateien und -Analysen existieren, hilft Power Query, zentrale Referenzdatensätze zu erstellen, auf die andere Excel-Dateien mit Power Query zugreifen können. Dadurch lassen sich Datenkonsistenz verbessern und Ordnung in die Analyseprozesse bringen.
Google Sheets
Der Text dieses Abschnitts wurde von Mistral erstellt und dann inhaltlich und redaktionell überarbeitet und ergänzt.
🔢 daten-auswerten 📊 daten-visualisieren ⚙️ daten-verbinden
Google Sheets ist die kostenlose, webbasierte Tabellenkalkulation von Google Workspace, die sich besonders für kollaborative Datenanalyse eignet. Ihr könnt damit Daten aus CiviCRM oder anderen Quellen analysieren, visualisieren und in Echtzeit gemeinsam bearbeiten.
Vorteile von Google Sheets
- Echtzeit-Kollaboration in der Cloud: Mehrere Nutzer*innen können gleichzeitig an einer Datei in der Cloud arbeiten.
- Einfache Integration: Verbindung mit Google Drive, Data Studio und anderen Google-Diensten.
- Automatisierung: Mit Google Apps Script (s.u.) könnt ihr Daten aus CiviCRM importieren.
Nachteile von Google Sheets
- Performanz bei großen Datensätzen: Bei großen Datenmengen (ab ~100.000 Zeilen) wird Sheets langsam.
- Weniger leistungsfähig als Excel: Komplexe Formeln oder Pivot-Tabellen sind möglich, aber nicht so mächtig.
- Datenschutz und Datensouveränität: Daten werden auf Google-Servern gespeichert – für manche Organisationen keine Option.
Fazit: Google Sheets
Wenn ihr Google Sheets bereits verwendet, ist es eine gute Option, um kollaborativ und cloud-basiert mit euren CiviCRM-Daten zu arbeiten. Sheets eignet sich besonders gut für einfache bis mittelkomplexe Datenauswertungen und Visualisierungen für den internen Gebrauch. Aufgrund der Datenschutzproblematik solltet ihr vermeiden, personenbezogene Daten in Google Sheets zu speichern. Eine Option kann sein, Daten in SearchKit zu aggregieren.
Google Apps Script
Google Apps Script ist eine JavaScript-basierte Programmiersprache, mit der ihr u.a. Abläufe in Google Sheets automatisieren könnt. Mit AppsScript können wir CiviCRM-Daten mithilfe der CiviCRM-API direkt in Google Sheets laden.
Vorteile von Google Apps Script
- Kostenlos und integriert: Keine zusätzliche Software nötig – läuft direkt in Google Sheets.
- Direkter Datenimport aus CiviCRM mithilfe der CiviCRM API: Ihr könnt Daten automatisch aktualisieren und spart euch den manuellen Schritt des Datenexports aus CiviCRM. Siehe unser Experiment zu SearchKit + Google Sheets.
Nachteile von Google Apps Script
- Erfordert Grundkenntnisse in JavaScript.
- Eingeschränkte Performance: Bei komplexen Skripten oder großen Datenmengen kann es langsam werden.
- Abhängigkeit von Google: Skripte laufen nur in der Google Workspace-Umgebung.
Fazit: Google Apps Script
Mit Google Apps Script könnt ihr ähnlich wie mit Power Query Daten von der CiviCRM API und anderen Datenquellen (teil-)automatisiert in Google Sheets laden. So könnt ihr einfache Datenintegrationen selbst umsetzen. Der Einsatz erfordert jedoch Grundkenntnisse in JavaScript. Für komplexe Datenpipelines sind Python, R oder spezialisierte ETL-Tools oft die bessere Wahl.
Libre Office Calc
🔢 daten-auswerten 📊 daten-visualisieren
LibreOffice Calc ist das Tabellenkalkulationsprogramm der kostenlosen Open-Source LibreOffice-Suite – ähnlich wie Microsoft Excel, aber ohne Lizenzkosten und mit offenem Quellcode. Ihr könnt damit Daten analysieren, Berechnungen durchführen, Pivot-Tabellen erstellen und Diagramme generieren. Calc unterstützt gängige Formate wie XLSX und bietet viele Funktionen für Formeln, Filter und Datenvisualisierung, ist aber etwas weniger leistungsstark als Excel bei extrem großen Datenmengen.
Fazit
Wenn ihr auf Open Source setzen wollt, ist Libre Office Calc eine gute und solide Wahl, die euch einen ähnlichen Funktionsumfang bietet in Bezug auf die Analyse und Visualisierung von Daten. Abstriche müsst ihr bei der Integration in Cloud-Umgebungen und bei den Fähigkeiten zur (Teil-)Automatisierung machen - eine wirklich funktionale Power Query Alternative fehlt nämlich bis jetzt.
OnlyOffice
🔢 daten-auswerten 📊 daten-visualisieren
Eine weitere Alternative ist die Tabellenkalkulation der ONLYOFFICE-Suite, die besonders auf kollaboratives Arbeiten in Echtzeit ausgelegt ist. Ein großer Vorteil gegenüber Libre Office Calc ist die Integration in Cloud-Dienste (z. B. Nextcloud, ownCloud) und die Möglichkeit, Dokumente gleichzeitig mit mehreren Nutzer*innen zu bearbeiten.
Business Intelligence Tools
🔢 daten-auswerten 📊 daten-visualisieren 💬 daten-kommunizieren
Business Intelligence Tools (BI-Tools) sind Softwarelösungen, die Organisationen dabei unterstützen, Daten zu sammeln, zu analysieren, zu visualisieren und in verwertbare Erkenntnisse umzuwandeln. Sie helfen, fundierte Entscheidungen zu treffen, indem sie komplexe Datenmengen verständlich und zugänglich machen.
Metabase
🔢 daten-auswerten 📊 daten-visualisieren 💬 daten-kommunizieren
Metabase ist eine Open-Source-Software für Business Intelligence, die Organisationen dabei unterstützt, Daten zu analysieren und in interaktiven Dashboards zu visualisieren. Die Anwendung ermöglicht es Nutzer*innen, auch ohne SQL-Kenntnisse Abfragen durchzuführen und Dashboards und Berichte zu erstellen. Metabase ist mit einer Vielzahl von Datenbanken kompatibel und richtet sich an Anwender*innen, die Daten zugänglich und nutzbar machen möchten.
Man kann Metabase entweder selbst hosten, von einem IT-Dienstleister hosten lassen oder bestehende Hosting-Angebote nutzen:
Vorteile
- ermöglicht eigenständige Exploration von Daten
- zahlreiche Visualisierungstypen
- viele Optionen zur Kommunikation von Ergebnissen: automatsierte Email, Export als Bilddatei oder PDF, Teilen über öffentlichen Link, Einbettung von Dashboards und Grafiken in Website (wie hier)
Nachteile
- Kosten für Hosting relativ hoch
- in der Community Version können Farbpaletten nicht angepasst werden
- erfordert Einarbeitung und Auseinandersetzung mit Datenkonzepten wie z.B. "Joins" (Zusammenführen von Tabellen).
Fazit
Metabase (und andere BI Tools) sind sinnvoll, wenn ihr mittel- und langfristig eure Daten selbstbestimmt und eigenständig v.a. deskriptiv auswerten wollt. Mit Metabase (und jedem anderen BI Tool) werdet ihr selbst zu Datenanalyst*innen und könnt agil und nach Bedarf neue Visualisierungen und Dashboards anlegen. Komplexe Analysen wie Machine Learning oder KI könnt ihr im Bereich Business Intelligence nicht erwarten. Dafür gibt es nützliche Features, um eure Daten und Datenvisualisierungen mit externen Stakeholdern zu teilen, z.B. über Einbettungen oder öffentliche Links.
Den Vorteilen von Metabase (bzw. BI Tools) stehen nötige Investitionen in Kompetenzaufbau und Infrastruktur gegenüber. Metabase ist ein großes Tool mit vielen Funktionen. Deshalb braucht es Zeit und die Bereitschaft, sich einzuarbeiten und dazuzulernen. Hinzu kommt, dass bestehende Hosting-Optionen nicht günstig sind und Self-Hosting ohne interne Kompetenzen nicht möglich ist. Die Zusammenarbeit mit bestehenden IT-Dienstleistern ist eine Möglichkeit, wird aber natürlich trotzdem etwas kosten.
Insgesamt ist das Investment in ein Business Intelligence Tool nicht für alle CiviCRM-Organisationen notwendig. Es ist aber sehr sinnvoll, wenn Daten perspektivisch für euch eine zentrale Rolle spielen werden.
Anleitung: Eine Datenbankverbindung in Metabase hinzufügen
Damit Metabase auf die Daten aus eurer Datenbank (z.B. CiviCRM Datenbank oder eine Managed Datenbank) zugreifen kann, müsst ihr eine Verbindung zur Datenbank in Metabase hinzufügen.
- Als Admin in Metabase einloggen.
- Oben rechts auf das Zahnrad → Admin settings klicken.
- Databases wählen → Add a database.
- Datenbank-Typ auswählen (z. B. Postgres, MySQL, SQL Server …).
- Verbindungsdaten eintragen:
- Name
- Host / IP
- Port
- Datenbankname
- Benutzer
- Passwort
- ggf. Connection-String
- Optional: SSL oder SSH-Tunnel aktivieren, falls nötig.
- Save changes (Metabase testet die Verbindung).
- Danach: Sync database schema und ggf. Re-scan ausführen, damit Tabellen/Spalten sichtbar sind.
- Falls Probleme auftreten: Netzwerk/Firewall, Port, DB-Zugriffsrechte und Metabase-Logs prüfen.
In diesem YouTube Video könnt ihr mitverfolgen, wie die Schritte sind. Die schriftliche Dokumentation kann auch hilfreich sein.
Mini-Anleitung: Daten auswerten und visualisieren in Metabase
Um eure Daten in Metabase auszuwerten und zu visualisieren, stellt ihr Fragen (en: Questions) an eure Daten. Diese Fragen könnt ihr Sammlungen (en: Collections) oder Dashboards hinzufügen. Einen Überblick über die wichtigsten Metabase-Konzepte findet ihr hier (auf Englisch).
Sammlungen
Sammlungen sind wie Ordner, in denen ihr eure Fragen und Dashboards sortieren könnt.
Fragen
Zentral für die Analyse und Visualisierung von Daten in Metabase sind Fragen (en: Questions). Fragen könnt ihr entweder über mit dem grafischen Query-Editor oder mit SQL "stellen". Wir empfehlen euch, den grafischen Editor zu verwenden. Konzeptionell ähnelt der Editor SearchKit: Man kann Datensätze zusammenfügen, Felder auswählen, Einträge filtern, Daten aggregieren und Kennzahlen auswählen.
- Um eine neue Frage anzulegen, klickt oben rechts den "Neu" Button -> Frage.
- Verwendet die Bedienelemente, um die Daten auszuwählen, zu filtern, ...
- Ihr könnt die Pfeile rechts der Elemente verwenden, um eine Vorschau eurer Frage anzuzeigen.
- Sobald ihr zufrieden seid mit den Daten eurer Frage, klickt auf "Darstellen". Das bringt euch zur Visualisierung eures Ergebnisses.
- Metabase wählt eine passende Visualisierung aus. Ihr könnt eine andere Visualisierung wählen, in dem ihr unten links auf "Visualisierung" klickt und euch durch die Optionen klickt.
Über den Button "Editor" oben rechts könnt ihr jederzeit zurück zum Editor zurückkehren um eure Anfrage anzupassen.
Am Ende speichert ihr eure Frage.
Ressourcen: Metabase hat umfassendes Lernmaterial auf der Website, z.B. eine Einführung in "Questions".
Dashboards
In Dashboards könnt ihr eure Fragen zusammen darstellen. Ihr könnt Tabs erstellen, Filter für das ganze Dashboard hinzufügen, Texte und Überschriften einfügen. Ihr könnt direkt neue Fragen in ein Dashboard hinzufügen. Darüber hinaus bieten Metabase Dashboards noch nützliche eingebaute Funktionen wie "Drill-Downs", mit denen man einzelne Daten direkt im Dashboard eingehender explorieren kann.
Ein neues Dashboard erstellt ihr mithilfe des blauen "Neu" Buttons oben rechts.
Eine Einführung zu Dashboards (in Englisch) findet ihr hier. Tiefergehende Tutorials sind im Learn-Bereich zu finden.
Tipp: Wenn ihr Fragen in der Dashboard-Ansicht ändern möchtet (z.B. weil ihr vergessen habt, zu filtern), dann geht das nur, wenn ihr den Dashboard-Editor-Modus über "Speichern" verlasst. Dann könnt ihr die einzelnen Fragen/Visualisierungen über das drei Punkte Dropdown -> Ändere Frage anpassen (siehe Screenshot).
Daten organisieren in Metabase
Wenn ihr feststellt, dass ihr bei der Erstellung von Fragen immer die gleichen Daten zusammenführt, filtert oder berechnet, dann sind die Funktionen Modelle und Metriken einen Blick wert. Modelle sind abgeleitete Tabellen bzw. gespeicherte Fragen, die Daten kuratieren und als Ausgangspunkt für neue Analysen dienen können. Wir haben z.B. ein Modell für "Kontakte" erstellt, welches die Geschlechtsoptionen schon an die Grundtabelle anspielt. So sparen wir uns diesen Schritt bei weiteren Fragen. Mit Metriken erstellt ihr eure Aggregationen nur einmal, speichert sie ab und könnt sie dann immer verwenden.
Alternativen: Apache Superset, Power BI und Tableau
🔢 daten-auswerten 📊 daten-visualisieren 💬 daten-kommunizieren
Alternativen zu Metabase sind u.a.:
- Apache Superset: komplett Open Source
- Power BI: Business Intelligence Tool in der Microsoft Umgebung
- Tableau: etabliertes BI-Tool aus den USA. Kann auch selbst gehostet werden (Lizenz muss trotzdem erworben werden).
- Looker: BI Tool in der Google Umgebung
Managed Datenbank
Managed Datenbanken sind cloud-basierte Datenbankdienste, bei denen sich der Anbieter um die technische Infrastruktur, Wartung und Skalierung kümmert. Der Anbieter übernimmt Aufgaben wir das Durchführen von automatische Updates oder Backups.
Die Hauptvorteile liegen in der Zeitersparnis durch wegfallende Server-Administration. Nachteile gegenüber dem Self-Hosting sind höhere Kosten, Vendor Lock-in und eingeschränkte Konfigurationsmöglichkeiten.
Im Kontext der Visualisierung und Analyse von CiviCRM-Daten können managed Datenbanken als sogenanntes Data-Warehouse zum Einsatz kommen. Ein Data-Warehouse ist eine Datenbank, die speziell für Analysen und Berichte optimiert ist und Daten aus verschiedenen Quellen sammelt und strukturiert.
Wir konzentrieren uns in diesem Projekt auf relationale Datenbanken mit SQL(Structured Query Language). Relationale Datenbanken organisieren Daten in Tabellen mit Zeilen und Spalten, ähnlich wie Excel-Tabellen. Die Tabellen können über gemeinsame Spalten (Keys) miteinander verknüpft werden. SQL ist die Standardsprache für das Abfragen und Verwalten dieser Datenbanken.
Serverless Datenbanken
Serverless ist eine spezielle Form von Managed Datenbanken mit zusätzlichen Vorteilen. Normalerweise bezahlt man bei managed Datenbaken für die permanente Nutzung eines Servers, auf der die Datenbank läuft. Wie der Name beschreibt, fällt dies bei serverless jedoch weg. Konkret bedeutet das Pay-per-Use-Bezahlung nur für tatsächlich verbrauchte Ressourcen und die Möglichkeit des "Cold Start". Dies bedeutet, dass die Datenbank bei Inaktivität pausieren und bei Bedarf reaktiviert werden kann.
Warum ist Serverless ideal für CiviCRM-Analysen? Bei der Nutzung eine Datenbank als externes Data Warehouse wird diese typischerweise nicht kontinuierlich abgefragt, sondern hauptsächlich für periodische Berichte und Analysen genutzt. Serverless bietet daher Kosteneffizienz bei unregelmäßiger Nutzung.
Grafische Nutzeroberfläche statt SQL
SQL schreiben zu können ist ein nützlicher Skill; es zu lernen erfordert jedoch Zeit. Eine Alternative ist die Verwaltung einer Datenbank über grafische Nutzeroberflächen.
Moderne managed Datenbanken bieten oft webbasierte Oberflächen, die es ermöglichen, Tabellen zu erstellen, Daten einzufügen und anzuzeigen, ohne SQL-Code schreiben zu müssen. Diese Oberflächen funktionieren ähnlich wie Excel und reduzieren die Einstiegshürde erheblich. Gleichzeitig bleibt die Option bestehen, bei Bedarf auf SQL-Befehle zurückzugreifen.
Neon
Neon ist eine serverless PostgreSQL-Datenbank, die sich komplett im Browser über eine intuitive GUI verwalten lässt. Wir haben uns bei unseren Experimenten für die Nutzung Neon entschieden, weil es serverless ist und gleichzeitig eine benutzerfreundliche Weboberfläche bereitstellt.
Vorteile
- GUI-Management: Tabellen können direkt im Browser erstellt und verwaltet werden
- PostgreSQL: Vollständig kompatibel mit dem dem weit verbreitenden SQL-Flavor Postgres
- Automatische Backups und Sicherheit
- Kostenloser Plan für kleinere Projekte verfügbar
- Datenbanken können in der EU betrieben werden
Nachteile
- Nicht Open Source
- Bei sehr intensiver Nutzung können Kosten steigen
- Weniger Kontrolle über die Infrastruktur (Neon nutzt AWS oder Azure in der EU)
Betrieb
Neon eignet sich besonders gut für CiviCRM-Analysen, da die Datenbank typischerweise nicht kontinuierlich abgefragt wird, sondern hauptsächlich für periodische Berichte und Analysen genutzt wird. Die serverless Architektur und die EU-Verfügbarkeit machen es zur idealen Lösung für deutsche Organisationen.
Anlegen einer Datenbank und Tabelle
Arbeite dich durch das Neon Setup bis zu Onboarding. Nun steht dir eine Datenbank zur Verfügung!
Hier wird erklärt wie Neon im Browser bedient werden kann und Tabellen erstellt werden können. Für die Erstellung von Tabellen kann auch der SQL Editor verwendet werden.
Alternativen
Supabase
Supabase bietet ähnliche Funktionen wie Neon, ist jedoch mehr auf Echtzeitanwendungen ausgerichtet und nicht serverless.
Scaleway Serverless SQL
Scaleway ist ein französischer Anbieter einer umfangreichen Zahl an Cloud-Angeboten, bietet jedoch für serverless Datenbanken eine weniger umfangreicherer GUI als Neon.
Workflow Automation Tools
🔢 daten-auswerten
⚙️ daten-verbinden
Workflow Automation Tools sind browserbasierte Anwendungen, über die man einzelne Schritte, wie das Laden, Senden und Verarbeiten von Daten direkt miteinander verknüpfen und automatisieren kann. Viele Workflow Automation Tools sind dabei nicht auf Daten spezialisiert, sondern es lässt sich Beliebiges verknüpfen und automatisieren. Auf Daten bezogen lassen sich diese Tools auch dem Feld der Data Orchestration zuordnen. Wir legten jedoch den Fokus auf Tools, die primär über eine zugängliche graphische Nutzungsoberfläche funktionieren, was bei vielen dedizierten Data Orchestration Tools, die oft als Paket für Programmiersprachen wie Python existieren, oft nicht der Fall ist.
Gemeinsam ist diesen Tools, dass Aktionen in Schritten, oft Knoten genannt, durchgeführt werden. Knoten erhalten Inputs und produzieren Outputs, die wiederum zu Inputs eines anderen Knoten werden können. So entsteht sowohl mit Bezug auf die Reihenfolge der Ausführung, also auch mit Bezug auf den Fluss der Daten ein Pfad bzw. Flow. Ein verwandtes Konzept ist das des DAG (Directed acyclic graph).
Workflow Automation Tools sind hilfreich, um Prozesse wie Datenexporte oder Verarbeitung nicht wiederholt zeitaufwendig manuell erledigen zu müssen. Gleichzeitig sind sie eine Alternative dazu, Automatisierungen komplett selbst zu programmieren. Somit sind sie zugänglicher für Daten-Anfänger:innen bzw. Menschen, die Skills in anderen Bereichen haben. Oft ist jedoch der Modus, dass man standardmäßig Flows mit Klicken baut, jedoch wenn man es für sinnvoll erachtet, in den Knoten mit Programmieren arbeiten kann.
Die folgende Tabelle zeigt eine unvollständige Übersicht (Stand 23.09.2025) über solche Tools und verdeutlicht deren Vielzahl.
Name | Website | Vollständig OSS | Kostenloser Plan | SaaS-Preis ab (monatlich) | Komplexität Selbst-Hosting (1–10) | DSGVO-Hinweise SaaS | Konfig. mit GUI | Konfig. mit Code | Git-basiert | Allgemeine Hinweise |
---|---|---|---|---|---|---|---|---|---|---|
Pipedream | https://pipedream.com | Nein | Ja | $49 | – | Unklar: Privacy & Security (GDPR) | Ja | Ja | Nein | KI-Pipeline-Builder-Assistent |
n8n | https://n8n.io/ | Ja | Nein | $24 | 3 | Azure in Frankfurt: GDPR | Ja | Ja | – | – |
Kestra | https://kestra.io/ | Ja | Nein | Enterprise (unbekannt) | 4 | – | Nein | Ja | Ja | Komplex mit YAML für nicht-technische Anwender |
Zapier | https://zapier.com/ | Nein | – | $30 | – | – | – | – | – | – |
Automatisch | https://automatisch.io | Ja | Ja | $20 | – | – | – | – | – | Begrenzter SQL-Adapter (nur Postgres, wenige Funktionen) |
Make | https://www.make.com | Nein | Ja | $0 / $9 | – | AWS in der EU: Make Sub-Processors (Juni 2025) | – | – | – | Auswählen, dass in EU gehostet |
KNIME | https://www.knime.com | Nein | – | – | – | – | – | – | – | – |
Activepieces | https://www.activepieces.com/ | Ja | Ja | $25 | – | Keine Informationen gefunden | – | – | – | – |
Rudderstack | https://www.rudderstack.com/ | Ja | – | – | – | – | – | – | – | Wahrscheinlich zu vertriebsorientiert |
In diesem Projekt haben wir uns für das Testen von n8n und Kestra entschieden, da wir Priorität auf Open Source, die Möglichkeit zum Self-Hosting und ausreichende Funktionen für Data Orchestration legten.
n8n
Vorteile
- Intuitive Klick-Umgebung
- Große Community
Nachteile
- Begrenzte Programmierumgebung
Kestra
Vorteile
- Quasi unbegrenzte Möglichkeiten und viele Wege ein Problem zu lösen
- Flows liegen als Datei (yaml) vor und können so leicht persistiert werden
Nachteile
- Unbekannter als andere Tools
- Viele Probleme lassen sich nur mit Programmieren lösen
- Umständlich, Änderungen in Flows zu testen
Zusätzliches
ℹ️ Im Repository findet ihr in dem Ordner supporting_code/kestra_flows
Beispiel-Flows dafür, wie ihr Daten über die API oder die Datenbank laden und weitersenden könnt.
Python und R
Dieser Text ist ein vorläufiger Entwurf, der von Mistral erstellt wurde. Er wird noch angepasst und mit unseren eigenen Erkenntnissen überarbeitet.
Python
🔢 daten-auswerten 📊 daten-visualisieren 💬 daten-kommunizieren ⚙️ daten-verbinden
Python ist eine sehr vielseitige und populäre Programmiersprache. Mit Python könnt ihr Daten aus CiviCRM abrufen, transformieren, analysieren und in interaktiven Dashboards oder Notebooks darstellen.
Datenintegration mit CiviCRM
Python bietet verschiedene Möglichkeiten, um auf CiviCRM-Daten zuzugreifen:
- API-Anbindung: Mit Bibliotheken wie requests oder httpx können direkt API-Anfragen an CiviCRM gestellt werden.
- Datenimport: Mit pandas können CSV- oder JSON-Exporte aus CiviCRM eingelesen und weiterverarbeitet werden.
- Automatisierung: Skripte können regelmäßig ausgeführt werden, um Daten aktuell zu halten.
Analyse und Visualisierung
Für die Analyse und Visualisierung von CiviCRM-Daten stehen zahlreiche Bibliotheken zur Verfügung:
- Datenanalyse: pandas und numpy ermöglichen komplexe Datenanalysen, Filterungen und Transformationen.
- Statistische Analysen: scipy und statsmodels bieten erweiterte statistische Funktionen.
- Visualisierung: matplotlib, seaborn und plotly helfen, Daten in ansprechenden Grafiken darzustellen.
- Interaktive Dashboards: Mit dash oder streamlit können interaktive Dashboards erstellt werden.
- Notebooks: Jupyter Notebooks oder JupyterLab ermöglichen eine interaktive Datenanalyse und Dokumentation in einem Dokument.
Potenziell interessante Frameworks und Tools
- pandas – Datenanalyse und -manipulation
- numpy – Numerische Berechnungen
- matplotlib – Grundlegende Visualisierungen
- seaborn – Statistische Datenvisualisierung
- plotly – Interaktive Visualisierungen
- dash – Interaktive Dashboards
- streamlit – Schnelle Erstellung von Web-Apps für Daten
- Jupyter Notebooks – Interaktive Datenanalyse und Dokumentation
R
🔢 daten-auswerten 📊 daten-visualisieren ⚙️ daten-verbinden
R ist eine Programmiersprache und Umgebung, die speziell für statistische Datenanalyse und Visualisierung entwickelt wurde. Sie eignet sich hervorragend für die Integration, Analyse und Darstellung von CiviCRM-Daten, insbesondere wenn statistische Auswertungen im Vordergrund stehen.
Datenintegration mit CiviCRM
R bietet verschiedene Pakete, um Daten aus CiviCRM zu importieren und zu verarbeiten:
- API-Anbindung: Mit Paketen wie httr oder curl können direkt API-Anfragen an CiviCRM gestellt werden.
- Datenimport: Pakete wie readr oder jsonlite ermöglichen das Einlesen von CSV- oder JSON-Dateien aus CiviCRM.
- Automatisierung: R-Skripte können regelmäßig ausgeführt werden, um Daten zu aktualisieren.
Analyse und Visualisierung
R bietet eine Vielzahl von Paketen für die Analyse und Visualisierung von Daten:
- Datenanalyse: dplyr und tidyr ermöglichen das Bereinigen, Transformieren und Analysieren von Daten.
- Statistische Analysen: R bietet eine breite Palette an Paketen für statistische Analysen, darunter stats und ggplot2.
- Visualisierung: ggplot2 ist eines der mächtigsten Pakete für Datenvisualisierung und ermöglicht die Erstellung hochwertiger Grafiken.
- Interaktive Dashboards: Mit shiny können interaktive Webanwendungen und Dashboards erstellt werden.
- Notebooks: R Markdown und RStudio ermöglichen die Erstellung von interaktiven Berichten und Notebooks, die Analyse und Dokumentation kombinieren.
Potenziell interessante Pakete und Tools
- dplyr – Datenmanipulation
- tidyr – Datenbereinigung
- ggplot2 – Datenvisualisierung
- shiny – Interaktive Dashboards und Web-Apps
- httr – API-Anfragen
- jsonlite – JSON-Datenverarbeitung
- R Markdown – Interaktive Berichte und Notebooks
- RStudio – Entwicklungsumgebung für R
Fazit: Python
Python ist eine hervorragende Wahl, wenn CiviCRM-Daten nicht nur analysiert, sondern auch in automatisierte Prozesse, interaktive Dashboards oder Webanwendungen integriert werden sollen. Die Sprache bietet eine große Flexibilität und eine umfangreiche Bibliothek an Tools für Datenanalyse, Visualisierung und Automatisierung. Besonders für Teams, die bereits mit Python arbeiten oder eine skalierbare Lösung für komplexe Datenanalysen suchen, ist Python ideal.
Fazit: R
R ist die beste Wahl, wenn der Fokus auf statistischen Analysen und hochwertigen Visualisierungen liegt. Die Sprache bietet eine umfassende Sammlung von Paketen für Datenanalyse und -darstellung, insbesondere für wissenschaftliche oder detaillierte statistische Auswertungen. Mit Tools wie shiny und R Markdown können interaktive Berichte und Dashboards erstellt werden. R eignet sich besonders für Nutzer, die statistische Tiefe und publikationsreife Grafiken benötigen.
Self-Hosting
Für einige der genannten Tools gibt es die Option, diese selbst zu hosten. Das bedeutet, das man mehr oder weniger selbst für den Betrieb und das Aufsetzen verantwortlich ist. Doch auch hier gibt es Möglichkeiten, die den Aufwand und die notwendigen Fähigkeiten minimieren. Einige davon sollen hier aufgelistet werden.
- Elestio, z.B. für Kestra
- Coolify, z.B. für Metabase
- Civioneclick für CiviCRM
Fazit
folgt, sobald wir unsere Recherchen finalisiert haben :)
Über das Datenvorhaben
Die Inhalte dieser Seite wurden von Jonas Stettner und Leo Preu (beide CorrelAid e.V., tätig im Civic Data Lab) erstellt. Zum Teil haben LLMs die beiden bei der Recherche, Übersetzung und Formulierung unterstützt. Wenn signifikante Teile von Seiten oder Sektionen von LLMs geschrieben sind, haben wir dies separat gekennzeichnet.
Diese Seite sowie Code und Dateien der Experimente finden sich in einem GitHub Repository.
Lizenz
- Attributionsvorschlag: "CiviCRM Datan analysieren und visualisieren" von Leo Preu (CorrelAid e.V. / Civic Data Lab) und Jonas Stettner (CorrelAid e.V. / Civic Data Lab), abgerufen am DATUM. Lizensiert unter CC-BY 4.0.
- Attributionsvorschlag für einzelne Abschnitte / Unterseiten: "[Unterseite]" in "CiviCRM Datan analysieren und visualisieren" von Leo Preu (CorrelAid e.V. / Civic Data Lab) und Jonas Stettner (CorrelAid e.V. / Civic Data Lab), abgerufen am [Datum]. Lizensiert unter CC-BY 4.0.
Beitragen
Du möchtest etwas beitragen zu dieser Website? Darüber freuen wir uns sehr!
Wenn du dich mit Git, GitHub und Markdown auskennst, freuen wir uns über einen Issue und dazugehörigen Pull Request im GitHub Repository. Du hattest beim Lesen des vorherigen Satzes nur Fragezeichen und innere "hä?" Momente? Gar kein Problem! Schreib uns gern eine Email an leo.p@correlaid.org mit deinen Erkenntnissen. Wir kümmern uns dann um die Online-Stellung!