Framework:RuleFilter: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 44: | Zeile 44: | ||
|} | |} | ||
{| {{Bausteindesign1}} | |||
|- | |||
| <span style="color: darkblue;">'''Hinweis'''</span> Sind zum ausgewählten Filterelement keine Daten vorhanden, wird standardmäßig eine leere Liste angezeigt. Diese kann mit dem Parameter [[Framework:RuleFilter#EmptyResult|EmptyResult]] übersteuert werden. | |||
|} | |||
====Anwendungsfall==== | |||
'''Ziel:''' | |||
{| class="wikitable" width={{{breite|80%}}} | ::In der Maske Umsatzerlöse IST sollen nur mehr jene Produkte gefiltert werden können, welche in der ausgewählten Region verkauft wurden. | ||
'''Definition des Rulefilters:''' | |||
::Dazu definiert man folgenden Rulefilter auf der Dimension Produkte: | |||
::<span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID]);</span><br> | |||
::{| class="wikitable" width={{{breite|80%}}} | |||
|- {{Tabellentitel}} | |- {{Tabellentitel}} | ||
| Parameter | | Parameter | ||
| Zeile 69: | Zeile 78: | ||
|} | |} | ||
Ergebnis: | '''Ergebnis, wenn Dimension im Filter:''' | ||
Nach Auswahl der Region ''Schweiz'', können im Produkte-Filter nur mehr jene Produkte ausgewählt werden, die in der Schweiz verkauft worden sind. | ::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]] | [[Image:EE_Ergebnis_Rulefilter_Umsatzerloese_IST.png|thumb|center|Enterprise Edition, Rulefilter mit CoPlanner-Tabellen im Filter]] | ||
'''Ergebnis, wenn Dimension auf Achse:''' | |||
::Nach Auswahl der Region ''Schweiz'', werden auf der Achse nur mehr jene Produkte angezeigt, die in der Schweiz verkauft worden sind. | |||
[[Image:EE_Ergebnis_Rulefilter_Umsatzerloese_IST_Achse.png|thumb|center|Enterprise Edition, Rulefilter mit CoPlanner-Tabellen auf der Achse]] | [[Image:EE_Ergebnis_Rulefilter_Umsatzerloese_IST_Achse.png|thumb|center|Enterprise Edition, Rulefilter mit CoPlanner-Tabellen auf der Achse]] | ||
===Rulefilter mit SQL-Statements=== | ===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'',EmptyResult'');</span> | <span {{CoPFormel}}>RuleFilter(SqlQuery,Connection String,Bedingung'',EmptyResult'');</span> | ||
| Zeile 109: | Zeile 115: | ||
|} | |} | ||
Der Paramter '''SqlQuery''' kann durch die Konstante '''SqlQueryWithOrder''' ersetzt werden. Die Sortierung erfolgt in diesem Fall über das SQL-Statement. | |||
<span {{CoPFormel}}> RuleFilter(SqlQueryWithOrder,Connection String, Bedingung);</span> | |||
===Beispiele=== | |||
Sollen nur jene Kostenstellen angezeigt werden, für welche Umsatzerlöse am angemeldeten Plan und ausgewählten Unternehmen geplant wurden, ist folgender Rulefilter auf der Dimenstion PC/KST zu hinterlegen: | |||
<span {{CoPFormel}}>RuleFilter(SqlQuery,CopSystemDB,select PCKST from Umsatzerloese_Plan where COPSYS_PLAN_ID=@Session_PLAN_ID@ and Unternehmen=[Unternehmen.ID]);</span><br> | <span {{CoPFormel}}>RuleFilter(SqlQuery,CopSystemDB,select PCKST from Umsatzerloese_Plan where COPSYS_PLAN_ID=@Session_PLAN_ID@ and Unternehmen=[Unternehmen.ID]);</span><br> | ||
Dieser Filter | |||
Dieser Filter gibt den Istzeitraum zurück der im Plan eingestellt ist: | |||
<span {{CoPFormel}}>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);<span {{CoPFormel}}> | <span {{CoPFormel}}>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);<span {{CoPFormel}}> | ||
==Optionale Parameter des Rulefilters== | ==Optionale Parameter des Rulefilters== | ||
| Zeile 139: | Zeile 147: | ||
:*less_equal | :*less_equal | ||
:*Like | :*Like | ||
===EmptyResult=== | ===EmptyResult=== | ||
| Zeile 152: | Zeile 156: | ||
Diese Funktion gehört zu den [[:Kategorie:Funktionen_-_clientseitig|clientseitigen Funktionen]]. | Diese Funktion gehört zu den [[:Kategorie:Funktionen_-_clientseitig|clientseitigen Funktionen]]. | ||
==== | ===Beispiele=== | ||
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],FilterOperator=not_me);</span><br> | |||
<span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],EmptyResult=AllData);</span><br> | <span {{CoPFormel}}>RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],EmptyResult=AllData);</span><br> | ||
Version vom 11. März 2015, 15:08 Uhr
Funktion
Über Rulefilter können Dimension abhängig von einer bestimmten Filtereinstellung eingeschränkt werden. Diese können in Zeilensichten, Eingabe- sowie Einzelsatzmasken definiert werden.
Rulefilter entsprechen kaskadierenden Filtern (nacheinander geschaltete Filter), welche 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 | optionaler Parameter des Rulefilters |
| EmptyResult | optionaler Parameter des Rulefilters |
| Hinweis Sind zum ausgewählten Filterelement keine Daten vorhanden, wird standardmäßig eine leere Liste angezeigt. Diese kann mit dem Parameter EmptyResult übersteuert werden. |
Anwendungsfall
Ziel:
- In der Maske Umsatzerlöse IST sollen nur mehr jene Produkte gefiltert werden können, welche in der ausgewählten Region verkauft wurden.
Definition des Rulefilters:
- Dazu definiert man folgenden Rulefilter auf der Dimension Produkte:
- RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID]);
- 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, wenn Dimension im Filter:
- Nach Auswahl der Region Schweiz, können im Produkte-Filter nur mehr jene Produkte ausgewählt werden, die in der Schweiz verkauft worden sind.

Ergebnis, wenn Dimension auf Achse:
- Nach Auswahl der Region Schweiz, werden auf der Achse nur mehr jene Produkte angezeigt, die in der Schweiz verkauft worden sind.

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 | optionaler Parameter des Rulefilters |
Der Paramter SqlQuery kann durch die Konstante SqlQueryWithOrder ersetzt werden. Die Sortierung erfolgt in diesem Fall über das SQL-Statement. RuleFilter(SqlQueryWithOrder,Connection String, Bedingung);
Beispiele
Sollen nur jene Kostenstellen angezeigt werden, für welche Umsatzerlöse am angemeldeten Plan und ausgewählten Unternehmen geplant wurden, ist folgender Rulefilter auf der Dimenstion PC/KST zu hinterlegen:
RuleFilter(SqlQuery,CopSystemDB,select PCKST from Umsatzerloese_Plan where COPSYS_PLAN_ID=@Session_PLAN_ID@ and Unternehmen=[Unternehmen.ID]);
Dieser Filter gibt den Istzeitraum zurück der im Plan eingestellt ist:
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);
Optionale Parameter 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.
Beispiele
RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],FilterOperator=not_me);
RuleFilter(Umsatzerloese_IST,Produkte,Regionen/Kunden=[Regionen/Kunden.ID],EmptyResult=AllData);