如何从IBM TM1中提取数据

时间:2018-01-22 14:01:06

标签: python cognos-tm1

我已经使用Python的TM1py包在Python和IBM TM1 OLAP工具之间建立了连接。现在,当我尝试从Python中的TM1的MDX视图中获取数据时,我得到的只是列标题。我阅读了TM1py的文档,看起来get_native_view函数应该只返回一个视图实例,而不是视图中包含的实际数据。

from TM1py.Services import TM1Service

with TM1Service(address='hostname', port=12523,user='username', password=****, ssl=False) as tm1:

query = tm1.cubes.views.get_native_view('cube_name', 'View_name', private=True)
print(query)

有没有人知道如何在Python中提取实际数据而不仅仅是TM1中的列标题?

1 个答案:

答案 0 :(得分:1)

get_native_view函数返回多维数据集视图的定义。

要使用TM1py将多维数据集数据从IBM TM1提取到Python,您可以使用get_view_content函数(选项1)或执行MDX查询(选项2)。

选项1:

from TM1py.Services import TM1Service

with TM1Service(address='localhost', port=12354, user='admin', password='apple', ssl=True) as tm1:
    content = tm1.cubes.cells.get_view_content(cube_name='Plan_BudgetPlan', view_name='Default', private=False)
    print(content)

选项2:

from TM1py.Services import TM1Service

with TM1Service(address='localhost', port=12354, user='admin', password='apple', ssl=True) as tm1:
    mdx = "SELECT " \
          "NON EMPTY {TM1SUBSETALL( [}Clients] )} on ROWS, " \
          "NON EMPTY {TM1SUBSETALL( [}Groups] )} ON COLUMNS " \
          "FROM [}ClientGroups]"
    content = tm1.cubes.cells.execute_mdx(mdx)
    print(content)