IBM Cognos 最佳实践: 列出 IBM Cognos TM1 Server 中每个维度内的所有子集

技巧或技术;产品:IBM Cognos TM1 10.1;关注领域:财务管理

本文档将描述用于创建 .csv 文件的技术,该文件展示了一台 TM1 服务器上所有维度的全部子集。随后,可以将该文件作为 Cognos Insight 中的报告进行查看。

Sameer Inamdar, 软件工程师, IBM

Sameer Inamdar 的照片Sameer Inamdar 是一名软件工程师,过去一年半的时间一直在 IBM 印度软件实验室工作。目前他致力于 IBM Cognos TM1。他从 College of Engineering, Pune (COEP) 取得了信息技术学士学位。



Vinny Bhagchandani, 系统软件工程师, IBM

Vinny BhagchandaniVinny Bhagchandani 是一名软件工程师,目前就职于 IBM 印度软件实验室。她目前正在从事 IBM Cognos TM1 方面的工作。Vinny 在 Cognos Planning 和 TM1 方面拥有 21 个月的工作经验。



2012 年 9 月 17 日

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 10 Business Intelligence Developer Edition V10.1 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

在任何 IBM Cognos TM1 Server 中,各维度上都会构建许多子集。在设计 TM1 应用程序时,往往必须理解 TM1 服务器中现有的全部子集。本文将介绍创建包含所有维度的全部子集的逗号分隔文件 (.CSV) 的技术。随后您可以在 IBM Cognos Insight 中查看和分析这个 .CSV 文件。

适用性

IBM Cognos TM1 10.1 及其更高版本。

例外情况

无已知例外情况。


使用 TurboIntegrator 进程创建一个 .CSV 文件输出

这个 IBM Cognos TM1 TurboIntegrator (TI) 进程的输出结果就是一个 .CSV 文件。本文档将此 .CSV 文件命名为 SubsetCount.csv。您只需要创建并运行一个 TurboIntegrator 进程。此进程将创建一个 .CSV 文件,其中列出了所有维度各自的全部子集。

CSV 文件中的列

TI 进程输出的 .CSV 文件中将创建两个列,第 2.2 节将详细叙述相关内容。这两个列分别是:

  • Dimension_names
  • Subset_names

Subset_names 列中的子集名称属于 Dimension_names 列中对应的维度。随后,我们将观察如何将此文件导入为 IBM Cognos Insight 中的一个多维数据集,并查看此多维数据集。

创建 TurboIntegrator 进程

请按照以下步骤创建 TurboIntegrator 进程。

  1. 在 IBM Cognos TM1 Architect 中,单击需要处理的 TM1 Server 名称旁边的加号,展开此服务器。随后右键单击 Process 并选择 Create New Process
    演示 1:TM1 Architect Server Explorer - 规划示例服务器,突出显示了进程
    演示 1:TM1 Architect Server Explorer - 规划示例服务器,突出显示了进程
  2. 在 TurboIntegrator Process Editor 的 Data Source 选项卡中,接受 Datasource Type 的默认设置 None
    演示 2:TM1 Turbo Integrator - Data Source 选项卡 - 将 Datasource Type 设置为 None
    演示 2:TM1 Turbo Integrator - Data Source 选项卡 - 将 Datasource Type 设置为 None
  3. 单击 Advanced 选项卡,随后单击 Parameters 子选项卡。在 TurboIntegrator 进程中添加两个参数,如下方的演示 3 所示。这两个参数分别是:
    1. 参数名称:vDataDirectory
      类型:字符串
      默认值:C:\Program Files\IBM\cognos\tm1\PlanSamp
      提示问题:TM1 Server 的数据目录路径
    2. 参数名称:vOutputFile
      类型:字符串
      默认路径:C:\
      提示问题:输出文件 SubsetCount.csv 的路径
    演示 3:TM1 TurboIntegrator Editor Advanced 选项卡,显示了为参数定义的文件路径和提示问题
    演示 3:TM1 TurboIntegrator Editor Advanced 选项卡,显示了为参数定义的文件路径和提示问题
  4. 复制以下代码并将其粘贴到进程的 Prolog 过程中。
    #****Begin: Generated Statements***
    #****End: Generated Statements****
    
    # If the Allsubsets dimension exits then we delete it and again create it.
    
    IF(DimensionExists('AllSubsets')=1);
    DimensionDestroy('AllSubsets');
    ENDIF;
    DimensionCreate('AllSubsets');    
    
    IF(DimensionExists('Dimension_names')=1);
    DimensionDestroy('Dimension_names');
    endif;
    
    no_dimensions = DIMSIZ('}Dimensions');
    DimensionCreate('Dimension_names');
    DimensionElementDelete('}Dimensions','Dimension_names');
    
    dim_counter = 1;
    
    WHILE(dim_counter <= no_dimensions);
    dim_name=DIMNM('}Dimensions',dim_counter);
    
    # Skip the control dimensions 
    
    var1 = scan('}',dim_name);
    
    if(var1<>1);
    DimensionElementInsert('Dimension_names','',dim_name,'N');
    i=0;
    vFilenew='';
    compare='a';
    
    # Search for corresponding folder and .sub file for a dimension
    while(compare@<>'');
    
    vFile = WildCardFileSearch( vDataDirectory|'\'| dim_name | '}subs\'|
      '*.sub',vFilenew) ;
    result=fileExists( vDataDirectory | '\'| dim_name | '}subs\'| vFile);
    if(vFile@<>'');
    if(vFIle@<>'Default.sub');
    strlength=LONG(vFile);
    vSubsetfinal=DELET(vFile,strlength-3,4);
    DimensionElementInsert('AllSubsets','',vSubsetfinal,'N');
    
    endif;
    vFilenew=vFile;
    
    endif;
    if(vFile@='');
    compare='';
    endif;
    END;
    endif;
    
    dim_counter = dim_counter +1;
    END; 
    
    dim_counter=1;
    subset_counter=1;
    
    no_dim = DIMSIZ('Dimension_names');
    no_subsets = DIMSIZ('AllSubsets');
    
    ASCIIOutput(vOutputFile |'\'| 'SubsetCount.csv','Dimension_names','Subset_names');
    WHILE(subset_counter<=no_subsets);
    subset_name=DIMNM('AllSubsets',subset_counter);
    
    dim_counter_new=1;
    
    WHILE(dim_counter_new<=no_dim);
    dim_name1=DIMNM('Dimension_names',dim_counter_new);
    var_dim_name = scan('}',dim_name1);
    
    if(var_dim_name<>1);
    if(dim_name1@<>'AllSubsets');
    
    #If the subset exists for the dimension then write its name
    # in front of the dimension name in csv file
    if(SubsetExists(dim_name1,subset_name)=1);
    ASCIIOutput(vOutputFile |'\'| 'SubsetCount.csv',dim_name1,subset_name);
    endif;
    endif;
    endif;
    
    dim_counter_new=dim_counter_new+1;
    
    END;
    subset_counter=subset_counter+1;
    END;
  5. 为 TI 进程命名,随后保存此进程。单击 TI Editor 中的 Run 箭头,手动执行进程。执行此进程之后,您将获得 SubsetCount.csv 文件,A 列中给出了维度名称,B 列中给出了子集名称。
    演示 4:.CSV 输出文件视图,显示了维度名称(A 列)和子集名称(B 列)
    演示 4:.CSV 输出文件视图,显示了维度名称(A 列)和子集名称(B 列)

将 .CSV 文件导入 IBM Cognos Insight

将 .CSV 文件导入 IBM Cognos Insight 的步骤

要将 .CSV 文件导入 IBM Cognos Insight,有两种方法可供选择。

  1. 启动 IBM Cognos Insight (CI)。
  2. 将 .CSV 文件拖放到 CI 工作区中。

另外一种方法是:

  1. 启动 IBM Cognos Insight。
  2. 单击 Get Data > Quick Import
  3. Open File 对话框中选择 .CSV 文件。

这将创建包含 Dimension_namesSubset_names 这两个维度的多维数据集。此外,多维数据集内还会创建一个 Count 指标,用于计算一个维度中的子集数量。

要查看对应维度的子集,只需将两个维度从内容窗格拖放到工作区即可。单击 SubsetCount widget 的 Widget Actions 按钮,清除 Listen to All Widgets 选项,获得包含以下四个 widget 的视图,如演示 5 所示。

  1. 一份交叉表报告,其中列出了 TM1 Server 中的维度名称,并提供了引用各维度的子集数量。
  2. 交叉表报告的图示。
  3. Dimension_names 维度。
  4. Subset_names 维度。

现在,选择 Dimension_names widget 中的维度时,只有 Subset_names widget 内选中的子集会出现在该维度中。其他子集名称将显示为灰色不可用。

演示 5:IBM Cognos Insight 显示了 TM1 服务器的每维度的子集
演示 5:IBM Cognos Insight 显示了 TM1 服务器的每维度的子集

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=835424
ArticleTitle=IBM Cognos 最佳实践: 列出 IBM Cognos TM1 Server 中每个维度内的所有子集
publish-date=09172012