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.
Das umfassende Entwickler-Portal. Skalierbare TurboIntegrator-Prozesse, performante Rule-Modellierung, PyTM1 Skripte und REST API Integrationen – übersichtlich und direkt praxisbereit.
Der systematische Karriere-Pfad von den Modellierungs-Grundlagen bis zur vollautomatisierten Enterprise-Architektur.
OLAP Würfeldesign, N/C-Elemente, Konsolidierungshierarchien, Attribute (Alias/Text) und Elementtypen.
Value-Based Modeling (VBM), Sparsity, Optimales Stacking der Dimensionen (VMM/VBP) zur RAM-Minimierung.
Prolog/Data/Epilog Logik, ETL-Prozesse, Dynamic Attribute Creation, Error Logging & Execution Guards.
Kompilierte Berechnungen, Skipcheck, Over-Feeding vermeiden, Conditional Feeding & Multi-Cube Feeder.
Python Automation Pipelines, Security Audits, Asynchrone TI-Jobs & CI/CD Deployment für TM1.
Bleiben Sie auf dem Laufenden über Releases, REST API Erweiterungen und Community Best Practices.
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.
Das neue Release erlaubt massives Einfügen von Millionen Datenzeilen über OData Batch-Requests in Rekordzeit. Inklusive Python-Beispiel Code.
PAW unterstützt nun erweiterte Tuple-Aggregationsausdrücke direkt in Dashboards. Kein TI-Skripting für einfache Hierarchie-Umschaltungen mehr nötig.
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.
Ein fertiges Skript zur automatischen Überprüfung von Gruppenberechtigungen für Cubes und Dimensionen mit direkter Excel-Report-Generierung.
Vergleichende Analyse der Verarbeitungsgeschwindigkeit von ViewZeroOut vs. CellPutN Schleifen bei großen Staging-Cubes.
Geprüfte, direkt kopierbare Code-Bausteine für TurboIntegrator, Rules, REST API & MDX.
Standard-Prolog und Epilog Template zur sicheren Validierung von Übergabeparametern und fehlerfreiem Clean-Up.
# ===================================================================
# 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.');
Prüft im Prolog, ob ein Attribut existiert und legt es automatisch an, falls es fehlt.
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;
Vermeidet unnötige Feeder-Einträge für Plan- oder Budgetszenarien, die keine Feeder benötigen.
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 %'
);
Dynamische Feeder-Weiterleitung in einen Zielcube basierend auf Attributwerten einer Dimension.
FEEDERS;
# Feedert Daten vom Kostenstellencube in den Profitcenter-Cube basierend auf Attribut
['Betrag'] => DB(
'ProfitCenterCube',
!Szenario, !Periode,
ATTRS('Kostenstelle', !Kostenstelle, 'MappedProfitCenter'),
'UmlageBetrag'
);
Liest Zelldaten über MDX via REST API aus und speichert sie als Pandas DataFrame/CSV.
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.")
Startet einen TI-Prozess im Hintergrund ohne den aufrufenden Client zu blockieren.
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}")
Filtert automatisch die 10 umsatzstärksten Kunden der aktuellen Periode.
TOP10(
[Kunde].[Default].MEMBERS,
10,
([Szenario].[Ist], [Periode].[2026-M09], [Measures].[Umsatz])
)
Filtert alle Elemente einer Dimension, deren Attribut 'Status' den Wert 'Aktiv' besitzt.
FILTER(
[Produkt].[Default].MEMBERS,
[Produkt].[Default].[Status] = "Aktiv"
)
Empfohlene Abfolge zur Reduktion der RAM-Sparsity in der TM1 In-Memory Engine.
Version, Szenario, Währung.Kostenstelle, Region.Produkt, Kunde.Periode, Measures / Konten.Setzt temporär mehr Speicher für Staging-Views frei, um Disk-Swapping während des ETL-Laufs zu verhindern.
# Erhöhe temporär VMM für den Würfel 'StagingCube' auf 512 MB
SetCubeProperty('StagingCube', 'VMM', '512000');
SetCubeProperty('StagingCube', 'VBP', '16000');
Vorgefertigte Checklisten und Blueprint-Dateien für Ihre tägliche Entwicklungsarbeit.
Die wichtigsten Performance-Parameter (PersistentFeeders, MTQ, MaximumCubeMemory) im Überblick.
Ein umfassender Guide zur Einrichtung zentraler Error-Cubes für unternehmensweite TI-Prozessüberwachung.
Schritt-für-Schritt Anleitung zur Identifikation und Behebung von Over-Feeding und RAM-Engpässen.
Haben Sie Fragen zu spezifischen TM1 Modellierungen oder benötigen Sie Feedback zu Ihrer Planning Analytics Architektur?
devteam@tm1devhub.example.com
Frankfurt am Main & Köln, Deutschland