Framework:RuleFilter: Unterschied zwischen den Versionen

Aus CoPlanner 10
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
==[[Framework:Funktionen|Funktion]]==
==[[Framework:Funktionen|Funktion]]==


<span {{CoPFormel}}>RuleFilter(Tabellenname,Spaltenname,[Kriterium 1 - Kriterium N]);</span>
Über Rulefilter können Dimension abhängig von einer bestimmten Filtereinstellung eingeschränkt werden.


Kaskadierende Filter: Diese Funktion bietet die Möglichkeit Filter einer Tabelle einzuschränken.
Rulefilter entsprechen kaskadierenden Filtern (nacheinander geschaltete Filter), welche die die Auswahl der Daten für eine Dimension beschränken.
Einzugeben im Feld "[[Framework:BI_Center:Eingabemaske_-_Eigenschaften_Dimension|SpecialDefinition]]" in der Dimension.
Die abhängige Dimension kann sich im Filter oder auf der Achse befinden.
 
{| {{Bausteindesign1}}
|-
| <span style="color: darkblue;">'''Hinweis'''</span> &nbsp;Der [[Framework:BI_Center:Eingabemaske_-_Eigenschaften_Dimension|OpenElementTyp]] der Dimension, auf welche der Rulefilter angewendet wird, muss auf ALL gesetzt sein.
|}
 
Einzugeben ist der Rulefilter im Feld "[[Framework:BI_Center:Eingabemaske_-_Eigenschaften_Dimension|SpecialDefinition]]" der Dimension bzw. des Measures.
 
{| {{Bausteindesign1}}
|-
| <span style="color: darkblue;">'''Hinweis'''</span> &nbsp;Die Expression darf KEINE Leerzeichen enthalten.
|}
 
 
===Rulefilter mit CoPlanner-Tabellen===
 
<span {{CoPFormel}}>RuleFilter(Tabellenname,Spaltenname,[Kriterium 1 - Kriterium N]'',FilterOperator,EmptyResult'');</span>
 
{| class="wikitable" width={{{breite|80%}}}
|- {{Tabellentitel}}
| Parameter
| Beschreibung
|-
|Tabellenname
|Bezeichnung der CoPlanner-Tabelle, auf welche der Rulefilter angewendet wird.
|-
|Spaltenname
|Bezeichnung der Spalte in der CoPlanner-Tabelle, auf welche der Filter ''(entspricht Kriterium)'' angewendet wird.
|-
|Kriterium
|Filterkriterium, welches auf die Dimension ''(entspricht Spaltenname)'' angewendet wird.
|-
|''FilterOperator''
|optionale Erweiterung des Rulefilters
|-
|''EmptyResult''
|optionale Erweiterung des Rulefilters
|}
 
 
'''Beispiel'''
 
Ziel:
In der Maske Umsatzerlöse IST sollen nur mehr jene Produkte gefiltert werden können, welche in der ausgewählten Region verkauft wurden.
 
Rulefilter:
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID]);</span><br>


{| class="wikitable" width={{{breite|80%}}}
{| class="wikitable" width={{{breite|80%}}}
Zeile 12: Zeile 59:
|-
|-
|Tabellenname
|Tabellenname
|Bezeichnung der Tabelle
|Umsatzerloese_IST
|-
|-
|Spaltenname
|Spaltenname
|Bezeichnung der Spalte in der Tabelle
|Produkte
|-
|-
|Kriterium
|Kriterium
|Ausdruck der angewendet wird
|Regionen/Kunden=[Regionen/Kunden.ID]
Vor dem '=' steht der Spaltenname und danach das Kriterium, das auf die Spalte angewendet werden soll. Mit diesem Ausdruck wird erreicht, dass nur jene Datensätze gefiltert werden, bei denen Regionen/Kunden mit dem ausgewählten Filterelement übereinstimmen.
|}
|}


Ergebnis:


<!-- <span {{CoPFormel}}>RuleFilter(Tabellenname,Spaltenname,[Kriterium 1 - Kriterium N],default=Dimensionselement);</span> -->
Nach Auswahl der Region ''Schweiz'', können im Produkte-Filter nur mehr jene Produkte ausgewählt werden, die in der Schweiz verkauft worden sind.
 
[[Image:EE_Ergebnis_Rulefilter_Umsatzerloese_IST.png|thumb|center|Enterprise Edition, Rulefilter mit CoPlanner-Tabellen im Filter]]
 
Der Rulefilter funktioniert genauso, wenn die Dimension auf die Achse gezogen wird:
 
[[Image:EE_Ergebnis_Rulefilter_Umsatzerloese_IST_Achse.png|thumb|center|Enterprise Edition, Rulefilter mit CoPlanner-Tabellen auf der Achse]]
 
{| {{Bausteindesign1}}
|-
| <span style="color: darkblue;">'''Hinweis'''</span> &nbsp;Sind zum ausgewählten Filterelement keine Daten vorhanden, wird standardmäßig eine leere Liste angezeigt. Diese kann mit dem Parameter [[Framework:EmptyResult|EmptyResult]] übersteuert werden.
|}
 
===Rulefilter mit SQL-Statements===


Es ist auch möglich direkt über ein SQL Statement auf den SQL Server zuzugreifen:
Es ist auch möglich direkt über ein SQL Statement auf den SQL Server zuzugreifen:




<span {{CoPFormel}}>RuleFilter(SqlQuery,Connection String,Bedingung);</span>
<span {{CoPFormel}}>RuleFilter(SqlQuery,Connection String,Bedingung'',EmptyResult'');</span>


{| class="wikitable" width={{{breite|80%}}}
{| class="wikitable" width={{{breite|80%}}}
Zeile 42: Zeile 104:
|Bedingung
|Bedingung
|SQL Statement
|SQL Statement
|-
|''EmptyResult''
|optionale Erweiterung des Rulefilters
|}
|}


Mit <span {{CoPFormel}}> RuleFilter(SqlQueryWithOrder,Connection String, Bedingung);</span> erfolgt die Sortierung über das SQL Statement.  
Mit <span {{CoPFormel}}> RuleFilter(SqlQueryWithOrder,Connection String, Bedingung);</span> erfolgt die Sortierung über das SQL Statement.  




Ab Version '''9.3 HF 2.3''' ist es möglich den Filteroperator optional zu definieren. Der Operator kann mit folgendem Parameter übersteuert werden: '''„FilterOperator=<Operator>“'''
==Optionale Erweiterungen des Rulefilters==
 
===FilterOperator===
Standardmäßig wird als Operator '=' verwendet. Dieser kann mit folgendem Parameter übersteuert werden: '''„FilterOperator=<Operator>“'''
Folgende Operatoren können ausgewählt werden:
Folgende Operatoren können ausgewählt werden:


Zeile 62: Zeile 131:
:*Like
:*Like


 
===EmptyResult===
 
Wenn eine Bedinung nicht zutrifft liefert der Rulefilter standardmäßig eine leere Liste. Das Verhalten kann mit folgendem Parameter übersteuert werden: '''EmptyResult=<Operator>'''
Wenn eine Bedinung nicht zutrifft liefert der Rulefilter eine leere Liste. Ab Version '''9.3 HF 2.3''' ist dies konfigurierbar. Das Verhalten kann mit folgendem Parameter übersteuert werden: '''EmptyResult=<Operator>'''
Folgende Operatoren können ausgewählt werden:
Folgende Operatoren können ausgewählt werden:
:*NoData (Default Wert)
:*NoData (Default Wert)
:*AllData -  „. AllData“ liefert alle Dimensionselemente, nach Aufbereiten der Security, wenn die Bedingung nicht zutrifft.
:*AllData -  „. AllData“ liefert alle Dimensionselemente, nach Aufbereiten der Security, wenn die Bedingung nicht zutrifft.


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


Diese Funktion gehört zu den [[:Kategorie:Funktionen_-_clientseitig|clientseitigen Funktionen]].
Beispiel:


==Ergebnis==
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],EmptyResult=AllData);</span><br>
Filtert die ausgwählte Spalte in einer bestimmten Tabelle nach einem oder mehreren Kriterien.


==Beispiel==
==Weitere Beispiele==
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_PLAN,Zeit,Produkte=[Produkte.ID]);</span><br>
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_PLAN,Zeit,Produkte=[Produkte.ID]);</span><br>
Eingegeben in "SpecialDefinition" in der Dimension "Zeit". In der Dimension "Produkte"  werden nur jene Produkte dargestellt, die der ausgewählten Zeit zugeordnet sind.
Eingegeben in "SpecialDefinition" in der Dimension "Zeit". In der Dimension "Produkte"  werden nur jene Produkte dargestellt, die der ausgewählten Zeit zugeordnet sind.
Zeile 101: Zeile 169:
RuleFilter können in Zeilensichten, Eingabe- sowie Einzelsatzmasken definiert werden.
RuleFilter können in Zeilensichten, Eingabe- sowie Einzelsatzmasken definiert werden.


'''Wichtig''': Die Expression darf KEIN Leerzeichen enthalten.
'''Wichtig''':  





Version vom 6. März 2015, 12:57 Uhr

Funktion

Über Rulefilter können Dimension abhängig von einer bestimmten Filtereinstellung eingeschränkt werden.

Rulefilter entsprechen kaskadierenden Filtern (nacheinander geschaltete Filter), welche die die Auswahl der Daten für eine Dimension beschränken. Die abhängige Dimension kann sich im Filter oder auf der Achse befinden.

Hinweis  Der OpenElementTyp der Dimension, auf welche der Rulefilter angewendet wird, muss auf ALL gesetzt sein.

Einzugeben ist der Rulefilter im Feld "SpecialDefinition" der Dimension bzw. des Measures.

Hinweis  Die Expression darf KEINE Leerzeichen enthalten.


Rulefilter mit CoPlanner-Tabellen

RuleFilter(Tabellenname,Spaltenname,[Kriterium 1 - Kriterium N],FilterOperator,EmptyResult);

Parameter Beschreibung
Tabellenname Bezeichnung der CoPlanner-Tabelle, auf welche der Rulefilter angewendet wird.
Spaltenname Bezeichnung der Spalte in der CoPlanner-Tabelle, auf welche der Filter (entspricht Kriterium) angewendet wird.
Kriterium Filterkriterium, welches auf die Dimension (entspricht Spaltenname) angewendet wird.
FilterOperator optionale Erweiterung des Rulefilters
EmptyResult optionale Erweiterung des Rulefilters


Beispiel

Ziel: In der Maske Umsatzerlöse IST sollen nur mehr jene Produkte gefiltert werden können, welche in der ausgewählten Region verkauft wurden.

Rulefilter: RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID]);

Parameter Beschreibung
Tabellenname Umsatzerloese_IST
Spaltenname Produkte
Kriterium Regionen/Kunden=[Regionen/Kunden.ID]

Vor dem '=' steht der Spaltenname und danach das Kriterium, das auf die Spalte angewendet werden soll. Mit diesem Ausdruck wird erreicht, dass nur jene Datensätze gefiltert werden, bei denen Regionen/Kunden mit dem ausgewählten Filterelement übereinstimmen.

Ergebnis:

Nach Auswahl der Region Schweiz, können im Produkte-Filter nur mehr jene Produkte ausgewählt werden, die in der Schweiz verkauft worden sind.

Enterprise Edition, Rulefilter mit CoPlanner-Tabellen im Filter

Der Rulefilter funktioniert genauso, wenn die Dimension auf die Achse gezogen wird:

Enterprise Edition, Rulefilter mit CoPlanner-Tabellen auf der Achse
Hinweis  Sind zum ausgewählten Filterelement keine Daten vorhanden, wird standardmäßig eine leere Liste angezeigt. Diese kann mit dem Parameter EmptyResult übersteuert werden.

Rulefilter mit SQL-Statements

Es ist auch möglich direkt über ein SQL Statement auf den SQL Server zuzugreifen:


RuleFilter(SqlQuery,Connection String,Bedingung,EmptyResult);

Parameter Beschreibung
SqlQuery Konstante für das SQL Statement, damit der CoPlanner erkennt, dass es sich um ein Statement handelt
Connection String Bezeichnung der SQL Connection (Stage, SystemDB, individuelle Connection)
Bedingung SQL Statement
EmptyResult optionale Erweiterung des Rulefilters


Mit RuleFilter(SqlQueryWithOrder,Connection String, Bedingung); erfolgt die Sortierung über das SQL Statement.


Optionale Erweiterungen des Rulefilters

FilterOperator

Standardmäßig wird als Operator '=' verwendet. Dieser kann mit folgendem Parameter übersteuert werden: „FilterOperator=<Operator>“ Folgende Operatoren können ausgewählt werden:

  • me
  • under
  • me_under
  • not_me
  • first_under
  • me_first_under
  • greater
  • greater_equal
  • less
  • less_equal
  • Like

EmptyResult

Wenn eine Bedinung nicht zutrifft liefert der Rulefilter standardmäßig eine leere Liste. Das Verhalten kann mit folgendem Parameter übersteuert werden: EmptyResult=<Operator> Folgende Operatoren können ausgewählt werden:

  • NoData (Default Wert)
  • AllData - „. AllData“ liefert alle Dimensionselemente, nach Aufbereiten der Security, wenn die Bedingung nicht zutrifft.

Diese Funktion gehört zu den clientseitigen Funktionen.

Beispiel:

RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],EmptyResult=AllData);

Weitere Beispiele

RuleFilter(Umsatzerloese_PLAN,Zeit,Produkte=[Produkte.ID]);
Eingegeben in "SpecialDefinition" in der Dimension "Zeit". In der Dimension "Produkte" werden nur jene Produkte dargestellt, die der ausgewählten Zeit zugeordnet sind.


RuleFilter(SqlQuery,CopSystemDB,select PCKST from Umsatzerloese_Plan where COPSYS_PLAN_ID=@Session_PLAN_ID@ and Unternehmen=[Unternehmen.ID]);

Dieser Filter selektiert die PC/KST die dem angemeldeten Plan bzw. dem Unternehmen zugeordnet sind.

RuleFilter(SqlQuery,CopSystemDB, select COPSYS_ID from dim_sys_Time where Datum between(select Istdatenvon from tb_Planverwaltung where COPSYS_ID = @Session_PLAN_ID@) and (select Istdatenbis from tb_Planverwaltung where COPSYS_ID = @Session_PLAN_ID@) UNION ALL Select 1);

Dieser Filter gibt den Istzeitraum zurück der im Plan eingestellt ist.

RuleFilter(Umsatzerloese_PLAN,Produkte,PC/KST=[PC/KST.ID]);RuleFilter(Umsatzerloese_PLAN,Produkte,Regionen/Kunden=[Regionen/Kunden.ID]);

Dieser Rulefilter, eingegeben in Produkte, zeigt jene Produkte die mit den Einstellungen der PC/KST bzw. der Regionen/Kunden übereinstimmen.

RuleFilter(Umsatzerloese_PLAN,Zeit,Produkte=[Produkte.ID], FilterOperator=not_me);


RuleFilter(Umsatzerloese_PLAN,Zeit,Produkte=[Produkte.ID],EmptyResult=AllData);


RuleFilter können in Zeilensichten, Eingabe- sowie Einzelsatzmasken definiert werden.

Wichtig: