OLAPLINE_AWT2016_Schulung_Rules

Werbung
27. und 28. April 2016
Schloss Garath | Düsseldorf
Das OLAPLINE-Anwendertreffen
Das Anwendertreffen ist unser Jahreshöhepunkt. Einmal im Jahr schaffen wir den Anlass, Anwender,
Partner, Repräsentanten der IBM und alle OLAPLINER zu einem hochkarätigen Erfahrungsaustausch
zusammenzubringen. Es erwarten Sie interessante Vorträge, überraschende Detaillösungen und
angeregte Diskussionen. Unser Anwendertreffen ist Networking mit Weiterbildungscharakter.
Wir würden uns freuen, Sie auf Schloss Garath begrüßen zu dürfen!
Herzlich Willkommen!
TM1-Rules
Kalkulation, Rechteverwaltung, Picklisten und Drill
Tobias Kubitz, Vitalij Rusakovskij
Einordnung der Schulungsteilnehmer:
1. Anfänger => keine Rules-Erfahrungen
2. Fortgeschrittene => existierende Rules angepasst und einfache Rules erstellt
3. Profis => Erstellung komplexer Rules
Inhalt
1.
2.
3.
Grundlagen
Anwendungsgebiete
Komplexere Anwendungsfälle
1. Grundlagen
1.
•
Regelprogrammierung => Berechnung auf Datenräumen
•
Echtzeitberechnung (on demand)
•
Berechnungen jenseits (+) und (-) (Hierarchiegewichtungen)
•
Berechnungen über mehrere Dimensionen und Würfel hinweg
•
Überschreiben der Konsolidierungswerte möglich
•
Achtung: zu viele oder aufwendige Rules können auch zu
langen Ladezeiten von Views führen
Grundlagen
Prinzipieller Aufbau
Definition
Ziel
Datenraum
Formales:
[ ‘Def‘ ] = 10;
[ ‘Def‘ ] = N: 5;
[ ‘Def‘ ] = N: [‘Menge‘] * [‘Preis‘];
[ ‘Def‘ ] = N: [ ‘Menge‘ ] * 100;
[ { ‘Def1‘, ‘Def2‘ } ] = [ ‘Menge‘ ] * [ ‘Preis‘ ];
[ Dim1: ‘Def‘ ] = N: [‘Menge‘] * [ ‘Preis‘];
[ ‘Def‘ ] = N: DB ( Cube, !Dim1, ‘2015‘, !Dim3 );
Formel
Eine Rule ist immer gültig für einen Cube
Holen und Berechnen der Werte aus einem oder mehreren Cubes
Kurz- vs. Langform der Rule (DB vs. [])
Reihenfolge der Rules spielt eine wichtige Rolle (erste Rule von oben gesehen,
speziell zu generell)
Für die Performance in größeren Cubes:
Skipcheck (beschleunigter Konsolidierungsalgorithmus) und Feeder
1.
Grundlagen
Feeder
Formales:
[ ‘Menge‘ ] => [ ‘Umsatz‘ ];
Element feedert Umsatz:
nur wenn ‘Menge‘ <> 0
Primär relevant für Nullwertunterdrückung und korrekte Konsolidierung
„Feeder“ markiert per Rule zu berechnende Zellen für die TM1 Engine (sparse
density Algorithmus)
Mit jedem Speichern der Rule werden neue Feeders gesetzt, bereits vorhandene
bleiben bestehen (Achtung: RAM Verbrauch)
Bei TM1 Server Neustart werden alte Feeders gelöscht, wenn Persistent Feeder
deaktiviert sind
Ab 10.2.0: PersistentFeeders in tm1s.cfg standardmäßig auf „True“
1.
Grundlagen
Syntax
Zeichen Bedeutung
Beispiel
#
# hier fängt der Kommentar an
Kommentierung
Muss an erster Stelle der Zeile
stehen
@=
Vergleich von Textelement
IF (!Month @= ‘Jan‘);
;
Zeilenende
Jede Zeile muss mit ";" abgeschlossen
werden
|
(Pipe) Entspricht "&" in Excel
Var1 = 'hallo' | 'User';
Ergibt für Var1: 'halloUser'
&
UND
IF (!Month @= 'Jan‘ & !Year @= '2013',
...,...);
%
ODER
IF (!Month @= 'Jan‘ % !Month @=
'Feb');
'
Textzeichen
Var1 = 'hallo';
1.
Grundlagen
Häufige Funktionen
Funktion
Bedeutung / Beispiel
DB
Liest Daten aus einem Würfel aus
DELET
Gibt das Ergebnis zurück, nachdem bestimmte
Zeichen gelöscht wurden
SUBST
Schneidet Teilstring aus (vgl. "Teil" in Excel)
ELISANC
Prüft, ob ein Element unter einem anderen hängt
DIMIX
Liest den Index eines Elements aus
DIMNM
Liest aus dem Index ein Element aus
CONTINUE
Lässt Zelle frei für nächste Rule
STET
Blockiert die Zelle für Rules
STR
Macht aus Zahl Text
NUMBR
Macht aus Text eine Zahl
Komplette Übersicht und alle Details im TM1 Referenz Handbuch (Server Explorer=> Hilfe)
1.
Grundlagen
2. Anwendungsgebiete
•
Währungsumrechnung
•
Quoten
•
Umlagen & Verteilungen
•
Umsatz, Produktionsplanung (Menge * Preis)
•
Sekundärverrechnung
•
Konsistenzprüfungen
•
Berechtigungen
•
Picklist (Auswahllisten)
•
Drill
2. Anwendungsgebiete
3. Komplexere Anwendungsfälle
3.1 Berechtigungen
3.2 Picklist
3.3 Drill
3.4 Spezialtechniken
3. Komplexere Anwendungsfälle
12
3.1 Berechtigungen
•
•
•
Auf folgenden Ebenen können Berechtigungen gesetzt werden:
Cubes, Dimensionen, Elemente, Zelle, Anwendung, Prozesse
Security Rules müssen für die entsprechenden System Cubes angelegt werden
(z.B. }CubeSecurity oder }Applications)
=> Rechtsklick auf das jeweilige Objekt und Sicherheit => Sicherheitszuweisung
Es sind immer String Rules erforderlich und es müssen immer bestimmte
Schlüsselwörter als Resultat erscheinen (z.B. ‘READ‘, ‘WRITE‘, ‘NONE‘)
Beispiel anhand von Element Security der Dimension Jahre:
[] = S: IF (ATTRS(‘Jahre‘, !Jahre, ‘aktJahr‘) @= ‘aktiv‘, ‘WRITE‘, CONTINUE);
[‘Accounting‘] = S: ‘WRITE‘;
[] = S: ‘READ‘;
•
Achtung: Security Refresh erforderlich
3. Komplexere Anwendungsfälle
3.2 Picklist
•
•
•
•
Zu vergleichen mit der Gültigkeitsliste in Excel
Sie gelten auf Zellen in Cubes
2 Möglichkeiten der Definition:
}Picklist_[Cubename] (Rechtsklick auf den Cube => Auswahllistencube erstellen
Attribut ‚picklist‘ erstellen
funktionieren auf allen Oberflächen: View, Active Form, TM1Web
•
•
Ausnahme: TI setzt sich über die Einschränkung der Picklist hinweg
Picklistcube ist ein Steuerungscube, der manuell nicht löschbar ist (ggf. per TI)
3. Komplexere Anwendungsfälle
Picklist Typen
Fall 1:
Eine statische Liste
[ ] = s: ‘static:erfolgreich:nicht erfolgreich‘;
[ ] = s: ‚static: : erfolgreich:nicht erfolgreich‘;
Fall 2:
Elemente einer Dimension:
[ ] = S: ‘dimension: Zeilen‘;
[ ] = S: ‘dimension:‘| !}Dimensions ;
Fall 3:
Elemente eines Subsets:
[ ] = S: ‘subset: Zeilen: z1_z20 ‘ ;
[ ] = S: ‘subset: Monate:‘| !Zeit‘;
3. Komplexere Anwendungsfälle
Picklist Typen
Fall 4:
bedingte Picklist mit einem statischen und einem dynamischen Subset:
[ ] = S:
( 'Subset: LH_Flotte:'
| IF ( DB ( '}ElementAttributes_LH_Flotte', !LH_Flotte, 'Bezeichnung' ) @=
'LH Flotte Gesamt', 'LH_Flotte_Lufthansa_',
IF ( DB ( '}ElementAttributes_LH_Flotte', !LH_Flotte, 'Bezeichnung' ) @=
'Swiss Airlines', 'LH_Flotte_L', 'nElem_Lufthansa' ) ) );
3. Komplexere Anwendungsfälle
3.3 Drill
•
•
Drill wird für eine Verknüpfung einer Zelle eines Cubes mit weiteren Daten genutzt
2 Möglichkeiten: TM1 View oder SQL Daten
•
•
Wird in Verbindung mit einem Drillprozess verwendet, der die Details spezifiziert
Rule und Prozess werden unter Steuerungsobjekten abgelegt ( }Drill_ )
Beispiele:
•
•
•
•
Sprung aus einer View mit Gesamtsumme auf die View mit entsprechenden Werten
Ausführen eines Prozesses für die Erstellung / Bearbeitung einer Dimension
Sprung in die View zur Bearbeitung einer weiteren Liste
SQL Detaildaten anzeigen, die in diesem Detailgrad im TM1 Cube nicht vorhanden
sind
3. Komplexere Anwendungsfälle
Vorgehen zum Anlegen eines Drills
1. Drill Prozess erstellen
Rechtsklick auf den Cube => Drill => Drillprozess erstellen
2. Drill Rule erstellen
Rechtsklick auf den Cube => Drill => Drillzuweisungsrule erstellen
[] = S: ‘Namen des Drill Prozess ohne }Drill_‘;
3. Komplexere Anwendungsfälle
3.4 Spezialtechniken
-
Konditionale Feeder (evtl. CubeProcessFeeders im TI erforderlich)
Bedingte Konsolidierung (1. auf ein neues Element nur gewisse Werte nach
einer definierten Logik übernehmen und diese dann über die TM1
Konsolidierungslogik)
Feederung über eine spezielle Dimensionskombination in einem eigenen
Feeder Würfel
3. Komplexere Anwendungsfälle
Vielen Dank für Ihre
Aufmerksamkeit
Herunterladen