Überblick
Berechnete Felder (Computed Fields) ermöglichen deklarative Aggregationen über verknüpfte Datensätze: COUNT, SUM, AVG, MIN, MAX, EXISTS und ConcatDistinct. Sie berechnen beispielsweise „Anzahl offener Vorgänge pro Kunde“ automatisch — ohne dynamischen C#-Code.
Berechnete Felder ergänzen bestehende Konzepte wie Joins (liefern Einzelspalten aus 1:1-Beziehungen) und Spaltenanreicherungen (transformieren vorhandene Werte). Im Gegensatz dazu liefern berechnete Felder einen aggregierten Skalarwert über eine 1:n-Beziehung.
COUNT(Vorgänge WHERE Status=Offen) am Kundendatensatz berechnet. Das Ergebnis erscheint als zusätzliche Spalte in der Datenquelle — ohne eine Zeile Code.
Schritt-für-Schritt-Anleitung
-
Berechnetes Feld am Datenobjekt anlegen
Navigieren Sie im Admin-Bereich zur gewünschten Datenquelle und wechseln Sie zum Tab „Ausgabespalten“. Klicken Sie in der Toolbar auf den Button „Berechnete Spalte“ (Taschenrechner-Symbol). Es wird ein neues, ungebundenes Feld angelegt und die Konfiguration öffnet sich automatisch.
-
Aggregationstyp wählen
Wählen Sie im Konfigurationsdialog den gewünschten Aggregationstyp aus der Dropdown-Liste. Die verfügbaren Typen finden Sie in der Tabelle weiter unten. Bei COUNT und EXISTS ist kein Aggregationsfeld erforderlich.
-
Quell-Entity und Schlüsselfelder definieren
Konfigurieren Sie die Beziehung zum Ziel-Objekt:
Feld Beschreibung Ziel-Objekt Pflicht Das verknüpfte Objekt, über das aggregiert wird (z. B. „Vorgang“, „Position“) Lokales Schlüsselfeld Pflicht Das Feld im aktuellen Objekt, das die Verknüpfung herstellt (z. B. KundeId)Fremd-Schlüsselfeld Pflicht Das Feld im Ziel-Objekt, das den Fremdschlüssel enthält (z. B. KundeId)Aggregationsfeld Optional Das Feld im Ziel-Objekt, auf das die Aggregation angewendet wird (bei SUM, AVG, MIN, MAX, ConcatDistinct erforderlich) -
Filterbedingung setzen (optional)
Um nur bestimmte verknüpfte Datensätze in die Aggregation einzubeziehen, fügen Sie eine Filterbedingung hinzu. Sie können mehrere Filterregeln kombinieren (z. B.
Status = OffenundTyp ≠ Intern). Die Filter nutzen die bestehende UDM-Filter-Infrastruktur (UdmFilterGroup). -
Feld in Datenquelle/Dialog einbinden
Passen Sie im Grid Ausgabename, Titel und Datentyp an. Speichern Sie die Datenquelle. Das berechnete Feld steht nun in Ansichtselementen und Dialogen zur Verfügung und wird bei jeder Datenabfrage automatisch befüllt.
Aggregationstypen im Überblick
| Typ | Beschreibung | Aggregationsfeld | Beispiel |
|---|---|---|---|
COUNT |
Zählt die Anzahl der verknüpften Datensätze | Nicht erforderlich | Anzahl Aufgaben pro Projekt |
SUM |
Bildet die Summe eines numerischen Feldes | Pflicht | Gesamtbetrag aller Rechnungspositionen |
AVG |
Berechnet den Durchschnitt eines numerischen Feldes | Pflicht | Durchschnittliche Bewertung |
MIN |
Ermittelt den kleinsten Wert | Pflicht | Frühestes Startdatum |
MAX |
Ermittelt den größten Wert | Pflicht | Letzte Aktivität (jüngstes Datum) |
EXISTS |
Prüft, ob mindestens ein verknüpfter Datensatz existiert | Nicht erforderlich | Hat Anhänge? (true/false) |
ConcatDistinct |
Listet eindeutige Werte kommasepariert auf | Pflicht | Zugewiesene Tags: „Dringend, Review, Extern“ |
Aggregation über eine Weitere Datenquelle
Neben der direkten Aggregation über ein Datenobjekt (Entity) können Sie auch eine „Weitere Datenquelle“ als Aggregationsquelle verwenden. Dies ist besonders nützlich, wenn die Zuordnungsdaten nicht direkt in einer Entity-Tabelle liegen, sondern in einer konfigurierten Datenquelle mit eigenen Joins, Filtern und Anreicherungen.
-
Weitere Datenquelle einrichten
Stellen Sie sicher, dass die Zuordnungstabelle als „Weitere Datenquelle“ im Tab „Weitere Datenquellen“ der Hauptdatenquelle konfiguriert ist.
-
Berechnete Spalte anlegen
Wechseln Sie zum Tab „Ausgabespalten“ und klicken Sie auf „Berechnete Spalte“.
-
Datenquelle statt Entity wählen
Im Konfigurationsbereich der Aggregation sehen Sie zwei Felder: „Verwandte Entity“ und „Datenquelle“. Lassen Sie das Entity-Feld leer und wählen Sie stattdessen die gewünschte „Weitere Datenquelle“ im Dropdown „Datenquelle“.
-
Schlüsselfelder und Aggregation konfigurieren
Konfigurieren Sie wie gewohnt das lokale Schlüsselfeld, das Fremd-Schlüsselfeld und den Aggregationstyp (z. B.
STRING_AGG — Verketten). Die Feldliste im Dropdown stammt aus den Ausgabespalten der gewählten Datenquelle.
| Eigenschaft | Entity-Modus | Datenquellen-Modus |
|---|---|---|
| Datenermittlung | SQL-Abfrage mit GROUP BY |
In-Memory (LINQ) |
| Datenübertragung | Nur aggregierte Ergebnisse | Komplette Datenquelle |
| Joins & Filter | Nur Rohdaten der Entity | Datenquelle inkl. Joins, Filter, Anreicherungen |
| Empfohlen für | Große Tabellen, einfache Aggregation | Zuordnungstabellen, aufbereitete Daten |
| Kunde | Branche | Aufträge | Umsatz | Letzter Kontakt |
|---|---|---|---|---|
| Mustermann GmbH | IT | 7 | € 84.200 | 02.05.2026 |
| Beispiel AG | Handel | 3 | € 12.450 | 28.04.2026 |
| Demo KG | Industrie | 12 | € 51.640 | 30.04.2026 |
Abgrenzung zu bestehenden Funktionen
| Funktion | Zweck | Datenherkunft |
|---|---|---|
| Spaltenanreicherung | Werte transformieren (Format, Ersetzung, Ausdruck) | Gleiches Feld / gleiche Zeile |
| Berechnete Felder | Werte aggregieren aus verknüpften Tabellen | Andere Entity / 1:n-Beziehung |
| Joins | Einzelne Spalten aus verknüpften Tabellen einblenden | 1:1- oder n:1-Beziehung |
| Dynamischer Code | Beliebige Logik per C#-Code | Alles möglich |
Häufige Fragen
Welche Beziehung muss zwischen den Objekten bestehen?
Es muss eine 1:n-Beziehung über ein gemeinsames Schlüsselfeld bestehen. Das lokale Schlüsselfeld (z. B. KundeId) im Hauptobjekt wird mit dem gleichnamigen Fremdschlüssel im Ziel-Objekt verknüpft. Eine formale Beziehungsdefinition in UDM ist nicht erforderlich — die Felder müssen lediglich inhaltlich übereinstimmen.
Was passiert, wenn das Ziel-Objekt nicht gefunden wird?
Kann die verwandte Entity nicht aufgelöst werden, wird eine Warnung in der Admin-Vorschau angezeigt. Die übrigen Spalten der Datenquelle bleiben unberührt — es tritt kein harter Fehler auf.
Werden Aggregationen bei jeder Abfrage neu berechnet?
Ja. Berechnete Felder werden bei jedem Datenabruf als SQL-Batch-Abfrage ausgeführt. Bei gecachten Datenquellen (IsCached) wird das Ergebnis inklusive der berechneten Werte gecacht.
Wie viele berechnete Felder kann ich pro Datenquelle anlegen?
Es gibt kein festes Limit. Pro berechnetem Feld wird eine zusätzliche SQL-Abfrage ausgeführt (Batch-Verfahren, kein N+1-Problem). Bei mehr als fünf berechneten Feldern empfiehlt es sich, die Performance in der Vorschau zu prüfen.
Kann ich berechnete Felder auch auf Ansichtselement-Ebene anlegen?
Ja. Der Button „Berechnete Spalte“ ist sowohl in Datenquellen als auch in Ansichtselementen im Tab „Ausgabespalten“ verfügbar.
Was ist der Unterschied zwischen „Neues Feld“ und „Berechnete Spalte“?
Neues Feld erstellt eine leere, ungebundene Spalte ohne Vorkonfiguration (kann per dynamischem Code befüllt werden). Berechnete Spalte erstellt ebenfalls ein ungebundenes Feld, legt aber automatisch eine Aggregationsregel an und öffnet die Konfiguration.
Wann sollte ich Entity vs. Datenquelle als Aggregationsquelle wählen?
Verwenden Sie Entity, wenn die Rohdaten der Zieltabelle ausreichen und es sich um große Datenmengen handelt (effiziente SQL-Aggregation). Verwenden Sie Datenquelle, wenn die Zieldaten aufbereitet sein müssen (Joins, Filter, Anreicherungen) oder bereits als „Weitere Datenquelle“ konfiguriert sind.
Kann ich Entity und Datenquelle gleichzeitig setzen?
Nein. Pro Aggregationsregel ist entweder eine Entity oder eine Datenquelle als Quelle gesetzt, nie beides. In der Oberfläche wird das jeweils andere Feld deaktiviert, sobald eine Auswahl getroffen wird.
V1.1: Datenquellen-Aggregation (In-Memory)
Seit Version 1.1 können berechnete Felder auch über beliebige Datenquellen aggregieren (In-Memory). Das ermöglicht Berechnungen über komplexe Join-Konstellationen hinweg — inklusive Filterbedingungen.
TemporalValue-Aggregationstyp
Der neue Aggregationstyp TemporalValue ermittelt den zum Stichtag gültigen Wert aus einer Versionshistorie. Ideal für versionierte Daten wie Preisänderungen, Tarifumstellungen oder andere zeitlich begrenzte Werte.