# CalcDim - Diagrammfunktion

Wenn CalcDim() in einer Dimensions-Formel verwendet wird, überschreibt dies die automatische Interpretation der Engine, wie die Formel intern verarbeitet werden soll. Spezifisch verhindert die Funktion, dass im Datenmodell ein neues internes Feld erstellt wird. Stattdessen werden die in der Anwendung getroffenen Auswahlen als Auswahlen in den entsprechenden Feldern des ursprünglichen Datenmodells behandelt.

Diese Funktion kann nicht im Ladeskript verwendet werden. Für eine bessere Systemleistung empfiehlt es sich, die in der dynamischen Dimension verwendeten Felder nach Möglichkeit über das Ladeskript als logische Felder zu laden. CalcDim() bietet eine Möglichkeit, das Engine-Verhalten in Szenarien zu steuern, in denen das Laden des berechneten Feldes aus dem Skript nicht möglich ist.

In Qlik Sense wird der Dimensionsausdruck standardmäßig als fliegendes Feld (field-on-the-fly) umgesetzt, d. h. als tatsächliches Feld, das in der aktuellen Auswahlleiste angezeigt und bei Bedarf erstellt wird. Auswahlen werden auf dieses Feld angewendet und daraus abgeleitet, ähnlich wie bei jedem logischen Feld aus dem Skript.

Ein Ausdruck, der in CalcDim() eingeschlossen ist, verhält sich genauso wie alle Ausdrücke für dynamische Dimensionen in QlikView funktionieren. Hierbei handelt es sich um eine Ad-hoc-Zuordnung der berechneten Werte zu den zugrunde liegenden Werten der Quellfelder. Alle Berechnungen für fliegende Felder können mit der Funktion CalcDim() in berechnete Dimensionen übertragen werden, da die berechnete Dimension aufgrund des Datenmodells weniger Anforderungen erfüllen muss als die entsprechende Berechnung für fliegende Felder. Diese Umwandlung kann wünschenswert sein, um ein ähnliches Verhalten für alle berechneten Dimensionen zu gewährleisten, bei denen das Datenmodell die Verwendung einer Berechnung für fliegende Felder in bestimmten Fällen verhindern kann.

[Berechnete Felder](https://community.qlik.com/t5/Design/Calculated-Fields/ba-p/1694383)

CalcDim(expr)

Rückgabe Datentyp: Dual

Argumente

| Argument | Beschreibung |
| --- | --- |
| expr | Ein Ausdruck, der als Dimension oder als Segment innerhalb eines Dimensionsausdrucks verwendet wird. |

## Verwendung

CalcDim() ist nützlich, wenn Sie mehr Kontrolle darüber benötigen, wie die Qlik Engine die Felder verarbeitet, die Sie in einem Dimensionsausdruck aufrufen.

Standardmäßig entscheidet Qlik Sense automatisch, ob interne Felder im Datenmodell erstellt und referenziert werden sollen, wenn Sie einen benutzerdefinierten Dimensionsausdruck verwenden. Qlik Sense erstellt und verwendet diese internen Felder, wann immer dies möglich ist. Wenn dies nicht möglich ist, wird der Ausdruck anhand der vorhandenen Datenmodellfelder verarbeitet, auf die er sich bezieht.

Je nach Anwendungsfall ist diese automatische Verarbeitung vielleicht nicht immer wünschenswert. Wenn Sie zum Beispiel eine Variable in einem Dimensionsausdruck verwenden, kann sich die automatische Erstellung neuer Felder zu einem Problem entwickeln. Verwenden Sie in diesem Fall CalcDim(), damit der Ausdruck ohne diese Methode verarbeitet wird.

Im Folgenden finden Sie einige allgemeine Anwendungsfälle:

* Sie haben QlikView Inhalte zu Qlik Sense migriert und Sie möchten die QlikView Verarbeitungsmethode für berechnete Dimensionen beibehalten.

* Sie möchten das Auswahlverhalten in Ihrer Anwendung vereinfachen. Beispielsweise ziehen Sie es vor, Feldauswahlen als Auswahlen in Feldern des ursprünglichen Datenmodells anzuzeigen, statt als Auswahlen in neuen Feldern.

* Ihr Anwendungsfall benötigt einen Ad-hoc-Ausdruck für Konsistenz und Leistung. Beispielsweise dann, wenn Ihr Dimensionsausdruck vom Benutzer steuerbare dynamische Visualisierungsparameter enthält, wie steuerbare Formatierungen, Grenzwerte oder Zeiträume.

Funktionsbeispiele

| Beispiel | Ergebnis |
| --- | --- |
| `=CalcDim(if(Year < 2023, 'Older', Year))` | Eine Auswahl in einer Visualisierung, die diese Dimension verwendet, wird als Auswahl im zugehörigen Feldwert Year aus dem Datenmodell verarbeitet und angezeigt.<br><br>Nehmen wir umgekehrt an, Sie schließen den Ausdruck nicht in CalcDim() ein. In diesem Fall sähe das Ergebnis folgendermaßen aus:<br><br>`=if(Year < 2023, 'Older', Year)`<br><br>Eine Auswahl im obigen Ausdruck würde als Auswahl im internen Feld =if(Year &lt; 2023, 'Older', Year) verarbeitet und angezeigt, das nicht im Datenmodell enthalten ist. |

## Beispiel 1 – Einfacher Vergleich

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/calcdim.htm)

#### Diagrammformeln und Ergebnisse

Übersicht

In diesem Beispiel gehen Sie folgendermaßen vor:

* Fügen Sie eine Inline-Tabelle hinzu und laden Sie Daten in eine Anwendung.

* Erstellen Sie eine Tabelle, um die Daten zu visualisieren und Berechnungen durchzuführen.

* Treffen Sie Ihre Auswahl in der Tabelle, um den Unterschied im Verhalten zu beobachten.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in einen neuen Abschnitt ein.

Das Ladeskript lädt eine Inline-Tabelle. Diese Tabelle enthält zwei Felder: ein Feld für den Vornamen der Person und ein Feld für den Nachnamen der Person.

Ladeskript

```
Names:

Load * inline [
FirstName,LastName
John,Doe
Amanda,Honda
Amalia,Craig
Cart,Lynch
];
```

Tabellenerstellung

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* FirstName

* LastName

Fügen Sie als Nächstes alle folgenden Ausdrücke als Dimensionen in die Tabelle ein:

* =FirstName & ' ' & LastName

* =CalcDim(FirstName & ' ' & LastName)

Die Tabelle sollte wie folgt aussehen.

Qlik SenseQlik Sense Tabelle mit Beispielergebnissen

| FirstName | LastName | =FirstName & ' ' & LastName | =CalcDim(FirstName & ' ' & LastName) |
| --- | --- | --- | --- |
| John | Doe | John Doe | John Doe |
| Amanda | Honda | Amanda Honda | Amanda Honda |
| Amalia | Craig | Amalia Craig | Amalia Craig |
| Cart | Lynch | Cart Lynch | Cart Lynch |

Vergleich: Auswahl treffen

Wählen Sie in der Spalte =FirstName & ' ' & LastName der Tabelle den Wert JohnDoe aus. Beachten Sie, dass in der Auswahl-Symbolleiste der Wert aus einem Feld mit der Bezeichnung =FirstName' 'LastName ausgewählt wird.

Löschen Sie die Auswahl.

Wählen Sie in der Spalte =CalcDim(FirstName ' ' LastName) der Tabelle den Wert JohnDoe aus. In der Auswahl-Symbolleiste werden Werte aus zwei verschiedenen Feldern ausgewählt: FirstName und LastName.

Diese beiden Ausdrücke zeigen dieselben Informationen: eine Kombination der Felder FirstName und LastName. Der Unterschied besteht darin, dass ohne CalcDim() ein synthetisches Feld zum Speichern der Berechnung erstellt wird. Mit CalcDim() werden die ursprünglichen Felder aus dem Datenmodell als Grundlage für die dynamische Dimension verwendet.

## Beispiel 2 – Praktischer Anwendungsfall zur Änderung des Standardverhaltens

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/calcdim.htm)

#### Diagrammformeln und Ergebnisse

Übersicht

In diesem Beispiel werden dynamische Dimensionsausdrücke erstellt, die auf eine Variable anstelle statischer Werte verweisen.

In diesem Beispiel gehen Sie folgendermaßen vor:

* Fügen Sie eine Inline-Tabelle hinzu und laden Sie Daten in eine Anwendung.

* Erstellen Sie eine Variable, um einen Wert dynamisch zu speichern.

* Erstellen Sie eine Tabelle, um die Daten zu visualisieren und Berechnungen durchzuführen.

* Treffen Sie Ihre Auswahl in der Tabelle, um den Unterschied im Verhalten zu beobachten.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in einen neuen Abschnitt ein.

Das Ladeskript lädt eine Inline-Tabelle. Diese Tabelle enthält ein Datumsfeld und ein berechnetes Feld (Year), das aus den Rohdaten abgeleitet wird.

Ladeskript

```
SET DateFormat='MM/DD/YYYY';
						
Transactions:

Load *,

RowNo() as ID,
Year(date) as Year
;

Load * Inline
[
date,amount
'1/19/2022',37.23
'2/28/2022',88.27
'3/16/2022',53.80
'4/1/2022',82.06
'5/16/2022',87.21
'6/26/2022',45.89
'7/9/2022',36.23
'8/2/2022',76.11
'9/26/2022',84.21
'10/29/2022',67.67
'1/1/2023',100.49
'2/24/2023',99.47
'3/6/2023',50.02
'4/10/2023',2.05
'5/20/2023',75.64
'6/25/2023',98.11
'7/19/2023',30.00
'9/27/2023',76.11
'10/26/2023',43.21
'11/12/2023',135.41
'1/15/2024',67.24
];
```

Variablenerstellung

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine Variable mit der Bezeichnung vCutoffYear, und weisen Sie ihr folgende Definition zu: 2023

Tabellenerstellung

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* date

* Year

* amount

Fügen Sie als Nächstes alle folgenden Ausdrücke als Dimensionen in die Tabelle ein:

* =if(Year $(vCutoffYear), 'Older', Year)

* =CalcDim(if(Year $(vCutoffYear), 'Older', Year))

Die Tabelle sollte wie folgt aussehen.

Qlik SenseQlik Sense Tabelle mit Beispielergebnissen

| date | Year | amount | if(Year $(vCutoffYear), 'Older', Year) | =CalcDim(if(Year $(vCutoffYear), 'Older', Year)) |
| --- | --- | --- | --- | --- |
| 1/19/2022 | 2022 | 37.23 | Older | Older |
| 2/28/2022 | 2022 | 88.27 | Older | Older |
| 3/16/2022 | 2022 | 53.80 | Older | Older |
| 4/1/2022 | 2022 | 82.06 | Older | Older |
| 5/16/2022 | 2022 | 87.21 | Older | Older |
| 6/26/2022 | 2022 | 45.89 | Older | Older |
| 7/9/2022 | 2022 | 36.23 | Older | Older |
| 8/2/2022 | 2022 | 76.11 | Older | Older |
| 9/26/2022 | 2022 | 84.21 | Older | Older |
| 10/29/2022 | 2022 | 67.67 | Older | Older |
| 1/1/2023 | 2023 | 100.49 | 2023 | 2023 |
| 2/24/2023 | 2023 | 99.47 | 2023 | 2023 |
| 3/6/2023 | 2023 | 50.02 | 2023 | 2023 |
| 4/10/2023 | 2023 | 2.05 | 2023 | 2023 |
| 5/20/2023 | 2023 | 75.64 | 2023 | 2023 |
| 6/25/2023 | 2023 | 98.11 | 2023 | 2023 |
| 7/19/2023 | 2023 | 30.00 | 2023 | 2023 |
| 9/27/2023 | 2023 | 76.11 | 2023 | 2023 |
| 10/26/2023 | 2023 | 43.21 | 2023 | 2023 |
| 11/12/2023 | 2023 | 135.41 | 2023 | 2023 |
| 1/15/2024 | 2024 | 67.24 | 2024 | 2024 |

Vergleiche, Teil 1: Verhalten ohne CalcDim()

In der obigen Tabelle gibt es keinen Unterschied zwischen den beiden Spalten mit berechneten Dimensionen.

Wählen Sie in der Spalte if(Year $(vCutoffYear), 'Older', Year) der Tabelle den Wert 2023 aus. Beachten Sie, dass in der Auswahl-Symbolleiste der Wert aus einem Feld mit der Bezeichnung =if(Year2023,'Older',Year) ausgewählt wird.

Als Nächstes ändern Sie die Definition der Variable vCutoffYear in 2024. Beachten Sie, dass das Auswahlfeld =if(Year2023,'Older',Year) zwar unverändert ist und den ausgewählten Wert 2023 beibehält, die Daten in der Tabelle jedoch geändert wurden. Der Wert 2023 hat sich in den Wert Older geändert. Wenn Sie Older in der Spalte if(Year $(vCutoffYear), 'Older', Year) auswählen, erfolgt die Auswahl Older in einem neuen Feld: =if(Year2024,'Older',Year).

Im Wesentlichen wird für jeden Wert der vCutoffYear Variable intern ein neues Feld erstellt. Bei der Arbeit mit gleichzeitigen und wechselnden Auswahlen ist dieses Verhalten unter Umständen nicht gewünscht, da es die Dateninterpretation erschweren kann.

Vergleiche, Teil 2: Verhalten mit CalcDim()

Nachdem Sie gesehen haben, wie sich die Formel ohne CalcDim() verhält, löschen Sie alle Auswahlen in der Anwendung. Setzen Sie die Variable vCutoffYear auf den Wert 2023 zurück.

Wählen Sie in der Spalte =CalcDim(if(Year $(vCutoffYear), 'Older', Year)) der Tabelle den Wert 2023 aus. Beachten Sie, dass in der Auswahl-Symbolleiste der Wert als Wert aus dem zugrunde liegenden Feld Year ausgewählt wird.

Als Nächstes ändern Sie die Definition der Variable vCutoffYear in 2024. Das Auswahlfeld Year bleibt gleich und behält den ausgewählten Wert 2023 bei, während sich die Daten in der Tabelle ändern, wenn CalcDim() nicht verwendet wird. Wenn Sie jetzt jedoch Older in der =CalcDim(if(Year $(vCutoffYear), 'Older', Year)) Spalte auswählen, wird der Wert 2024 in Year ausgewählt.

Alle Auswahlen, die Sie in einer in CalcDim() eingeschlossenen dynamischen Dimension vornehmen, werden auch in den zugrunde liegenden Feldern des ursprünglichen Datenmodells übernommen. Dies kann die Dateninterpretation vereinfachen und verhindert, dass unübersichtliche, komplexe Ausdrücke in der Auswahlsymbolleiste angezeigt werden, wenn Benutzer die Analyseinhalte verwenden.

* [Berechnete Felder](https://community.qlik.com/t5/Design/Calculated-Fields/ba-p/1694383)

* [Dynamische Dimensionen](https://help.qlik.com/de-DE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Dimensions/calculated-dimensions.htm)