Mastering IBM TM1 & Planning Analytics

Das umfassende Entwickler-Portal. Skalierbare TurboIntegrator-Prozesse, performante Rule-Modellierung, PyTM1 Skripte und REST API Integrationen – übersichtlich und direkt praxisbereit.

TM1 Architecture Standard
v12 Engine
Cloud-Native OLAP
REST API
OData v4 Interface
PyTM1
Python Automation
64-Bit
In-Memory Engine

In 5 Schritten zum Senior Architect

Der systematische Karriere-Pfad von den Modellierungs-Grundlagen bis zur vollautomatisierten Enterprise-Architektur.

Schritt 1

Fundamente & Dimensionen

OLAP Würfeldesign, N/C-Elemente, Konsolidierungshierarchien, Attribute (Alias/Text) und Elementtypen.

Schritt 2

Würfel-Design & VBM

Value-Based Modeling (VBM), Sparsity, Optimales Stacking der Dimensionen (VMM/VBP) zur RAM-Minimierung.

Schritt 3

TurboIntegrator (TI)

Prolog/Data/Epilog Logik, ETL-Prozesse, Dynamic Attribute Creation, Error Logging & Execution Guards.

Schritt 4

Rules & Feeders

Kompilierte Berechnungen, Skipcheck, Over-Feeding vermeiden, Conditional Feeding & Multi-Cube Feeder.

Schritt 5

REST API & PyTM1

Python Automation Pipelines, Security Audits, Asynchrone TI-Jobs & CI/CD Deployment für TM1.

Aktuelle News & Tech Updates

Bleiben Sie auf dem Laufenden über Releases, REST API Erweiterungen und Community Best Practices.

Engine 02. Okt 2026

PA Engine v12 Migration: Multi-Threading im Vergleich

Die neue v12 Engine ersetzt die alte Single-Thread-Architektur im Prolog. Erfahren Sie, wie Sie Ihre Altprozesse ohne Deadlocks für die Cloud vorbereiten.

PyTM1 24. Sep 2026

PyTM1 v2.4 Release: Async Bulk Cell Insert API

Das neue Release erlaubt massives Einfügen von Millionen Datenzeilen über OData Batch-Requests in Rekordzeit. Inklusive Python-Beispiel Code.

PAW 18. Aug 2026

PA Workspace Modernization: Dynamic MDX Sets in Widgets

PAW unterstützt nun erweiterte Tuple-Aggregationsausdrücke direkt in Dashboards. Kein TI-Skripting für einfache Hierarchie-Umschaltungen mehr nötig.

Performance 05. Aug 2026

Memory Footprint Reduktion durch VMM & VBP Tuning

So konfigurieren Sie View Maximum Memory (VMM) und View Base Memory (VBP) im TI-Skript optimal, um Out-Of-Memory Crashes bei großen Staging-Views zu verhindern.

Security 14. Jul 2026

Automatisierte TM1 Security Audits via REST API

Ein fertiges Skript zur automatischen Überprüfung von Gruppenberechtigungen für Cubes und Dimensionen mit direkter Excel-Report-Generierung.

Community 28. Jun 2026

Best Practices für Zero Elimination in TI Data Feeds

Vergleichende Analyse der Verarbeitungsgeschwindigkeit von ViewZeroOut vs. CellPutN Schleifen bei großen Staging-Cubes.

10+ Praxis-Tipps & Code Templates

Geprüfte, direkt kopierbare Code-Bausteine für TurboIntegrator, Rules, REST API & MDX.

1. Robustes TI-Logging & Parameter Guard Template

Standard-Prolog und Epilog Template zur sicheren Validierung von Übergabeparametern und fehlerfreiem Clean-Up.

TI Prolog & Epilog
# ===================================================================
# PROLOG: Initialisierung & Validierung
# ===================================================================
sProcName = GetProcessName();
sTimeStamp = TIMST(Now(), '\Y-\m-\d_\h-\i-\s');

# Parameter Check
IF( pTargetCube @= '' );
    LogOutput('ERROR', sProcName | ': Parameter pTargetCube darf nicht leer sein!');
    ProcessError();
ENDIF;

# Temporäre Sicht mit Sicherheitscheck anlegen
sTempView = 'temp_export_' | sTimeStamp;
IF( ViewExists(pTargetCube, sTempView) = 1 );
    ViewDestroy(pTargetCube, sTempView);
ENDIF;
ViewCreate(pTargetCube, sTempView);

# ===================================================================
# EPILOG: Aufräumen & Status-Logging
# ===================================================================
IF( ViewExists(pTargetCube, sTempView) = 1 );
    ViewDestroy(pTargetCube, sTempView);
ENDIF;
LogOutput('INFO', sProcName | ': Prozess erfolgreich beendet.');

2. Dynamische Attribut-Erstellung im TI-Skript

Prüft im Prolog, ob ein Attribut existiert und legt es automatisch an, falls es fehlt.

TI Prolog
sDimName = 'Produkt';
sAttrName = 'Kategorie_Code';

# Erstelle String-Attribut, falls nicht vorhanden
IF( DTYPE( '}' | sDimName | 'Attributes', sAttrName ) @= '' );
    AttrInsert( sDimName, '', sAttrName, 'S' );
    LogOutput('INFO', 'Attribut ' | sAttrName | ' wurde in Dimension ' | sDimName | ' angelegt.');
ENDIF;

3. Conditional Feeder für Ist-Daten (Actuals Only)

Vermeidet unnötige Feeder-Einträge für Plan- oder Budgetszenarien, die keine Feeder benötigen.

TM1 Rules
SKIPCHECK;

# Berechne Abweichung nur für N-Ebenen
['Abweichung %'] = N: IF( ['Budget'] \= 0, (['Ist'] - ['Budget']) / ['Budget'], 0 );

FEEDERS;

# Conditioned Feeder: Feedere nur, wenn Szenario 'Ist' lautet
['Ist'] => DB(
    IF( !Szenario @= 'Ist', 'Umsatzcube', '' ),
    !Szenario, !Periode, !Region, 'Abweichung %'
);

4. Multi-Cube Feeding über Attribute Mapping

Dynamische Feeder-Weiterleitung in einen Zielcube basierend auf Attributwerten einer Dimension.

TM1 Rules
FEEDERS;
# Feedert Daten vom Kostenstellencube in den Profitcenter-Cube basierend auf Attribut
['Betrag'] => DB(
    'ProfitCenterCube',
    !Szenario, !Periode,
    ATTRS('Kostenstelle', !Kostenstelle, 'MappedProfitCenter'),
    'UmlageBetrag'
);

5. Automatisierter Cube Export via PyTM1

Liest Zelldaten über MDX via REST API aus und speichert sie als Pandas DataFrame/CSV.

Python 3 Script
from TM1py.Services import TM1Service

config = {
    'address': 'localhost',
    'port': 12345,
    'ssl': True,
    'user': 'admin',
    'password': 'secret'
}

with TM1Service(**config) as tm1:
    mdx = "SELECT {[Measures].[Umsatz]} ON 0, {[Period].[2026]} ON 1 FROM [SalesCube]"
    df = tm1.cubes.cells.execute_mdx_dataframe(mdx)
    df.to_csv("sales_export.csv", index=False)
    print("Export erfolgreich durchgeführt.")

6. Asynchrone TI-Prozess-Ausführung per REST API

Startet einen TI-Prozess im Hintergrund ohne den aufrufenden Client zu blockieren.

Python 3 Script
with TM1Service(**config) as tm1:
    process_name = "sys_Data_Integration_Run"
    parameters = {"pYear": "2026", "pMode": "Full"}
    
    # Asynchrones Triggern
    async_id = tm1.processes.execute_async(process_name, **parameters)
    print(f"Prozess gestartet. Execution ID: {async_id}")

7. Dynamisches Top-N Set nach Messwert

Filtert automatisch die 10 umsatzstärksten Kunden der aktuellen Periode.

MDX Query
TOP10(
    [Kunde].[Default].MEMBERS,
    10,
    ([Szenario].[Ist], [Periode].[2026-M09], [Measures].[Umsatz])
)

8. Current Member Attribute Filter

Filtert alle Elemente einer Dimension, deren Attribut 'Status' den Wert 'Aktiv' besitzt.

MDX Query
FILTER(
    [Produkt].[Default].MEMBERS,
    [Produkt].[Default].[Status] = "Aktiv"
)

9. Optimierung der Dimensionsreihenfolge (VMM / VBP)

Empfohlene Abfolge zur Reduktion der RAM-Sparsity in der TM1 In-Memory Engine.

  1. Small Sparse Dimensions zuerst: Version, Szenario, Währung.
  2. Medium Sparse Dimensions: Kostenstelle, Region.
  3. Large Sparse Dimensions: Produkt, Kunde.
  4. Dense Dimensions zuletzt: Periode, Measures / Konten.

10. View Maximum Memory (VMM) im TI-Skript setzen

Setzt temporär mehr Speicher für Staging-Views frei, um Disk-Swapping während des ETL-Laufs zu verhindern.

TI Prolog
# Erhöhe temporär VMM für den Würfel 'StagingCube' auf 512 MB
SetCubeProperty('StagingCube', 'VMM', '512000');
SetCubeProperty('StagingCube', 'VBP', '16000');

Resource Center & Download Templates

Vorgefertigte Checklisten und Blueprint-Dateien für Ihre tägliche Entwicklungsarbeit.

tm1s.cfg Server Configuration

Die wichtigsten Performance-Parameter (PersistentFeeders, MTQ, MaximumCubeMemory) im Überblick.

TI Logging Architecture Blueprint

Ein umfassender Guide zur Einrichtung zentraler Error-Cubes für unternehmensweite TI-Prozessüberwachung.

Feeder Optimization Checklist

Schritt-für-Schritt Anleitung zur Identifikation und Behebung von Over-Feeding und RAM-Engpässen.

Fragen & Architekturaustausch

Haben Sie Fragen zu spezifischen TM1 Modellierungen oder benötigen Sie Feedback zu Ihrer Planning Analytics Architektur?

E-Mail Entwickler-Team

devteam@tm1devhub.example.com

Community Hub

Frankfurt am Main & Köln, Deutschland

Vielen Dank! Ihre Nachricht wurde übermittelt. Wir melden uns in Kürze.