FKT Set: Unterschied zwischen den Versionen

Aus CoPlanner 11
Zur Navigation springenZur Suche springen
T.auer (Diskussion | Beiträge)
beispiel für fkt_setbyexpression
Keine Bearbeitungszusammenfassung
 
(114 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 38: Zeile 38:
|}
|}


{{Hinweis|Text=Die Bedingungen können sich dabei <b>nur auf in der Dimension vorhandene Lookupdimensionen</b> beziehen. Auf Dimensionsattribute(wie z. B. ein in die Dimension eingefügtes Dezimal-Measure) kann <b>nicht direkt gefiltert</b> werden.}}
{{Hinweis|Text=<small><small>''(Bis CoPlanner 11 Release 2 2025)''</small></small> Die Bedingungen können sich dabei <b>nur auf in der Dimension vorhandene Lookupdimensionen</b> beziehen. Auf Dimensionsattribute(wie z. B. ein in die Dimension eingefügtes Dezimal-Measure) kann <b>nicht direkt gefiltert</b> werden.}}


Diese Funktion gehört zu den [[:Kategorie:Funktionen_-_serverseitig|serverseitigen Funktionen]].
Diese Funktion gehört zu den [[:Kategorie:Funktionen_-_serverseitig|serverseitigen Funktionen]].


==Ergebnis==
==Ergebnis==
Liefert alle Elemente, auf welche die Bedingung(en) zutreffen.
Liefert alle Elemente, auf welche die Bedingung(en) zutreffen. (das bedeutet: es liefert ein SET/ eine Liste an Copsys_ids zurück, die den Kriterien entsprechen).


==Anwendungsmöglichkeiten==
==Anwendungsmöglichkeiten==
Normalerweise kann - mit kleineren Ausnahmen - FKT_SET überall angewendet werden. Die gängigsten Anwendungsfälle sind ReadOnlyElementsExpression oder AvailableElementsExpression in Matrixmasken.
Normalerweise kann - mit kleineren Ausnahmen - FKT_SET überall angewendet werden. Die gängigsten Anwendungsfälle sind ReadOnlyElementsExpression und AvailableElementsExpression in Matrixmasken sowie die Einschränkung der Auswahlmöglichkeiten von Dimensionselementen einer Attributdimension, wenn diese in einer anderen Dimension als Attributdimension definiert ist. Siehe dazu den Punkt [[WebApps:Dimensionswartungseditor#Kontextmenü der Header|"Verfügbare Elemente"]] im Kontextmenü im Header im Dimensionswartungseditor.


==Beispiele==
==Beispiele==
Zeile 63: Zeile 63:


Zusätzlich definiert man eine Anwendungseigenschaft "EinwohnerZehntausend" für mehr als 10.000 Einwohner auf diese Lookupdimension. (Anwendungseigenschaft auf Dimension: DIM_Einwohnerzahl: Dimensionselement >10.000)
Zusätzlich definiert man eine Anwendungseigenschaft "EinwohnerZehntausend" für mehr als 10.000 Einwohner auf diese Lookupdimension. (Anwendungseigenschaft auf Dimension: DIM_Einwohnerzahl: Dimensionselement >10.000)
{{Hinweis|Text=Es muss nicht unbedingt eine Anwendungseigenschaft definiert werden. Es kann direkt auf das zugeordnete Dimensionselement über die COPSYS_ID abgefragt werden. Dann ändert sich jedoch die Schreibweise leicht, weil dann kein "+" als Verkettungsoperator für den String angegeben werden muss. Dazu bitte die Syntaxbeispiele unter "[[FKT_Set#Gesammelte Auflistung der Expressions für die oben angeführten Beispiele|Gesammelte Auflistung der Expressions für die oben angeführten Beispiele]]" weiter unten auf dieser Seite beachten.}}


Wenn man jetzt in einer einfachen Maske die Regionen auf die Achse gibt und folgenden Ausdruck bei AvailableElementsExpression der Dimension angibt:
<code>FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)</code>


oder Angabe direkt auf die COPSYS_ID von Element "> 10.000" der zugeordneten DIM_Einwohnerzahl. (Weitere Beispiele [[FKT_Set#Gesammelte Auflistung der Expressions für die oben angeführten Beispiele|weiter unten]] auf dieser Seite.)


Wenn man jetzt in einer einfachen Maske die Regionen auf die Achse gibt und folgenden Ausdruck bei AvailableElementsExpression der Dimension angibt:
<code>FKT_SET('DIM_Einwohnerzahl != '232748945503106)</code>


<code>FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)</code>


so erhält man folgendes Ergebnis auf der Achse:
so erhält man folgendes Ergebnis auf der Achse:
Zeile 115: Zeile 119:
(siehe Beispiele)
(siehe Beispiele)


* [[FKT ALLCHILDRENTREE]]
''<small>FKT_ALLCHILDRENTREE ist ab CoPlanner Release 1 2026 verfügbar</small>''
Liefert alle Elemente, auf welche die Bedingung zutrifft und zusätzlich alle Child-Elemente inkl. der jeweiligen Verzweigungen.


Ein Beispiel hierfür ist im Artikel zu FKT_ALLCHILDRENTREE zu finden.


===== Gesammelte Auflistung der Expressions für die oben angeführten Beispiele =====
===== Gesammelte Auflistung der Expressions für die oben angeführten Beispiele =====
Zeile 124: Zeile 134:
:* <code>FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))</code>
:* <code>FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))</code>
:* <code>FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))</code>
:* <code>FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))</code>
Die gleichen Beispiele bei Angabe direkt auf die COPSYS_ID von Element "> 10.000" der zugeordneten Dimension "DIM_Einwohnerzahl" aus dem Beispiel. (Dann ist es nicht notwendig eine AWE anzulegen.)
:* <code>FKT_SET('DIM_Einwohnerzahl != '232748945503106)</code>
:* <code>FKT_FULLSUBTREE('DIM_Einwohnerzahl != '232748945503106)</code>
:* <code>FKT_FULLSUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))</code>
:* <code>FKT_SPARSESUBTREE('DIM_Einwohnerzahl != '232748945503106)</code>
:* <code>FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))</code>
:* <code>FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))</code>
=== Generisches Beispiel mit einem True/False Dimensionsattribut (als Lookupdimension) ===
Es gibt zwei Dimensionen und eine Tabelle. Darauf baut später eine Matrixmaske auf.
'''Dimensionen:'''
* dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen.
* dim2: Enthält nur die Elemente TRUE und FALSE.
dim2 ist dim1 als Attribut/Lookupdimension zugeordnet.[[Datei:FktsetGenerischesBeispielDim1.png|ohne|mini|dim1 enthält dim2 als Lookup]]
'''Tabelle:'''
* tbl1: Enthält ein dezimalmeasure "value"
dim1 ist eine Attribut/Lookupdimension in tbl1.
'''Matrixmaske''':
Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.
Über eine AvailableElementsExpression auf dim1 in der Matrixmaske kann nun auf Basis dessen was in der Attributdimension ''dim2'' in dim1 (True oder False) ausgewählt ist, gesteuert werden, was in der Matrixmaske angezeigt/gefiltert werden soll und was nicht.
'''Mögliche Expression:'''
Beispiel für Expression die in der AvailableElementsExpression zu hinterlegen ist: 
<code>FKT_SET('dim2 != '667954417107318800)</code>
{{Hinweis|Text="667954417107318800" ist im Beispiel die COPSYS_ID des Elements "True" in dim2.}} 
'''Ergebnis:''' 
Als Ergebnis wird daher die Maske wie folgt angezeigt: 
[[Datei:FktsetGenerischesBeispielEM1.png|ohne|mini]]
'''Erklärung:'''
In dieser Konstellation werden alle Elemente angezeigt bei der in "dim1" in der zugeordneten Lookupdimension "dim2" true ausgewählt ist. (siehe Screenshot weiter oben von dim1)
'''Abbildung über Anwendungseigenschaft:''' 
Dies könnte - wie im ersten Beispiel mit den Regionen und Einwohnern beschrieben - auch über z. B. eine AWE noch "eleganter" abgebildet und angezeigt werden. 
Das bedeutet dazu kann z.B. eine Anwendungseigenschaft "dim2_true" angelegt werden. (Anwendungseigenschaft auf Dimension: "dim2". Dimensionselement: "True") 
'''Expression mit Anwendungseigenschaft:''' 
Dann würde die Expression lauten: 
<code>FKT_SET('dim2 != ' + @dim2_true@)</code>
Das Ergebnis in der Matrixmaske ist das gleiche.
==== FKT_SET auf Knotenelementen erklärt am vorliegenden Beispiel ====
{{Hinweis|Text=Für den Gebrauch von FKT_SET auf Knotenelemente gilt: FKT_SET filtert das jeweilige Element wirklich "komplett" weg.Das bedeutet: Nicht mehr vorhandene Ebenen werden pro Element eingerückt. }}
Im Beispiel bedeutet das: Wenn das "Element 11" über dim2 auf "False" gesetzt wird, bleiben Element 13 und Element 14 bestehen und werden aber eine Ebene nach links "eingerückt".
Sprich bei gleichem Beispielaufbau ergibt die folgende Konstellation in der Dimension:
[[Datei:FktsetGenerischesBeispielKnotenelementDim1.png|ohne|mini|311x311px]]
das folgende Ergebnis in der Maske:
[[Datei:FktsetGenerischesBeispielKnotenelementEM1.png|ohne|mini|407x407px]]
=== Verwendung von Wertfeldern als Dimensionsattribut (ohne Verwendung von Lookupdimensionen) <small><small>''(ab CoPlanner 11 Release 2 2025)''</small></small>===
Es ist möglich, direkt über Attributmeasures zu filtern, die keine Lookupdimensionen sind sondern Wertmeasures (Dezimal, Ganzzahl etc.). Die Synthax lautet dann:
<code>FKT_SET('NameDesAttributmeasures OPERATOR Wert')</code>
* Beispiel: <code>FKT_SET('Attributmeasure < 5')</code>
<small>''Hinweis: Der Umweg über die Verwendung von Lookupdimensionen für einfache Abfragen, bei denen es z. B. nur um eine True/False Abfrage oder die Unterscheidung von Wertebereichen geht, bei der geprüft wird ob z. B. ein bestimmtes Attribut größer oder kleiner einem bestimmten Wert ist, war nur bis einschließlich Version CoPlanner CoPlanner 11 Release 2 2025 notwendig. Ab CoPlanner 11 Release 2 2025 kann hierfür - wie eben beschrieben - auch direkt ein Wertefeld verwendet werden.''</small>
Siehe dazu die zwei folgenden Beispiele''
==== Generisches Beispiel mit einem bool-Dimensionsattribut (True/False ) ====
Es gibt eine Dimension und eine Tabelle. Auf der Tabelle baut später eine Matrixmaske auf.
'''Dimension'''
* dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen und eine Attributspalte/ein Attributmeasure vom Typ bool ("AttributeBool")
[[Datei:FktsetGenerischesBeispielBoolOhneLookupDim1.png|ohne|mini]]
'''Tabelle:'''
* tbl1: Enthält ein dezimalmeasure "value"
dim1 ist eine Attribut/Lookupdimension in tbl1.
'''Matrixmaske''':
Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.
'''Mögliche Expression:'''
Nun kann man auf die Dimension in der Matrixmaske z. B. folgenden Ausdruck definieren:
<code>FKT_SET('AttributeBool = true')</code>
Dieser schränkt die Anzeige der Dimensionselemente auf alle Elemente ein, bei denen der Boolwert im '''Dimensionsattribut''' von dim1 true ist.
'''Ergebnis in der Matrixmaske'''
[[Datei:FktsetGenerischesBeispielBoolOhneLookupEM1.png|ohne|mini]]
'''Erklärung:'''
In dieser Konstellation werden alle Elemente angezeigt bei denen in "dim1" der Wert im Attributmeasure "AttributeBool" true ist. (siehe Screenshot weiter oben von dim1)
==== Generisches Beispiel mit einem Wertebereich in einem Dezimal-Dimensionsattribut====
Es gibt eine Dimension und eine Tabelle. Auf der Tabelle baut später eine Matrixmaske auf.
'''Dimension'''
* dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen und eine Attributspalte/ein Attributmeasure vom Typ Dezimal ("AttributeValue")
[[Datei:FktsetGenerischesBeispielWertebereichOhneLookupDim1.png|ohne|mini]]
'''Tabelle:'''
* tbl1: Enthält ein dezimalmeasure "value"
dim1 ist eine Attribut/Lookupdimension in tbl1.
'''Matrixmaske''':
Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.
'''Mögliche Expression:'''
Nun kann man auf die Dimension in der Matrixmaske z. B. folgenden Ausdruck definieren:
<code>FKT_SET('AttributeValue <= 5')</code>
Dieser schränkt die Anzeige der Dimensionselemente auf alle Elemente ein, bei denen der Wert im '''Dimensionsattribut''' von dim1 kleiner oder gleich 5 ist.
'''Ergebnis in der Matrixmaske'''
[[Datei:FktsetGenerischesBeispielWertebereichOhneLookupEM1.png|ohne|mini]]
'''Erklärung:'''
In dieser Konstellation werden alle Elemente angezeigt bei der in "dim1" im Attributmeasure "AttributeValue" Werte stehen, die kleiner oder gleich 5 sind. (siehe Screenshot weiter oben von dim1)


=== Weitere einfache Beispiele ===
=== Weitere einfache Beispiele ===
==== Verwendung von FKT_SET nur direkt auf Dimensionselemente ====
:* Root-Element und "keine Zuordnung" in der Dimension unterdrücken
:* Root-Element und "keine Zuordnung" in der Dimension unterdrücken
:: <code>FKT_SET('COPSYS_ID > 2')</code>
:: <code>FKT_SET('COPSYS_ID > 2')</code>
Zeile 135: Zeile 309:
:: <code>FKT_SET('COPSYS_ID me+under 638797822088410875')</code>
:: <code>FKT_SET('COPSYS_ID me+under 638797822088410875')</code>


== Komplexere Abfragen ==
==== Verwendung von FKT_SET auf andere Felder (z. B. Attributmeasures in einer Dimension) ====
:* Eine Dimension hat ein Attributmeasure vom Typ Dezimal auf das gefiltert wird
:: <code>FKT_SET('Attributmeasure < 5')</code>
:: <code>FKT_SET('Attributmeasure <> 0')</code>
:: <code>FKT_SET('Attributmeasure >= 100000')</code>
 
:* Eine Dimension hat ein Attributmeasure vom Typ bool auf das gefiltert wird
:: <code>FKT_SET('Attributmeasure = true')</code>
 
=== Beispiele bei Verwendung zur Einschränkung von Lookupdimensionen/Attributdimensionen in einer anderen Dimension ===
FKT_Set kann auch verwendet werden, um auswählbare Dimensionen einzuschränken, wenn eine Dimension als Attributdimension in einer anderen Dimension verwendet wird. Dadurch können z. b. "Einschränkungsbereiche" definiert werden. Hierzu zwei Beispiele
 
==== Generelles Beispiel ====
Im Beispiel ist das Ziel, dass auf Elementebene in "dim1" eingeschränkt werden kann, welche Elemente der Attributdimension "dim2" als Attribut ausgewählt werden können.
 
Aufbau:
 
'''Dimensionen:'''
 
* dim1: Enthält Elemente und "dim2" zweimal als Lookupdimension mit unterschiedlichem Alias.
[[Datei:FktsetBeispielEinschraenkungDimensionsbereichDim1.png|ohne|mini|dim1|516x516px]]
*dim2: Enthält nur Elemente
[[Datei:FktsetBeispielEinschraenkungDimensionsbereichDim2.png|ohne|mini|dim2]]
 
Konkret soll für Element 5 in dim1 im Attribut  "dim2" nur Elemente ausgewählt werden können die Element 2 sind oder sich unterhalb von Element 2 befinden.
 
Dazu kann in "dim1" auf der Attributdimension "dim2" bei den [[WebApps:Dimensionswartungseditor#Kontextmenü der Header|verfügbaren Elementen]] folgende Expression definiert werden: 
 
'''Mögliche Expression:''' <code>FKT_SET('[COPSYS_ID] !me_under ' + [dim2_Einschraenkungsbereich])</code> [[Datei:FktsetBeispielEinschraenkungDimensionsbereichAusdruck.png|ohne|mini|688x688px]]
 
 
'''Ergebnis:'''
 
Nun kann über die Auswahl der Elemente in "dim2_Einschränkungsbereich" die Auswahlmöglichkeit der Elemente in "dim2" eingeschränkt werden.Im Beispiel nun bei Element 5 in der Attributdimension "dim2_Einschränkungsbereich" das Element 2 auswählen.
[[Datei:FktsetBeispielEinschraenkungDimensionsbereichDim1EingeschraenkteElemente.png|ohne|mini|685x685px]]
Nun kann für das Attribut "dim2" auf Element 5, nur noch Element 2 und diesem untergeordnete Elemente aus dim2 ausgewählt werden.
 
{{Hinweis|Text=Dies kann damit pro Element ausgewählt werden, jedoch nur nach den Kriterien der Expression für die Verfügbaren Elemente. Diese wird - wie eben dargestellt - für die ganze "Attributspalte" dim2 definiert.}}
 
 
 
'''Ergebnis, wenn für alle Elemente eine gültige Einschränkung erfolgt ist:'''
[[Datei:FktsetBeispielEinschraenkungDimensionsbereichDim1AlleElementeEingeschraenkt.png|ohne|mini|446x446px]]
 
 
 
'''möglicher Anwendungsfall'''
 
Dies ist z. B. bei Zuordnungen hilfreich wenn für den User sinnvolle Attribute vorausgewählt werden sollen.
 
 
==== Beispiel bei Verwendung von Wertfeldern als Dimensionsattribut <small><small>''(ab CoPlanner 11 Release 2 2025)''</small></small> ====
Wenn man die Auswahlmöglichkeit nicht anhand der gleichen Dimension wie im vorhergehenden Beispiel beschrieben einschränken möchte, sondern anhand z. B. eine Bool- Oder Wertfeldes ist dies auch möglich. Dies ist dann analog zum [[FKT_Set#Generisches Beispiel mit einem bool-Dimensionsattribut (True/False )|generischen Beispiel mit einem bool-Dimensionsattribut (True/False ).]] Jedoch wird dann die FKT_SET Expression nicht in einer Matrixmaske sondern wie im vorhergehenden Beispiel auf die Verfügbaren Elemente der Attributdimension definiert.
 
Möglicher Aufbau:
 
* dim1 enthält Elemente und dim2 als Attributdimension
[[Datei:FktsetBeispiel2BoolEinschraenkungDimensionsbereichDim1.png|ohne|mini|347x347px|dim1]]
* dim2 enthält Element und ein Attributmeasure vom Typ bool.
[[Datei:FktsetBeispiel2BoolEinschraenkungDimensionsbereichDim2.png|ohne|mini|dim2]]
 
 
'''Mögliche Expression:'''
 
Nun auf definiert in "dim1" auf der Attributdimension "dim2" in der verfügbaren Elemente Einstellung den folgenden Ausdruck:
 
<code>FKT_SET('bool_AuswahlInDim1Moeglich = true')</code>
 
'''Ergebnis:'''
 
Es werden bei der Auswahl der Elemente für dim2 nun nur noch diese angezeigt, bei denen das bool feld "bool_AuswahlInDim1Moeglich" auf true steht.
[[Datei:FktsetBeispiel2BoolEinschraenkungDimensionsbereichDim1EingeschraenkteElemente.png|ohne|mini|684x684px|Auswahlmöglichkeit bei Klick auf Element 2 im Attribut "dim2"]]
 
 
== Komplexere Abfragen (FKT_SetByExpression) ==
 
* FKT_SetByExpression
 
Für komplexere Abfragen gibt es noch die Funktion  FKT_SetByExpression, die es ermöglicht, eine Menge mit boolschen Ausdrücken abzufragen.
Für komplexere Abfragen gibt es noch die Funktion  FKT_SetByExpression, die es ermöglicht, eine Menge mit boolschen Ausdrücken abzufragen.


Zeile 143: Zeile 396:
<code>FKT_SetByExpression('([COPSYS_ID] = 1) OR (FKT_DimHasChildren("Regionen", [COPSYS_ID]) = false)')</code>
<code>FKT_SetByExpression('([COPSYS_ID] = 1) OR (FKT_DimHasChildren("Regionen", [COPSYS_ID]) = false)')</code>


damit dies funktioniert, muss man im Ausdruck 2 unterschiedliche Hochkomma verwenden.
{{Hinweis|Text=Damit dies funktioniert, muss man im Ausdruck 2 unterschiedliche Hochkomma verwenden.}}
__NOEDITSECTION__  
__NOEDITSECTION__  



Aktuelle Version vom 2. April 2026, 15:39 Uhr

Funktion

FKT_SET('<Bedingung 1>', ..., '<Bedingung n>')

FKT_SET dient dazu, Elemente aus einer Dimension auszuwählen, bzw. eine Dimension einzuschränken (ähnlich wie dies bisher über RuleFilter gelöst werden konnte).

Der Aufbau der Syntax ist dabei an Funktionen wie FKT_SUM oder FKT_AGG orientiert.

Parameter Beschreibung
Bedingung 1 bis n Jede Bedingung besteht aus 3 Teilen
  • dem einzuschränkenden Attribut
  • einem Operator
  • und der Einschränkung selbst

Beispiel: COPSYS_ID me @Session_Unternehmen_ID@.

Das einzuschränkende Attribut bezieht sich immer auf die Dimension auf der das FKT_SET gesetzt wird. Daher sind diese nur mit dem Namen anzugeben. Falls eine Dimension als Attribut mehrfach in der Dimension vorkommt, dann kann durch Angabe des Alias oder des LookUp-Appendix die gewünschte Dimension angegeben werden. Wird kein Appendix angegeben und kein Alias verwendet, wird immer die LookUp-Dimension _1 genommen. Anzugeben wäre dies z.B.: Unternehmen_1 me @Session_Unternehmen_ID@

Der Operator ist mit einem Vergleichstyp anzugeben, wobei folgende erlaubt sind:

  • me+under
  • me
  • <>
  • >
  • >=
  • <
  • <=

Die Einschränkung = wird bei Dimensionen immer als me interpretiert und ist nur aus Kompatibilitätsgründen enthalten.

Die Einschränkung selbst kann jeder Datenpfad, Variable oder Funktion sein, die eine gültige COPSYS_ID liefert.

Hinweis  (Bis CoPlanner 11 Release 2 2025) Die Bedingungen können sich dabei nur auf in der Dimension vorhandene Lookupdimensionen beziehen. Auf Dimensionsattribute(wie z. B. ein in die Dimension eingefügtes Dezimal-Measure) kann nicht direkt gefiltert werden.

Diese Funktion gehört zu den serverseitigen Funktionen.

Ergebnis

Liefert alle Elemente, auf welche die Bedingung(en) zutreffen. (das bedeutet: es liefert ein SET/ eine Liste an Copsys_ids zurück, die den Kriterien entsprechen).

Anwendungsmöglichkeiten

Normalerweise kann - mit kleineren Ausnahmen - FKT_SET überall angewendet werden. Die gängigsten Anwendungsfälle sind ReadOnlyElementsExpression und AvailableElementsExpression in Matrixmasken sowie die Einschränkung der Auswahlmöglichkeiten von Dimensionselementen einer Attributdimension, wenn diese in einer anderen Dimension als Attributdimension definiert ist. Siehe dazu den Punkt "Verfügbare Elemente" im Kontextmenü im Header im Dimensionswartungseditor.

Beispiele

Hinweis  In den hier aufgeführten Beispielen bzw. auch bei vergleichbaren Funktionen in CoPlanner handelt es sich bei einer Schreibweise wie z.B. Einwohnerzahl != ' + @Anwendungseigenschaft@ oder COPSYS_ID !< 2 entgegen allgemein gängiger Konventionen NICHT um ein "Ungleich" oder einen Negationsoperator. Das "!" wird in CoPlanner in manchen Fällen zur Kennzeichnung des Vergleichoperators innerhalb bestimmter Expressions benötigt. Es sind hier sowohl Beispiele aufgeführt, in denen das "!" benötigt wird und andere Fälle in denen dies nicht notwendig ist.

Beispiel: Einwohnerzahl größer als 10.000

Beispielaufbau

Man hat eine einfache Dimension Regionen, die wie folgt aussieht:

Die einzelnen Orte der Bezirke haben dabei ein Attribut "DIM_Einwohnerzahl" das angibt, ob die Orte mehr als 10.000 Einwohner haben.

  • Hinweis: Es handelt sich hierbei um eine Lookupdimension, nicht um Wertfeld wie z. b. ein Dezimalattribut

Zusätzlich definiert man eine Anwendungseigenschaft "EinwohnerZehntausend" für mehr als 10.000 Einwohner auf diese Lookupdimension. (Anwendungseigenschaft auf Dimension: DIM_Einwohnerzahl: Dimensionselement >10.000)

Hinweis  Es muss nicht unbedingt eine Anwendungseigenschaft definiert werden. Es kann direkt auf das zugeordnete Dimensionselement über die COPSYS_ID abgefragt werden. Dann ändert sich jedoch die Schreibweise leicht, weil dann kein "+" als Verkettungsoperator für den String angegeben werden muss. Dazu bitte die Syntaxbeispiele unter "Gesammelte Auflistung der Expressions für die oben angeführten Beispiele" weiter unten auf dieser Seite beachten.

Wenn man jetzt in einer einfachen Maske die Regionen auf die Achse gibt und folgenden Ausdruck bei AvailableElementsExpression der Dimension angibt:

FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)

oder Angabe direkt auf die COPSYS_ID von Element "> 10.000" der zugeordneten DIM_Einwohnerzahl. (Weitere Beispiele weiter unten auf dieser Seite.)

FKT_SET('DIM_Einwohnerzahl != '232748945503106)


so erhält man folgendes Ergebnis auf der Achse:


Es kann auf Session-Variablen und Anwendungseigenschaften zugegriffen werden, und gleich wie in FKT_SUM... auf Filter in der Maske.

Anwendung der Funktion erfolgt z.B. bei Matrixmasken in der ReadOnlyElementsExpression oder AvailableElementsExpression.


Verwandte Funktionen

Funktioniert wie FKT_SET, liefert aber zusätzlich einen Teilbaum (bis zu einem gemeinsamen Parent)

Beispielexpression: FKT_SPARSESUBTREE('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@) oder FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))

Im oben beschriebenen Beispiel erhält man folgendes Ergebnis:


Funktioniert wie FKT_SET, liefert aber zusätzlich alle Parentelemente bis zum Wurzelknoten

Beispielexpression: FKT_FULLSUBTREE('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@) oder FKT_FULLSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))

Im oben beschriebenen Beispiel erhält man folgendes Ergebnis:


  • FKT_COMMONPARENTSUBTREE

Funktioniert wie FKT_SET, liefert aber zusätzlich ein gemeinsames Element als Wurzelknoten (damit dieses z.B. im Filter ausgewählt werden kann um alle zu wählen)

Beispielexpression: FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))

Im oben beschriebenen Beispiel erhält man folgendes Ergebnis:


Liefert die gruppierten Elemente der angegebenen Spalte in der angegebenen Tabelle. Um auch diese Daten als Sparsetree bzw. Fulltree aufzubauen, ist eine Verschachtelung der Expressions möglich.

(siehe Beispiele)

FKT_ALLCHILDRENTREE ist ab CoPlanner Release 1 2026 verfügbar

Liefert alle Elemente, auf welche die Bedingung zutrifft und zusätzlich alle Child-Elemente inkl. der jeweiligen Verzweigungen.

Ein Beispiel hierfür ist im Artikel zu FKT_ALLCHILDRENTREE zu finden.

Gesammelte Auflistung der Expressions für die oben angeführten Beispiele
  • FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)
  • FKT_FULLSUBTREE('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)
  • FKT_FULLSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))
  • FKT_SPARSESUBTREE('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@)
  • FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))
  • FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != ' + @EinwohnerZehntausend@))


Die gleichen Beispiele bei Angabe direkt auf die COPSYS_ID von Element "> 10.000" der zugeordneten Dimension "DIM_Einwohnerzahl" aus dem Beispiel. (Dann ist es nicht notwendig eine AWE anzulegen.)

  • FKT_SET('DIM_Einwohnerzahl != '232748945503106)
  • FKT_FULLSUBTREE('DIM_Einwohnerzahl != '232748945503106)
  • FKT_FULLSUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))
  • FKT_SPARSESUBTREE('DIM_Einwohnerzahl != '232748945503106)
  • FKT_SPARSESUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))
  • FKT_COMMONPARENTSUBTREE(FKT_SET('DIM_Einwohnerzahl != '232748945503106))

Generisches Beispiel mit einem True/False Dimensionsattribut (als Lookupdimension)

Es gibt zwei Dimensionen und eine Tabelle. Darauf baut später eine Matrixmaske auf.

Dimensionen:

  • dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen.
  • dim2: Enthält nur die Elemente TRUE und FALSE.

dim2 ist dim1 als Attribut/Lookupdimension zugeordnet.

dim1 enthält dim2 als Lookup


Tabelle:

  • tbl1: Enthält ein dezimalmeasure "value"

dim1 ist eine Attribut/Lookupdimension in tbl1.


Matrixmaske:

Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.

Über eine AvailableElementsExpression auf dim1 in der Matrixmaske kann nun auf Basis dessen was in der Attributdimension dim2 in dim1 (True oder False) ausgewählt ist, gesteuert werden, was in der Matrixmaske angezeigt/gefiltert werden soll und was nicht.


Mögliche Expression:

Beispiel für Expression die in der AvailableElementsExpression zu hinterlegen ist:

FKT_SET('dim2 != '667954417107318800)

Hinweis  "667954417107318800" ist im Beispiel die COPSYS_ID des Elements "True" in dim2.


Ergebnis:

Als Ergebnis wird daher die Maske wie folgt angezeigt:

Erklärung: In dieser Konstellation werden alle Elemente angezeigt bei der in "dim1" in der zugeordneten Lookupdimension "dim2" true ausgewählt ist. (siehe Screenshot weiter oben von dim1)


Abbildung über Anwendungseigenschaft:

Dies könnte - wie im ersten Beispiel mit den Regionen und Einwohnern beschrieben - auch über z. B. eine AWE noch "eleganter" abgebildet und angezeigt werden.

Das bedeutet dazu kann z.B. eine Anwendungseigenschaft "dim2_true" angelegt werden. (Anwendungseigenschaft auf Dimension: "dim2". Dimensionselement: "True")

Expression mit Anwendungseigenschaft:

Dann würde die Expression lauten:

FKT_SET('dim2 != ' + @dim2_true@) Das Ergebnis in der Matrixmaske ist das gleiche.

FKT_SET auf Knotenelementen erklärt am vorliegenden Beispiel

Hinweis  Für den Gebrauch von FKT_SET auf Knotenelemente gilt: FKT_SET filtert das jeweilige Element wirklich "komplett" weg.Das bedeutet: Nicht mehr vorhandene Ebenen werden pro Element eingerückt.

Im Beispiel bedeutet das: Wenn das "Element 11" über dim2 auf "False" gesetzt wird, bleiben Element 13 und Element 14 bestehen und werden aber eine Ebene nach links "eingerückt".


Sprich bei gleichem Beispielaufbau ergibt die folgende Konstellation in der Dimension:

das folgende Ergebnis in der Maske:

Verwendung von Wertfeldern als Dimensionsattribut (ohne Verwendung von Lookupdimensionen) (ab CoPlanner 11 Release 2 2025)

Es ist möglich, direkt über Attributmeasures zu filtern, die keine Lookupdimensionen sind sondern Wertmeasures (Dezimal, Ganzzahl etc.). Die Synthax lautet dann:

FKT_SET('NameDesAttributmeasures OPERATOR Wert')

  • Beispiel: FKT_SET('Attributmeasure < 5')

Hinweis: Der Umweg über die Verwendung von Lookupdimensionen für einfache Abfragen, bei denen es z. B. nur um eine True/False Abfrage oder die Unterscheidung von Wertebereichen geht, bei der geprüft wird ob z. B. ein bestimmtes Attribut größer oder kleiner einem bestimmten Wert ist, war nur bis einschließlich Version CoPlanner CoPlanner 11 Release 2 2025 notwendig. Ab CoPlanner 11 Release 2 2025 kann hierfür - wie eben beschrieben - auch direkt ein Wertefeld verwendet werden.

Siehe dazu die zwei folgenden Beispiele

Generisches Beispiel mit einem bool-Dimensionsattribut (True/False )

Es gibt eine Dimension und eine Tabelle. Auf der Tabelle baut später eine Matrixmaske auf.

Dimension

  • dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen und eine Attributspalte/ein Attributmeasure vom Typ bool ("AttributeBool")


Tabelle:

  • tbl1: Enthält ein dezimalmeasure "value"

dim1 ist eine Attribut/Lookupdimension in tbl1.


Matrixmaske:

Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.

Mögliche Expression:

Nun kann man auf die Dimension in der Matrixmaske z. B. folgenden Ausdruck definieren:

FKT_SET('AttributeBool = true')

Dieser schränkt die Anzeige der Dimensionselemente auf alle Elemente ein, bei denen der Boolwert im Dimensionsattribut von dim1 true ist.


Ergebnis in der Matrixmaske

Erklärung: In dieser Konstellation werden alle Elemente angezeigt bei denen in "dim1" der Wert im Attributmeasure "AttributeBool" true ist. (siehe Screenshot weiter oben von dim1)


Generisches Beispiel mit einem Wertebereich in einem Dezimal-Dimensionsattribut

Es gibt eine Dimension und eine Tabelle. Auf der Tabelle baut später eine Matrixmaske auf.

Dimension

  • dim1: Enthält die Elemente auf die später die Daten aufgebaut werden sollen und eine Attributspalte/ein Attributmeasure vom Typ Dezimal ("AttributeValue")


Tabelle:

  • tbl1: Enthält ein dezimalmeasure "value"

dim1 ist eine Attribut/Lookupdimension in tbl1.


Matrixmaske:

Darauf wird nun (ein Würfel und dann) eine Matrixmaske aufgebaut in der dim1 auf der Achse liegt.

Mögliche Expression:

Nun kann man auf die Dimension in der Matrixmaske z. B. folgenden Ausdruck definieren:

FKT_SET('AttributeValue <= 5')

Dieser schränkt die Anzeige der Dimensionselemente auf alle Elemente ein, bei denen der Wert im Dimensionsattribut von dim1 kleiner oder gleich 5 ist.


Ergebnis in der Matrixmaske

Erklärung: In dieser Konstellation werden alle Elemente angezeigt bei der in "dim1" im Attributmeasure "AttributeValue" Werte stehen, die kleiner oder gleich 5 sind. (siehe Screenshot weiter oben von dim1)


Weitere einfache Beispiele

Verwendung von FKT_SET nur direkt auf Dimensionselemente

  • Root-Element und "keine Zuordnung" in der Dimension unterdrücken
FKT_SET('COPSYS_ID > 2')
  • Bestimmte einzelne Elemente über deren COPSYS_ID aus einer Dimension wegfiltern
FKT_SET('COPSYS_ID <> 938797822888410908','COPSYS_ID <> 637797822088410900')
  • Nur auf ein bestimmtes Element und dessen Children filtern
FKT_SET('COPSYS_ID me+under 638797822088410875')

Verwendung von FKT_SET auf andere Felder (z. B. Attributmeasures in einer Dimension)

  • Eine Dimension hat ein Attributmeasure vom Typ Dezimal auf das gefiltert wird
FKT_SET('Attributmeasure < 5')
FKT_SET('Attributmeasure <> 0')
FKT_SET('Attributmeasure >= 100000')
  • Eine Dimension hat ein Attributmeasure vom Typ bool auf das gefiltert wird
FKT_SET('Attributmeasure = true')

Beispiele bei Verwendung zur Einschränkung von Lookupdimensionen/Attributdimensionen in einer anderen Dimension

FKT_Set kann auch verwendet werden, um auswählbare Dimensionen einzuschränken, wenn eine Dimension als Attributdimension in einer anderen Dimension verwendet wird. Dadurch können z. b. "Einschränkungsbereiche" definiert werden. Hierzu zwei Beispiele

Generelles Beispiel

Im Beispiel ist das Ziel, dass auf Elementebene in "dim1" eingeschränkt werden kann, welche Elemente der Attributdimension "dim2" als Attribut ausgewählt werden können.

Aufbau:

Dimensionen:

  • dim1: Enthält Elemente und "dim2" zweimal als Lookupdimension mit unterschiedlichem Alias.
dim1
  • dim2: Enthält nur Elemente
dim2

Konkret soll für Element 5 in dim1 im Attribut "dim2" nur Elemente ausgewählt werden können die Element 2 sind oder sich unterhalb von Element 2 befinden.

Dazu kann in "dim1" auf der Attributdimension "dim2" bei den verfügbaren Elementen folgende Expression definiert werden:

Mögliche Expression: FKT_SET('[COPSYS_ID] !me_under ' + [dim2_Einschraenkungsbereich])


Ergebnis:

Nun kann über die Auswahl der Elemente in "dim2_Einschränkungsbereich" die Auswahlmöglichkeit der Elemente in "dim2" eingeschränkt werden.Im Beispiel nun bei Element 5 in der Attributdimension "dim2_Einschränkungsbereich" das Element 2 auswählen.

Nun kann für das Attribut "dim2" auf Element 5, nur noch Element 2 und diesem untergeordnete Elemente aus dim2 ausgewählt werden.

Hinweis  Dies kann damit pro Element ausgewählt werden, jedoch nur nach den Kriterien der Expression für die Verfügbaren Elemente. Diese wird - wie eben dargestellt - für die ganze "Attributspalte" dim2 definiert.


Ergebnis, wenn für alle Elemente eine gültige Einschränkung erfolgt ist:


möglicher Anwendungsfall

Dies ist z. B. bei Zuordnungen hilfreich wenn für den User sinnvolle Attribute vorausgewählt werden sollen.


Beispiel bei Verwendung von Wertfeldern als Dimensionsattribut (ab CoPlanner 11 Release 2 2025)

Wenn man die Auswahlmöglichkeit nicht anhand der gleichen Dimension wie im vorhergehenden Beispiel beschrieben einschränken möchte, sondern anhand z. B. eine Bool- Oder Wertfeldes ist dies auch möglich. Dies ist dann analog zum generischen Beispiel mit einem bool-Dimensionsattribut (True/False ). Jedoch wird dann die FKT_SET Expression nicht in einer Matrixmaske sondern wie im vorhergehenden Beispiel auf die Verfügbaren Elemente der Attributdimension definiert.

Möglicher Aufbau:

  • dim1 enthält Elemente und dim2 als Attributdimension
dim1
  • dim2 enthält Element und ein Attributmeasure vom Typ bool.
dim2


Mögliche Expression:

Nun auf definiert in "dim1" auf der Attributdimension "dim2" in der verfügbaren Elemente Einstellung den folgenden Ausdruck:

FKT_SET('bool_AuswahlInDim1Moeglich = true')


Ergebnis:

Es werden bei der Auswahl der Elemente für dim2 nun nur noch diese angezeigt, bei denen das bool feld "bool_AuswahlInDim1Moeglich" auf true steht.

Auswahlmöglichkeit bei Klick auf Element 2 im Attribut "dim2"


Komplexere Abfragen (FKT_SetByExpression)

  • FKT_SetByExpression

Für komplexere Abfragen gibt es noch die Funktion FKT_SetByExpression, die es ermöglicht, eine Menge mit boolschen Ausdrücken abzufragen.

Anhand eines einfachen Beispiels: wenn man in der Dimension "Regionen" nur das Root-Element und alle Blattelemente als Ergebnis haben möchte, so geht dies mit folgender Abfrage:


FKT_SetByExpression('([COPSYS_ID] = 1) OR (FKT_DimHasChildren("Regionen", [COPSYS_ID]) = false)')

Hinweis  Damit dies funktioniert, muss man im Ausdruck 2 unterschiedliche Hochkomma verwenden.