# Visualisierung (/docs/de/analytical-apps/visualisation)



Die **Visualisierung** ist der Ort, an dem Ihr Team mit einer fertigen Analyse-App
arbeitet. Sie ist aus **Widgets** auf einem Raster aufgebaut, Tabellen, Diagramme,
Text und Eingaben, die die Ergebnisse Ihrer Pipeline in etwas verwandeln, das
Menschen tatsächlich nutzen können. Sie ist mehr als ein Bericht zum Lesen: Aus der
Visualisierung heraus kann Ihr Team die App ausführen, die neuesten
Ausführungsergebnisse sehen, die Daten filtern, Werte in eine Tabelle eintippen und
herunterladen, was benötigt wird. Eine App kann mehr als eine Seite mit Widgets
enthalten, sodass eine einzelne App mehrere verwandte Themen abdecken kann.

## Wie die Visualisierung aufgebaut wird [#wie-die-visualisierung-aufgebaut-wird]

Sie bauen sie im Editor auf dem Tab **Visualisierung** auf. Fügen Sie Widgets
hinzu, ordnen Sie sie durch Ziehen und Größenanpassung auf dem Raster an und geben
Sie jedem Daten-Widget eine **Datenquelle**: den Pipeline-Schritt (Knoten genannt),
dessen Ergebnisse es zeigen soll.

Ein Tabellen-, Diagramm-, Pivot- oder Kennzahl-Widget kann jeden Knoten lesen, der
Daten enthält, ebenso ein Parameter, dessen Dropdown-Optionen aus einem Knoten
geladen werden: einen [Datensatz](./pipeline/datasets.mdx), einen
[SQL-Knoten](./pipeline/sql-nodes.mdx) und die beiden Knoten, die Daten von
anderswo importieren, [Indikatordaten](./pipeline/indicator-data.mdx) aus einer
Ihrer Indikator-Apps und [Analyse-App-Daten](./pipeline/analytic-data.mdx) aus einer
anderen Analyse-App. Importierte Werte können Sie direkt zeigen, ohne einen
SQL-Knoten dazwischen. Ein importierter Knoten erhält seine Spalten aus der letzten
erfolgreichen Ausführung der Pipeline. Führen Sie die Pipeline deshalb einmal aus,
nachdem Sie einen hinzugefügt haben: Bis dahin fordern die Spalteneinstellungen des
Widgets Sie auf, sie zuerst auszuführen.

Damit Daten erscheinen, muss die Pipeline mindestens einmal ausgeführt worden sein.
Wenn ein Widget Sie auffordert, die Pipeline auszuführen, wechseln Sie zur
**Datenpipeline**, klicken auf **Ausführen**, und das Widget füllt sich mit frischen
Ergebnissen. Siehe die [Pipeline-Übersicht](./pipeline/overview.mdx) dazu, wie das
Ausführen funktioniert.

Während Sie arbeiten, lebt all das in Ihrem privaten Entwurf. Klicken Sie auf
**Veröffentlichen**, um das neue Layout an Ihr Team zu übergeben; bis dahin sehen
alle anderen weiterhin das bisherige. Siehe
[Entwurf und Veröffentlichung](../overview/apps.mdx#entwurf-und-veroeffentlichung).

## Wenn die Visualisierung nichts zeigt [#empty-visualisation]

Eine App, die Ihr Team öffnet, zeigt die Ergebnisse der neuesten **veröffentlichten**
Ausführung. Gibt es keine solche Ausführung, bleiben die Widgets leer, und ein
Hinweis oben auf der Seite sagt, welche von drei Voraussetzungen fehlt und was sie
erfüllt:

| Der Hinweis sagt                             | Was er bedeutet                                                                                                                                                                                                                           | Was ihn erfüllt                                                                                                  |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Noch nicht veröffentlicht                    | Die App hat keine veröffentlichte Version, Ihr Team hat also nichts zu sehen. Eine Ausführung in diesem Zustand führt nur Ihren Entwurf aus.                                                                                              | Die App im Editor **veröffentlichen** (ein Mitglied mit der Rolle **App-Ersteller** oder **Admin** für die App). |
| Noch nicht berechnet                         | Die App ist veröffentlicht, aber ihre Pipeline wurde noch nie ausgeführt.                                                                                                                                                                 | Auf der Visualisierung **Ausführen** klicken oder die App in der Daten-Pipeline ausführen.                       |
| Noch hat keine Ausführung Ergebnisse erzeugt | Die Pipeline wurde ausgeführt, aber keine Ausführung hat Ergebnisse für Ihr Team erzeugt. Eine Vorschau-Ausführung des Entwurfs hält ihre Ergebnisse im Editor privat; eine fehlgeschlagene oder noch laufende Ausführung hat noch keine. | Auf der Visualisierung **Ausführen** klicken - das führt die veröffentlichte Version aus.                        |

Gibt es keinen Hinweis und ist ein Widget trotzdem leer, IST die App befüllt, und
die Frage betrifft die Daten selbst: Der Filter oder die Abfrage hat keine Zeilen
gefunden.

Die Schaltfläche **Ausführen** erscheint nur für Personen, die Apps ausführen
dürfen. Alle anderen sehen denselben Hinweis, der mit "Bitten Sie einen
Workspace-Administrator ..." endet, weil die Ausführung für sie abgelehnt würde.

## Wenn ein Widget eine Spalte nennt, die es nicht mehr gibt [#missing-column]

Ein Diagramm oder ein Pivot, die ihre Daten gruppieren, nennen die
Spalten, nach denen sie gruppieren, die Spalten, die sie zusammenfassen, und wie sie
jede zusammenfassen. Ist eine dieser Spalten nicht mehr in der Datenquelle des Widgets -
weil sie in der Pipeline umbenannt oder entfernt wurde, oder weil Vera oder ein Import
das Widget mit einer Spalte angelegt hat, die es nie gab -, oder nennt eine
Zusammenfassung eine andere Funktion als sum, count, avg, min oder max, rät das Widget
nicht. Statt Daten zeigt es einen kurzen Hinweis:

| Wo       | Was Sie sehen                                                                                                                                                                                                                                                                                                      |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Pivot    | "Die Gruppierung dieses Widgets lässt sich nicht lesen: Sie nennt eine Spalte, die es in seiner Datenquelle nicht gibt, eine Aggregation ohne Spalte oder eine andere Funktion als sum, count, avg, min oder max. Sie lässt sich in den Einstellungen des Widgets korrigieren.", im Raster des Pivots.             |
| Diagramm | "Die Gruppierung dieses Diagramms lässt sich nicht lesen: Sie verwendet eine Spalte, die es in seiner Datenquelle nicht gibt, oder eine andere Funktion als sum, count, avg, min oder max. Sie lässt sich in den Einstellungen des Diagramms korrigieren.", anstelle der Balken oder Segmente.                     |
| Bericht  | Ein Pivot-Block behält seine Spaltenüberschriften, und die Zeile darunter lautet "Die Gruppierung lässt sich nicht lesen: Sie nennt eine Spalte, die der Datenquelle fehlt, oder eine Funktion, die sich nicht anwenden lässt", wo sonst die Zeilenzahl steht. Ein Diagramm-Block zeigt den Hinweis des Diagramms. |

Es gibt kein **Erneut versuchen**: Eine neue Anfrage liefert dieselbe Antwort, bis das
Widget geändert wird.

Zum Beheben öffnen Sie im Editor die Einstellungen des Widgets. Die Spalte, die es
nicht mehr gibt, erscheint dort als leere Auswahl: Wählen Sie an dieser Stelle eine
Spalte der Datenquelle, oder entfernen Sie die Zeile mit ihrem **X**. Das Widget liest
seine Daten neu und zeichnet sich, sobald die Antwort da ist. Wer die veröffentlichte
App liest, sieht den Hinweis, bis Sie die korrigierte Fassung
[veröffentlichen](../overview/apps.mdx#entwurf-und-veroeffentlichung).

## Wenn ein Widget eine nicht mehr unterstützte Funktion verwendet [#unsupported-feature]

Verwenden die gespeicherten Einstellungen eines Widgets eine Funktion, die Ovidens
nicht mehr unterstützt, zeigt es an seiner Stelle den Hinweis
"Dieses Widget verwendet eine Funktion, die nicht mehr unterstützt wird".
Die anderen Widgets auf der Seite funktionieren weiter. Derselbe Hinweis erscheint
in jedem Bericht und Ausdruck, der dieses Widget platziert. Vera und verbundene
KI-Clients erhalten den Hinweis als Notiz, ohne Daten für dieses Widget.

Ein nicht unterstütztes Widget hindert Sie nicht daran, den Rest der Visualisierung
zu bearbeiten: Die Editoren speichern Ihre übrigen Änderungen weiter und lassen
dieses Widget genau so, wie es gespeichert war. Um den Hinweis zu entfernen,
löschen Sie das Widget oder ersetzen Sie es durch ein neues. Hinterlässt eine
Änderung ein Widget mit einer Einstellung, die sein Typ nicht akzeptiert, nennt ein
dauerhafter Hinweis das Widget und seine Seite, und Änderungen werden erst
gespeichert, wenn Sie es korrigieren oder entfernen.

Jedes Widget akzeptiert nur die Einstellungen seines eigenen Typs. Übergibt Vera,
ein verbundener KI-Client oder ein App-Import eine ungültige Einstellung, lehnt
Ovidens das Speichern ab und nennt das Widget und das Feld. Wenn Sie im Editor
einen anderen Typ wählen, beginnt das Widget mit den Einstellungen dieses Typs.

## Widget-Einstellungen für KI-Clients [#widget-settings]

Das Werkzeug-Schema beschreibt neun erstellbare Widget-Typen, ausgewählt über `type`.
Gemeinsam sind ihnen `id`, `type`, `title`, `description`, `descriptionAsTooltip`,
`width` und `height`. Breiten sind `full`, `half`, `third` oder `quarter`;
Höhen sind die Stufen 1 bis 4 oder `auto`. Jeder Typ ergänzt nur diese Felder:

| Typ              | Einstellungen                                                                                                                                                                                                                 |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `table`          | `nodeId`, `fixedFilters`, `parameterOptOut`, `visibleColumns`, `pinnedColumns`, `linkColumns`, `columnWidths`, `editable`, `contextSources`                                                                                   |
| `chart`          | `nodeId`, `fixedFilters`, `parameterOptOut`, `chartType`, `xColumn`, `chartGrouped`, `chartStacked`, `chartOrientation`, `chartLabelAngle`, `chartCategoryOrder`, `chartShowLegend`, `chartCategoryLabels`, `chartAggregates` |
| `pivot`          | `nodeId`, `fixedFilters`, `parameterOptOut`, `tableGroupBys`, `tableAggregates`, `columnWidths`                                                                                                                               |
| `stat`           | `nodeId`, `fixedFilters`, `parameterOptOut`, `statColumn`, `statAggregation`, `statFormat`, `statComparisonFilters`                                                                                                           |
| `parameter`      | `params`                                                                                                                                                                                                                      |
| `sql`            | `nodeId`, `textContent`                                                                                                                                                                                                       |
| `text`           | `textContent`, `textAlign`                                                                                                                                                                                                    |
| `ai`             | `skillTechnicalId`                                                                                                                                                                                                            |
| `knowledge_base` | `kbItemKey`                                                                                                                                                                                                                   |

Auch verschachtelte Einträge haben eigene Schemas. Filter verwenden `id`, `column`,
`operator` und `value`; Zusammenfassungen verwenden `id`, `column`, `function`
und optional `label` (bei Diagrammen auch `color`). Zusammenfassungsfunktionen sind
`sum`, `count`, `avg`, `min` und `max`. Eine Tabelle hat keine
Gruppierungseinstellungen: Verwenden Sie einen Pivot, um Zeilen zusammenzufassen.
Das Werkzeug-Schema nennt die optionalen Felder. Ausgelassene Einstellungen eines
vorhandenen Widgets bleiben erhalten; ein neues Widget beginnt mit den Vorgaben
seines Typs.

Ein nicht unterstütztes Widget ist ein schreibgeschützter Lesezustand außerhalb
des Werkzeug-Schemas. Ein Schreibzugriff, der es unverändert lässt - der es genau mit
`id` und `type` zurücksendet oder es in einer Bearbeitung nicht nennt -, behält es
genau so, wie es gespeichert ist, und blockiert daher keine Änderung an einem
anderen Widget. Wird es mit allen gespeicherten Einstellungen zurückgesendet, wird
der Schreibzugriff abgelehnt. Ein Schreibzugriff, der es ändert, ohne es gültig zu machen, wird
abgelehnt und nennt das Widget und seine Einstellungen: Entfernen Sie es, oder
ändern Sie seinen `type`, um es neu aufzubauen. Beim Wechsel des Typs bleiben Titel,
Beschreibung und Größe erhalten und, wenn der neue Typ Daten liest, auch Knoten,
feste Filter und der Parameter-Ausschluss; alle anderen Einstellungen beginnen mit
den Vorgaben des neuen Typs.

Ein KI-Schreibzugriff ist für das, was er hinzufügt oder ändert, in der Länge begrenzt:
Eine neue Seiten- oder Widget-ID hat höchstens 64 Zeichen, ein Widget-Titel 200, ein
Seitenname 120 und eine Widget-Beschreibung 2.000. Ein unverändert zurückgesendeter
Wert ist nicht begrenzt, sodass ein längerer Name aus dem Editor erhalten bleibt. Der
Inhalt eines Text-Widgets ist nicht begrenzt.

## Die Widgets [#die-widgets]

Jedes Widget wird im Editor hinzugefügt, auf dem Raster positioniert und
(außer Text) für seine Daten auf einen Pipeline-Knoten ausgerichtet.

### Text [#text]

Das **Text**-Widget platziert formatierten Text auf der Seite: Überschriften, kurze
Notizen und Anweisungen. Verwenden Sie es, um der Seite Struktur zu geben und zu
erklären, was die Betrachtenden vor sich haben, zum Beispiel einen Titel, einen
Hinweis, woher die Daten stammen, oder wie ein Filter zu verwenden ist. Es zeigt
keine Daten, also benötigt es keine Datenquelle.

### Tabelle [#table]

Das **Tabellen**-Widget zeigt Ihre Daten als Zeilen und Spalten, direkt aus einem
Knoten. Sie wählen, welche Spalten erscheinen. Um Zeilen nach Gruppen zusammenzufassen,
verwenden Sie einen [Pivot](#pivot). Eine Tabelle funktioniert auf eine von zwei Arten:

* **Schreibgeschützte** Tabellen zeigen Daten an und können nicht geändert werden,
  die übliche Wahl für einen Bericht.
* **Dateneingabe**-Tabellen lassen Menschen Werte direkt aus der App in die Tabelle
  eintippen. Änderungen werden gespeichert, wenn die Pipeline ausgeführt wird. So
  wird eine Visualisierung zu einem Ort, an dem man Daten eingibt, nicht nur liest.
  Nur eine Dateneingabe-Tabelle bietet **Importieren**, um eine Datei hineinzuladen, und im
  Editor trägt ihre Kopfzeile die Markierung **Bearbeitbar**, sodass sie sich auf einen Blick
  von einer schreibgeschützten Tabelle unterscheidet. Eine Tabelle mit festen Filtern
  ist immer schreibgeschützt; in ihren Einstellungen steht statt des
  Schalters **Bearbeitbar** ein kurzer Hinweis auf den Grund. Wer feste Filter
  hinzufügt, schaltet **Bearbeitbar** damit aus, und es bleibt aus, wenn sie später wieder
  entfernt werden. Soll die Tabelle wieder Eingaben annehmen, schalten Sie es erneut ein.

Wer in der App Daten erfassen darf - mit **Mitwirkender**, **App-Ersteller** oder **Admin** -, kann die Zeilen einer Dateneingabe-Tabelle bearbeiten: einen
Wert ändern, eine Zeile hinzufügen oder eine löschen. Jede Änderung wird im Prüfpfad
unter dem Namen der Person festgehalten, die sie vorgenommen hat. **Importieren**, also
eine Datei in die Tabelle laden, bleibt der Workspace-Administration vorbehalten;
andere Mitglieder sehen es nicht.

Tabellen berücksichtigen Ihre [Parameter](#parameters): Ist ein Regionsfilter auf
"Nord" gesetzt, zeigt die Tabelle nur Nord-Zeilen, und ein kleines Label zeigt an,
welcher Filter aktiv ist.

Eine Tabelle behält die Zeilen, die sie enthält, im Blick. Bei automatischer Höhe
wächst sie mit ihren Zeilen, und während jemand sie bearbeitet (**Bearbeiten**),
wächst sie etwas weiter, um Platz für die Schaltflächen **Speichern** und
**Abbrechen** und den Streifen **Neue Zeile** zu schaffen. So bleiben in einer Tabelle,
die auf die ein oder zwei zu korrigierenden Zeilen gefiltert ist, genau diese Zeilen
sichtbar. Bei fester Höhe behält die Karte ihre Größe; ist sie für die Tabelle zu
klein, scrollt die Tabelle innerhalb der Karte unter dem Titel des Widgets, sodass
jede Zeile, die Seitensteuerung sowie **Speichern** und **Abbrechen** erreichbar
bleiben.

Bei automatischer Höhe ist eine Tabelle nie höher als das Fenster, in dem sie gelesen
wird. Sie zeigt so viele ganze Zeilen, wie unter ihren Titel passen, zusammen mit der
Seitensteuerung und der Schaltfläche **Alle anzeigen**, und immer mindestens fünf Zeilen,
sodass in einem sehr kleinen Fenster stattdessen die Seite scrollt. Ein [Pivot](#pivot)
mit automatischer Höhe verhält sich genauso. Wenn Sie das Fenster vergrößern oder
verkleinern oder den Browser zoomen, folgt die Tabelle und zeigt mehr oder weniger
Zeilen, ohne etwas neu zu laden. **Alle anzeigen** zeigt bis zu 100 Zeilen auf einmal,
und die Seite scrollt, um sie zu erreichen.

Lassen sich die Daten einer Tabelle nicht laden, sagt die Tabelle das an ihrer
eigenen Stelle, dort, wo sonst Spaltennamen und Zeilen stehen, mit der Schaltfläche
**Erneut versuchen**, die die Daten noch einmal anfordert. Die Meldung bleibt stehen,
solange der neue Versuch läuft; danach erscheinen die Zeilen, oder die Meldung
erscheint erneut, wenn die Daten weiterhin nicht geladen werden können. Suche,
Sortierung und Filter bleiben verfügbar, denn jede Änderung daran fordert die Daten
neu an. **Bearbeiten*&#x2A; und **+ Zeile** sind nicht verfügbar, bis die Daten geladen
sind, und bereits eingegebene, noch nicht gespeicherte Werte bleiben erhalten.

Eine Tabelle lässt sich direkt aus dem Widget herunterladen. Sie wählen CSV oder
Excel - die Excel-Datei behält die Spaltentypen sowie die Prozent- und
Währungsformatierung, die die Tabelle am Bildschirm zeigt, und ist damit zum
Sortieren und Summieren bereit. Siehe
[Die Daten herunterladen](pipeline/datasets.mdx#die-daten-herunterladen).

Welche Zeilen die Datei enthält, hängt davon ab, wo die Tabelle steht. Eine Tabelle
in der App [Audit Analytics](../administration/audit-trail.mdx) oder auf der Seite
**Ergebnisse** einer Erhebung lädt die Zeilen herunter, die sie zeigt: Ihre Filter
(auch die, die ein Link beim Öffnen der Seite bereits gesetzt hat, etwa auf eine
bestimmte Ressource), die [Parameter](#parameters) der Seite und die Suche
wirken sich alle aus - eine Tabelle, die 312 Zeilen zeigt, lädt also 312 Zeilen
herunter. Die Datei enthält jede Spalte der Datenquelle der Tabelle, nicht nur die
am Bildschirm sichtbaren, und ihre Zeilen stehen in der Standardreihenfolge der
Tabelle, unabhängig davon, wie Sie die Tabelle sortiert haben. Eine
Tabelle in jeder anderen App lädt ihre gesamte Datenquelle herunter, egal was am
Bildschirm gefiltert ist. Eine Tabellenkalkulation fasst rund eine Million Zeilen;
für eine größere Tabelle wird Excel mit einer entsprechenden Meldung abgelehnt -
wählen Sie dafür CSV.

#### Dateien in einer Tabelle [#table-attachments]

Eine Tabelle über einem Datensatz mit einer **Anhang**-Spalte zeigt die Dateien jeder Zeile
genau so wie die Datenansicht des Datensatzes selbst. Ein Klick auf das Dateisymbol in einer
Zelle zeigt die Dateien mit Namen und Größe; dort können Sie eine Datei herunterladen (Sie
werden zuerst nach dem Dateinamen gefragt) oder ein Bild vergrößert ansehen. Herunterladen
funktioniert in jeder Tabelle, auch in schreibgeschützten, für alle, die die App lesen können.

In einer Dateneingabe-Tabelle können Administratoren während der Bearbeitung
(**Bearbeiten**) außerdem Dateien hinzufügen und entfernen: Wählen Sie **Datei hinzufügen**
in einer leeren Zelle oder die Büroklammer in einer gefüllten, und wählen Sie dann Dateien
aus oder ziehen Sie sie auf den Hochladen-Dialog. Jede Datei darf bis zu 10 MB groß sein;
eine größere wird im Dialog abgelehnt, und alle anderen Änderungen bleiben erhalten. Um
eine Datei zu ersetzen, entfernen Sie sie und fügen die neue hinzu. Eine Datei wird
hochgeladen, sobald Sie den Dialog bestätigen, gehört aber erst zur Zeile, wenn Sie
**Speichern** wählen; **Abbrechen** verwirft sie zusammen mit den übrigen ungesicherten
Änderungen. Andere Leser der App können Dateien herunterladen, aber nicht hinzufügen oder
entfernen. Was mit einer entfernten Datei geschieht, steht unter
[Dateien in einer Anhang-Spalte](pipeline/datasets.mdx#attachments).

#### Kontextspalten [#context-columns]

**Kontextspalten** stellen Angaben aus anderen Datensätzen neben jede Zeile, sodass
alle, die eine Tabelle korrigieren, das Nötige sehen, ohne sie zu verlassen. Eine
Tabelle über einem Datensatz, schreibgeschützt oder zur Dateneingabe, kann insgesamt
bis zu 10 davon tragen; sie erscheinen nach ihren eigenen Spalten, mit einem Schloss in
der Kopfzeile, das den Datensatz nennt, aus dem jede stammt.

Kontextspalten stammen aus einem **Kontext aus einem Datensatz**: Sie wählen einmal
einen Datensatz derselben App und, wie seine Zeilen den Zeilen dieser Tabelle
zugeordnet werden, und wählen dann so viele seiner Spalten, wie Sie brauchen. Alle
Spalten eines Kontexts lesen dieselben passenden Zeilen. Jede Spalte ist eines von
beiden:

* **Wert** zeigt eine Spalte dieses Datensatzes aus der ersten passenden Zeile: zum
  Beispiel zu jeder Bestellung die Produktkategorie aus Ihrem Produkt-Datensatz.
* Eine **Funktion** zählt oder summiert alle passenden Zeilen: zum Beispiel, wie viele
  Kundinnen und Kunden ein Produkt gekauft haben, oder den Umsatz all seiner
  Bestellungen. Die Funktionen sind **Anzahl**, **Anzahl eindeutiger Werte**,
  **Summe**, **Durchschnitt**, **Minimum** und **Maximum**, und diese Liste ist
  vollständig: Eine Berechnung darüber hinaus, etwa ein Verhältnis oder eine Zählung
  nur mancher Zeilen, gehört in einen SQL-Knoten.

Ein Kontext kann beides mischen: aus Ihrem Bestell-Datensatz die erste Kundin, die Zahl
der Kundinnen und Kunden und den Umsatz, alle über das Produkt zugeordnet.

Zum Hinzufügen öffnen Sie die Einstellungen der Tabelle und finden **Kontextspalten**
in der Gruppe Daten, unter den Spalten. Klicken Sie auf **Kontext
aus einem Datensatz hinzufügen**. Wählen Sie **Aus Datensatz**, danach unter **Zeilen
zuordnen, wo**, welche Spalte dieser Tabelle einer Spalte jenes Datensatzes entspricht
(**Weitere Spalte zuordnen** fügt ein zweites oder drittes Paar hinzu). Wählen Sie dann
für jede Spalte ihre **Spalte** und ihre **Funktion** - **Wert** oder eine der
Funktionen - und geben Sie ihr einen **Namen**; **Spalte hinzufügen** fügt eine weitere
Spalte aus demselben Datensatz hinzu. Der Editor bietet nur die Funktionen an, für die
der Datensatz eine Spalte hat, und je Funktion nur die Spalten, die sie verwenden kann.
Wird eine Spalte umbenannt oder ihre Funktion geändert, bleibt sie dieselbe Spalte.
Wechseln Sie einen Kontext später zu einem anderen Datensatz, bleiben die Spalten, die
auch dieser Datensatz hat - über dieselbe Spalte oder eine gleichnamige gefunden -, und
die übrigen entfallen; wird die letzte Spalte eines Kontexts entfernt, entfällt der
Kontext. Es ist jeweils ein Kontext zur Bearbeitung geöffnet.

**Wie Werte zugeordnet werden.** Ein Dropdown wird nach der Beschriftung verglichen,
die Sie sehen. Eine Zahl und ein Text werden als Zahlen verglichen, sodass `1` zu
`"1"`, `"1.0"` und `"1.00"` passt, während ein Text, der keine Zahl ist, zu nichts
passt - auch eine Zahl mit Dezimalkomma wie `1,5` nicht. Ein Datum und ein Zeitstempel
werden nach dem Kalendertag verglichen, sodass das Datum 5. Januar 2024 zu jedem
Zeitstempel dieses Tages passt. Ein Text und ein Datum oder ein Zeitstempel werden als
dieses Datum oder dieser Zeitstempel verglichen: `2024-01-05` passt zum Datum 5. Januar
2024 und unter Zeitstempeln nur zu Mitternacht dieses Tages. Zwei Zeitstempel müssen
genau übereinstimmen. Zeilen des anderen Datensatzes, deren Zuordnungswert leer ist
oder sich nicht als der verglichene Typ lesen lässt, bleiben außen vor.

**Was eine Spalte zeigt.** Eine Zeile ohne Treffer zeigt bei einer Zählung 0 und
bleibt sonst leer. Eine Zeile, deren eigener Zuordnungswert leer ist, bleibt in jeder
Spalte leer, auch bei Zählungen, denn "keine Kundin" heißt nicht "keine Bestellungen".
**Anzahl** ohne Spalte zählt die passenden Zeilen, mit einer Spalte deren nicht leere
Werte. **Durchschnitt** ist der Mittelwert der nicht leeren Werte. **Minimum** und
**Maximum** eines Textes vergleichen nach Zeichencode, sodass `Zebra` vor `apple`
kommt, und ein Dropdown nach seiner Beschriftung, nicht nach der Reihenfolge seiner
Optionen. Eine Summe behält den Typ ihrer Spalte: Die Summe einer Währungsspalte zeigt
diese Währung, die Summe einer Prozentspalte ein Prozent und die Summe ganzer Zahlen
eine ganze Zahl; ein Durchschnitt behält eine Währung oder ein Prozent und ist sonst
eine Dezimalzahl. Ein Wert, Minimum und Maximum einer Währungs- oder Prozentspalte
zeigen ebenfalls deren Format.

**Was abgelehnt wird.** **Summe** und **Durchschnitt** nehmen eine Zahlen-, Währungs-
oder Prozentspalte, aber kein Jahr: Die Summe von Jahren ist keine Zahl, die jemand
liest. Eine Mehrfachauswahl-Spalte enthält mehrere Optionen in einer Zelle, daher kann
sie keine Zuordnungsspalte sein, und **Anzahl eindeutiger Werte**, **Minimum** und
**Maximum** können sie nicht lesen; **Anzahl** und **Wert** können es.

Kontextspalten lassen sich wie jede Spalte sortieren, filtern und durchsuchen, werden
aber nie bearbeitet: Sie gehören weder zu **Bearbeiten** noch zum Formular für eine
neue Zeile oder zum Detailfenster, und der Textfilter schlägt für sie keine Werte vor.
Sie werden immer angezeigt, denn Ausblenden und Anheften gelten für die eigenen Spalten
der Tabelle. Ihre Werte stammen aus denselben Daten wie die Zeilen - im Editor aus
Ihrem Entwurf, für Ihr Team aus der veröffentlichten Fassung - und folgen einer
Änderung beim nächsten Laden der Tabelle, ohne dass die Pipeline ausgeführt wird. Ein
Download enthält nur die eigenen Spalten der Tabelle.

Kommt ein Zuordnungswert im Datensatz eines Kontexts mehrfach vor, zeigt eine Spalte
mit **Wert*&#x2A; den Wert der ersten Zeile, und ein gelbes &#x2A;*!*&#x2A; in ihrer Kopfzeile sagt,
wie viele Werte sich wiederholen; eine Funktion liest alle passenden Zeilen und zeigt
keine Warnung. Eine Spalte, die sich nicht lesen lässt - weil ihr
Datensatz oder ihre Spalte gelöscht wurde oder sie etwas oben Abgelehntes verlangt -,
bleibt leer, und ein rotes &#x2A;*!** in der Kopfzeile nennt den Grund, während der Rest der
Tabelle wie gewohnt lädt. Auch [Vera](../tips/interact-with-vera.mdx) kann
Kontextspalten anlegen; eine, die etwas nicht Vorhandenes nennt oder etwas oben
Abgelehntes verlangt, wird mit Begründung abgelehnt.

### Diagramm [#diagramm]

Das **Diagramm**-Widget zeichnet Ihre Daten als **Balken**-, **Linien**-,
**Flächen**-, **Streu**-, **Kreis**- oder **Ring**diagramm, sodass ein Trend oder eine
Rangfolge auf einen Blick erkennbar ist. Balken vergleichen Werte über Kategorien,
Linien und Flächen zeigen Veränderungen über die Zeit, Kreise und Ringe zeigen, wie
sich ein Ganzes in Teile aufteilt, und ein Streudiagramm stellt zwei Zahlenspalten
gegeneinander dar, um zu zeigen, wie sich eine Größe mit einer anderen bewegt. Ein
Diagramm benötigt eine Datenquelle plus die Spalte, die jeden Punkt oder Balken
beschriftet, die Spalte, die die Werte liefert, und optional mehr als eine Reihe zum
Vergleich. Sie können **nach einer Kategorie gruppieren**, und das Diagramm zeichnet
sich neu, um zu Ihren [Parametern](#parameters) zu passen.

Die horizontale Achse eines Streudiagramms und jede seiner Reihen müssen
**Zahlen**spalten sein: Über einer Text- oder Datumsspalte gibt es nichts zu zeichnen,
deshalb sagt das Diagramm das, statt eine leere Fläche zu zeigen. Ein Streudiagramm
kann mehrere Reihen tragen, jede an ihren eigenen Werten gezeichnet. Ein Diagramm, das
mit einem Typ gespeichert wurde, den Ovidens nicht zeichnet, etwa von einem anderen
Werkzeug, nennt diesen Typ statt einer Zeichnung, bis in seinen Einstellungen ein
Diagrammtyp gewählt wird.

Ein Kreis- oder Ringdiagramm oder ein gruppiertes Balken-, Linien- oder
Flächendiagramm, dessen Beschriftungs- oder Wertespalte nicht mehr in seiner
Datenquelle ist, zeigt statt einer Zeichnung einen Hinweis; behoben wird das in den
Einstellungen des Diagramms. Siehe
[Wenn ein Widget eine Spalte nennt, die es nicht mehr gibt](#missing-column).

### Pivot [#pivot]

Das **Pivot**-Widget fasst Zeilen zu Gruppen zusammen und zeigt für jede Gruppe eine
Zusammenfassung. Eingerichtet wird es in den Einstellungen des Pivots: eine oder
mehrere **Gruppieren-nach**-Spalten (etwa Region) und eine oder mehrere
Zusammenfassungsspalten, jede eine Summe, Anzahl, ein Durchschnitt, Minimum oder
Maximum einer Spalte (etwa die Summe des Umsatzes). Eine Jahresspalte bietet nur
Anzahl, Minimum und Maximum an, weil eine Summe oder ein Durchschnitt von Jahren keine
Zahl ist, die jemand liest. Wer die Seite liest, sieht das Ergebnis, eine Zeile je
Gruppe. Verwenden Sie eine [Tabelle](#table), wenn Menschen
die Details brauchen, und einen Pivot, wenn sie die Summen brauchen.

Ein neuer Pivot beginnt mit einer Voreinstellung, damit er sofort etwas zeigt: Er
gruppiert nach der ersten Spalte, die keine Zahl ist, und summiert die erste
Zahlenspalte, die kein Jahr ist. Die Voreinstellung füllt nur einen Teil, den Sie leer gelassen haben.
Eine Spalte, die Sie gewählt haben, wird immer so verwendet, wie Sie sie gewählt
haben, und nie stillschweigend durch eine andere ersetzt. Ist sie nicht mehr in der
Datenquelle, zeigt der Pivot statt des Rasters einen Hinweis; behoben wird das in den
Einstellungen des Pivots. Siehe
[Wenn ein Widget eine Spalte nennt, die es nicht mehr gibt](#missing-column).

**Formate.** Ein Pivot zeigt seine Zahlen so, wie die Datenquelle sie festlegt. Die
Summe einer Währungsspalte erscheint in dieser Währung mit ihren Nachkommastellen, die
Summe einer Prozentspalte mit ihren Nachkommastellen und einem %-Zeichen. Eine Anzahl
ist immer eine ganze Zahl, weil sie Zeilen zählt. Ein Durchschnitt ganzer Zahlen oder
Dezimalzahlen wird auf zwei Nachkommastellen gerundet. Das früheste oder späteste
Datum einer Datumsspalte erscheint als Datum, und ein Jahr als Jahr (2023, nie 2.023).
Eine Gruppierung nach einer Auswahlspalte zeigt den Namen und die Farbe der Option.

**Jede Gruppe, Seite für Seite.** Ein Pivot zeigt jede Gruppe seiner Daten, eine
Seite nach der anderen, und seine Seitenleiste sagt, wie viele Gruppen es sind.

**Suchen, filtern und sortieren.** Das Suchfeld findet Gruppen über die Werte der
Gruppieren-nach-Spalten, und bei einer Auswahlspalte über die Namen der Optionen, die
Sie sehen. Ein Filter auf einer Gruppieren-nach-Spalte schränkt die
Zeilen ein, bevor zusammengefasst wird, sodass die Summen dem Filter folgen. Ein
Filter auf einer Zusammenfassungsspalte behält die Gruppen, deren Zusammenfassung ihn
erfüllt, etwa die Regionen mit mehr als 10.000 Umsatz. Das Sortieren nach einer
Zusammenfassungsspalte ordnet die Gruppen nach ihrer Zusammenfassung. Die **Festen
Filter** des Pivots (in der Gruppe Daten seiner Einstellungen) und die
[Parameter](#parameters) der Seite schränken die Zeilen ebenfalls ein, bevor
zusammengefasst wird.

**Vollbild und Download.** Öffnen Sie einen Pivot über seine Kopfzeile im Vollbild (im
Editor über die Schaltflächen über der Kachel); Ihre Suche bleibt dabei erhalten. Der
Download enthält jede Gruppe, die der Pivot unter seiner aktuellen Suche, seinen
Filtern und seiner Sortierung zeigt, unter denselben Spaltenüberschriften. Zahlen
werden als reine Zahlen geschrieben, damit eine Tabellenkalkulation mit ihnen rechnen
kann; eine Excel-Datei behält das Format einer Währungs- oder Prozentspalte, und ein
Datum wird als Datum geschrieben (2024-01-01).

Kann ein Pivot seine Daten nicht lesen, etwa weil die Abfrage zu lange gedauert hat,
sagt er das anstelle des Rasters und bietet **Erneut versuchen** an. Ein Berichtsblock
zeigt einen Pivot genau wie die Kachel, Formate, Jahre und Optionsnamen eingeschlossen.

### Eine Zusammenfassungsspalte benennen [#aggregate-labels]

Jede Zusammenfassungsspalte eines Pivots
kann eine eigene Überschrift haben. Öffnen Sie in den Einstellungen des Widgets die
Stift-Schaltfläche neben der Zusammenfassung und tragen Sie die Überschrift unter
**Spaltenüberschrift** ein, etwa "Umsatz in EUR". Die Überschrift steht über dieser
Spalte auf der Seite, im Vollbild, in Berichten und in einer heruntergeladenen Datei;
das kleine Kennzeichen der Zusammenfassung (SUM, AVG, ...) bleibt daneben. Lassen Sie
das Feld leer oder wählen Sie **Zurücksetzen**, und die Spalte trägt wieder den Namen
ihrer Spalte in der Datenquelle. Ein Bericht und ein Download haben kein Kennzeichen,
deshalb trägt eine unbenannte Zusammenfassungsspalte dort den Namen der Spalte und ihre
Zusammenfassung, etwa "Betrag (sum)" neben "Betrag (max)", und ein Filter darauf liest
sich über der Seite genauso.

### Parameter [#parameters]

Ein **Parameter**-Widget fügt Eingabesteuerungen hinzu, ein Dropdown, ein Textfeld,
ein Zahlenfeld, eine Datumsauswahl oder einen Bereich, die es Menschen erlauben, die
Seite zu filtern oder anzupassen, ohne etwas zu ändern, das Sie aufgebaut haben.
Statt eine Seite pro Region zu bauen, fügen Sie einen Regionsparameter hinzu:
Menschen wählen eine Region, und jede Tabelle und jedes Diagramm aktualisiert sich
entsprechend. Eine Seite bedient alle.

Verbinden Sie einen Parameter mit der **Spalte**, nach der er filtert, und geben Sie
die Optionen eines Dropdowns entweder als feste Liste an oder laden Sie sie live aus
einem Pipeline-Knoten. Ein Parameter filtert jedes Widget, das die passende Spalte
verwendet, sodass eine Steuerung die ganze Seite antreiben kann. Ein Widget, das
immer alles zeigen soll (zum Beispiel eine Gesamtsumme), kann so eingestellt werden,
dass es Parameter ignoriert.

### SQL [#sql]

Das **SQL**-Widget platziert ein Abfragefeld auf der Seite, sodass jemand, der mit
SQL vertraut ist, Ad-hoc-Fragen an die Pipeline-Ausgabe stellen kann. Wählen Sie
einen Knoten als Quelle, und es füllt eine Startabfrage aus, die Sie anpassen. Eine
Abfrage kann einen Datensatz oder einen SQL-Knoten nennen, aber keinen importierten
Knoten (Indikatordaten oder Analyse-App-Daten): Um importierte Daten abzufragen,
fügen Sie in der Pipeline nach dem Import einen SQL-Knoten hinzu und fragen diesen
ab. Wenn Sie mit SQL nicht vertraut sind, benötigen Sie dieses Widget nicht:
Beschreiben Sie Ihre Frage stattdessen [Vera](../tips/interact-with-vera.mdx), oder
verwenden Sie die anderen Widgets, die die meisten Bedürfnisse ohne eine einzige
Abfrage abdecken.

Eine Abfrage liest hier **nur die eigenen Knoten dieser App**, direkt über ihre ID
benannt: Ein Name mit Präfix, die Tabelle einer anderen App, eine Systemtabelle, ein
Dateipfad oder eine Tabellenfunktion in `FROM` wird mit einer Meldung abgelehnt, was
zu ändern ist, ebenso eine Funktion, die Einstellungen oder den Katalog liest, als Text
übergebenes SQL ausführt oder etwas verändert. Die vollständige Regel steht unter
[Was die Schaltfläche Ausführen lesen kann](./pipeline/sql-nodes.mdx#was-die-schaltflaeche-ausfuehren-lesen-kann).

Eine eigene Abfrage zu schreiben und auszuführen ist eine eigene Berechtigung,
getrennt vom Lesen der App. Sie gehört zu den Rollen **Mitwirkender**, **Analyst**, **App-Ersteller** und **Admin** für den
gesamten Workspace - eine Rolle für einen einzelnen Bereich oder eine App gibt sie nicht -, und in
Ihrem eigenen persönlichen Bereich haben Sie sie immer. Wer eine App nur
ansehen darf, sieht bei jedem SQL-Widget dessen Ergebnis - die Zeilen der im Widget
gespeicherten Abfrage - ohne Abfragefeld: Er liest, was der Autor der Seite
geschrieben hat, und kann es nicht ändern. Wer im Editor die App ändern, aber keine
Abfragen ausführen darf, bearbeitet die gespeicherte Abfrage ohne Schaltfläche
**Ausführen**, und ein kurzer Hinweis sagt, warum.

### KI [#ki]

Das **KI**-Widget führt einen kuratierten KI-[Skill](./skills.mdx) aus und zeigt die
Antwort direkt auf der Seite. Seine einzige Einstellung ist, welchen Skill es
ausführt; das Widget übernimmt den Namen des Skills als Titel. Fragt der Skill nach
etwas, zum Beispiel nach einer Region oder einem Zeitraum, zeigt das Widget pro
Frage ein beschriftetes Feld an; die lesende Person füllt sie aus und klickt auf
**Ausführen**.

Während der Ausführung sehen Sie, woran Vera gerade arbeitet, wie lange es schon
läuft und wie weit es gehen darf. Am Ende erhalten Sie die Antwort samt einer
aufklappbaren Erklärung, wie Vera darauf gekommen ist. Eine Datenquelle braucht es
nicht: der Skill weiß bereits, welche Daten er ansehen muss. Wer keinen KI-Zugriff
hat, sieht statt der Schaltfläche Ausführen einen Hinweis darauf.

### Wissensdatenbank [#knowledge-base-widget]

Das **Wissensdatenbank**-Widget bettet eine einzelne Seite aus der
[Wissensdatenbank](./knowledge-base.mdx) der App in die Visualisierung ein,
schreibgeschützt dargestellt. Verwenden Sie es, um Erläuterungen direkt neben
den Zahlen zu halten: was die Daten bedeuten, wie die App gemeint ist oder
welche Regeln hinter einer Zahl stehen, sodass Menschen die Seite nicht
verlassen müssen, um es nachzuschlagen. Es zeigt keine Pipeline-Daten, also
benötigt es keine Datenquelle; Sie wählen einfach, welche Seite es anzeigt.
