TM1py is the python package for IBM Planning Analytics (TM1).
with TM1Service(address='localhost', port=8001, user='admin', password='apple', ssl=True) as tm1:
subset = Subset(dimension_name='Month', subset_name='Q1', elements=['Jan', 'Feb', 'Mar'])
tm1.subsets.create(subset, private=True)
TM1py offers handy features to interact with TM1 from Python, such as
tm1.cells.execute_mdx
)tm1.cells.write
)tm1.hierarchies.get
)tm1.elements.get_elements_dataframe
)tm1.cells.write_async
)tm1.processes.execute_with_return
)without pandas
pip install tm1py
with pandas
pip install "tm1py[pandas]"
keyring
pip install keyring
TM1 11 on-premise
from TM1py.Services import TM1Service
with TM1Service(address='localhost', port=8001, user='admin', password='apple', ssl=True) as tm1:
print(tm1.server.get_product_version())
TM1 11 on IBM cloud
with TM1Service(
base_url='https://mycompany.planning-analytics.ibmcloud.com/tm1/api/tm1/',
user="non_interactive_user",
namespace="LDAP",
password="U3lSn5QLwoQZY2",
ssl=True,
verify=True,
async_requests_mode=True) as tm1:
print(tm1.server.get_product_version())
TM1 12 PAaaS
from TM1py import TM1Service
params = {
"base_url": "https://us-east-1.planninganalytics.saas.ibm.com/api/<TenantId>/v0/tm1/<DatabaseName>/",
"user": "apikey",
"password": "<TheActualApiKey>",
"async_requests_mode": True,
"ssl": True,
"verify": True
}
with TM1Service(**params) as tm1:
print(tm1.server.get_product_version())
TM1 12 on-premise & Cloud Pak For Data
with TM1Service(
address="tm1-ibm-operands-services.apps.cluster.your-cluster.company.com",
instance="your instance name",
database="your database name",
application_client_id="client id",
application_client_secret="client secret",
user="admin",
ssl=True) as tm1:
print(tm1.server.get_product_version())
TM1 12 on-premise with access token
params = {
"base_url": "https://pa12.dev.net/api/<InstanceId>/v0/tm1/<DatabaseName>",
"user": "8643fd6....8a6b",
"access_token":"<TheActualAccessToken>",
"async_requests_mode": True,
"ssl": True,
"verify": True
}
with TM1Service(**params) as tm1:
print(tm1.server.get_product_version())
https://tm1py.readthedocs.io/en/master/
If you find issues, sign up in GitHub and open an Issue in this repository
TM1py is an open source project. It thrives on contribution from the TM1 community. If you find a bug or feel like you can contribute please fork the repository, update the code and then create a pull request so we can merge in the changes.