- 安装需要使用管理员安装
- 安装完毕不要使用在完毕窗口选择打开IBM Cognos Configuration
- 打开IBM Cognos Configuration时需要选择“管理员身份运行”。(可右键链接->属性->兼容性->管理员身份运行)
- Perspectives打开时要信任宏
- 确认Perspectives链接的tm1p.xla文件是32位还是64位。
<安装路径>\ibm\cognos\tm1_64\bin64\tm1p.xla 为64位
<安装路径>\ibm\cognos\tm1_64\bin\tm1p.xla 为32位
- 确认Excel安装的时32位
Excel->文件->账户->关于,第一行可看到
- 使tm1p.xla与excele一致
- 重新注册相关控件
Regsvr32.exe /u <tm1p.xla相同路径>\tm1prc.dll tm1xl.ocx
Regsvr32.exe <tm1p.xla相同路径>\tm1prc.dll tm1xl.ocx
如还不行,安装VC++,X86和X64都安装,再重复以上步骤
- 正常安装即可
- 停止所有服务
- 需修改 <安装路径>\tm1web\wlp\usr\servers\tm1web 目录中的 server.xml 文件中server.xml 文件,将httpEndpoint 元素中的 httpPort 属性值从 9510 更改为 9511
- 启动服务
- 登录application web,修改tm1web的端口号。
- 重新登录application web
问题:没搞明白修改后,那里能够使用。
- 故障现象,压测报文显示 "CSRF Secrity Error"
- 修改文件 tm1web\webapps\tm1web\WEB-INF\web.xml
- 查找以下内容,并将2个value修改,注意有2段类似的
<servlet-class>com.ibm.cognos.tml.web.services.dwr.DefaultDWR <serviet-class>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>True</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>修改安装目录下wlp\usr\servers\tm1web\jvm.options文件中,-Xmx和-Xms两个选项
- 修改页面title。
文件位置:webapps\tm1web\home.jsp
- 修改banner栏
文件位置:webapps\tm1web\scripts\tm1web\common\nls\zh-hans\CommonMessages.js。 OFFERING_NAME项
有可能系统识别语言不同,使用的文件有不同。
由于浏览器的安全性限制(主要为cookie的使用),已无法将使用http的tm1web嵌入到iframe中。需要使用https
需要修改tm1web中的一下几项配置
- \webapps\tm1web\WEB-INF\configuration\tm1web_config.xml
- \wlp\usr\servers\tm1web\server.xml
注意,如果是http,cookieSameSite="None" cookieSecure="true" 不要添加,否则导致浏览器不允许报错cookie
- 还需开启https(失败)
https://www.ibm.com/docs/zh/planning-analytics/2.0.0?topic=reference-worksheet-functions
DBRW("数据库名称:Cube名称","维度1值","维度2值",...)
SUBNM("数据库名称:维度名称","子集名称","元素名称","别名类别")
DBRA("数据库名称:维度名称","元素名称","属性名称")
DFRST("数据库名称:维度名称")
DNEXT("数据库名称:维度名称","上一个维度","别名")
DBS("值","数据库名称:Cube名称","维度1值","维度2值",...)
TM1RPTROW("对一个单元格的引用,该单元格包含 TM1RPTVIEW 公式","数据库名称:维度名称","子集","子集元素列表(可引用单元格)","别名")
- CellPutN 设置单元格的值,会替换原有的值
- CellIncrementN 增加单元格的值,增加值
- “应用程序”可看作视图等的快捷方式
- “进程”用于数据处理,如导入数据
- “杂项”,定时器。
- “复制”用于不同数据库直接复制数据
- 白色是元素值
- 灰色是汇总值
- 多维数据集可看作是类Class
- 维度可看作是类的属性
- 多维数据集通过定义不同维度来进行区分
两者是一样的,提供了所有的功能
官方文档没有手册了,取消了?
类似C和VB API
可用于集成TM1 Web中的功能,可用于显示。
Web API 使用Dojo。
- 数据库级别操作
- 用户组操作?
一个数据库服务一个配置,一套地址
原有配置文件中,无配置项,需自行追加,不追加API服务不启动
## TM1 Server HTTP Port
## Sets the server port number for HTTP access. Like PortNumber above, it is used to distinguish between multiple servers running on the same computer. When multiple TM1 servers are installed on a single computer, each server must use unique values for port number and HTTP port number.
## Type: Optional, Static
## When you install a TM1 server, the default HTTP port number is 12354. Valid port values are between 5000 and 49151
#
## If the Tm1s.cfg file does not contain the HTTPPortNumber parameter, then you can not use the OData v4 Compliant REST API.
HTTPPortNumber=8000https://127.0.0.1:8000/api/v1/
注意是https,UseSSL=T,默认是使用https PostMan等测试工具注意屏蔽ssl验证
<EntityType Name="Process">
<Key>
<PropertyRef Name="Name"/>
</Key>
<Property Name="Name" Nullable="false" Type="Edm.String"/>
<Property Name="HasSecurityAccess" Nullable="true" Type="Edm.Boolean"/>
<Property Name="PrologProcedure" Nullable="true" Type="Edm.String"/>
<Property Name="MetadataProcedure" Nullable="true" Type="Edm.String"/>
<Property Name="DataProcedure" Nullable="true" Type="Edm.String"/>
<Property Name="EpilogProcedure" Nullable="true" Type="Edm.String"/>
<Property Name="DataSource" Nullable="true" Type="ibm.tm1.api.v1.ProcessDataSource"/>
<Property Name="Parameters" Type="Collection(ibm.tm1.api.v1.ProcessParameter)"/>
<Property Name="Variables" Type="Collection(ibm.tm1.api.v1.ProcessVariable)"/>
</EntityType>- 根据配置文件IntegratedSecurityMode值来提供不同的认证方法
- 一般为IntegratedSecurityMode=1,在认证失败时,http头中会返回认证方式,如 WWW-Authenticate: Basic Realm="TM1"
- IntegratedSecurityMode=1,认证方法:http头中追加 Authorization: Basic base64(user:password),如:
Authorization = Basic U2ltb246- 认证成功后,TM1会返回Cookie,标记会话ID,后续访问http 头中携带此Cookie即可
Cookie = TM1SessionId=t4tsqIVZ9JNNEB0eURYGjVi1HdI- Cookie默认时长20m
如果无法获知NameSpace时,可通过CAM Passport的方式认证
- 在配置中的ClientCAMURI 是认证的地址
- 调用此认证地址,可携带用户名密码(此时可做成静默登录),或者打开此地址要求用户输入用户名密码
- 此地址在cookie中会返回一个cam_passport
- 在调用rest api的时候,在http头中携带此passport,用于登录
Authorization: CAMPassport cam_passport参考链接,PA 认证。
- api/v1/ActiveConfiguration
生效的配置项,只读
- api/v1/StaticConfiguration
静态配置项,可修改,根据配置项是否可刷新生效而生效
- http: 5895
- https: 5898
- Admin Server服务也使用这两个端口,不要修改端口号,否则Admin Server无法再使用
http://127.0.0.1:5895/api/v1/ https://127.0.0.1:5898/api/v1/
- 创建维度 api/v1/Dimensions,只包括维度名字,需包括元素,否则维度属性设不上
- 创建维度属性 api/v1/Dimensions('AccountTest')/Hierarchies('AccountTest')/ElementAttributes
- 创建元素 api/v1/Dimensions('AccountTest')/Hierarchies('AccountTest')/Elements (多个)
- 创建元素属性 api/v1/Cubes('}ElementAttributes_P-年月')/tm1.Update
- 创建子集 api/v1/Dimensions('AccountTest')/Hierarchies('AccountTest')/Subsets
- 文件路径: 如果使用 IBM® Cognos® Configuration 工具启动和停止 IBM TM1® Server,那么可通过单击 Cognos Configuration 的“资源管理器”树中的服务器名称来查看 TM1 Server 的配置路径。
- CreateNewCAMClients=F 可以阻止未配置的LDAP用户,登录TM1。 [参考]https://cogknowhow.tm1.dk/archives/4497
(Cognos TM1 Perspectives、Cognos TM1 Architect 和 Cognos TM1 Client)
- 默认位置:%ProgramData%\Applix\TM1\
- 用户位置:%USERPROFILE%\AppData\Roaming\Applix\TM1\
-
创建一个运行目录,在目录下复制一个tm1s.cfg文件。
-
修改tm1s.cfg文件,需要至少修改以下选项:
- ServerName 服务名字
- DataBaseDirectory 运行目录,前面新创建的目录
- PortNumber 与客户端交互的端口,需不能重复
- HTTPPortNumber REST API 端口(理论上不配置不开通REST API,但测试中会绑定5001端口)
-
也可以直接复制一个包含数据的数据库目录,修改相应的配置项,修改后,原数据库数据也会被复制
-
命令行注册服务
-n 服务名 -z 配置文件所在目录,即运行目录
C:\ibm\cognos\tm1_64\bin64\tm1sd.exe -install -n Go_N1 -z C:\TM1\data\Go_N1- 启动Windows服务
- 查看:
服务能启动即说明配置正确,并会生成其默认数据文件 本地Admin Server刷新后可看到新的数据库 Configuration需安装添加服务方法添加一下(cogstartup.xml)
此问题为文本导入数据时,变量定义为数字,但实际数据为字符串(TM1不能识别为数字导致),在执行CellPutN时会出现。
此问题为CellPut写入数据时,对应的维度元素不存在导致。
进程导入的时候,会将文本文件转换为UTF-8后,进行导入,如果文件信息上有encoding信息,TM1安装encoding信息转换,否则可能转换不准确。 需要确认导入文件的encoding,一般都不做设置,此时一般是随系统设定,一般为GBK。 如出现此问题,可在进程中,设置以何种charset进行转换,具体的编码可查询SetInputCharacterSet的帮助,如:
SetInputCharacterSet('TM1CS_GB18030');
同理,导出时也可做此设置。
当需要将文件从Windows迁移到Linux平台,需使用tm1xfer 工具来实现
- 服务器不要配配置JAVA_HOME等java配置信息,避免由于java版本差异,导致无法启动服务
- content数据库,需要手工放置jdbc连接文件到安装目录下的drivers目录下,oracle使用ojdbc6.jar,sqlerver使用sqljdbc42.jar
\analytics\configuration\schemas\content\oracle
- @用于字符串比较
- 惊叹号字符用作规则 DB 函数中的! 维参数的一部分,不得用于将在规则中使用的对象名
- 区域中,某个子集用{}扩起所有子集成员,也就是在这个子集成员范围内使用。
['Trout', {'Karachi', 'Boston', 'Helsinki'}]
- 区域中,如果2个维度有相同元素名,可通过"维度:元素名称"来做区分
- continue,可用于CONTINUE 函数允许执行具有相同区域定义的后续语句。
['Jan']= if(!region @= 'Argentina',10,CONTINUE);['Jan']=20;
对 Jan 和 Argentina 标识的所有单元格指定值 10。 由 Jan 和任何其他 Region 元素标识的单元格都将被赋以值 20。
- 限定符,N: 计算仅对叶单元格有效; C: 计算仅对合并单元格有效; S:计算仅对字符串单元格有效。
- 限定符可以连着使用。
['Price'] =
N:DB('PriceCube', !Actvsbud, !Region, !Model, !Month);
C:['Sales']\['Units']*1000;
N: 的一个计算访问, C:的一个计算方法
- 公式元素符:/ 是除法,但遇除零错误时,返回0
- DB() 函数适用于引用外部多维数据集;[] 用于引用当前多维数据集;计算语句引用字符串元素,那么必须使用 DB 函数来检索字符串。
用于跳过部分单元格的计算。以下2种写法,效果相同。
['Gross Margin', 'France']= STET;
['Gross Margin'] = ['Sales'] * 0.53;
['Gross Margin'] = IF(!Region @= 'France', STET, ['Sales']* 0.53);
- 默认合并计算时,会进行稀疏计算,即跳过那些为0的值。但在规则中,合并计算默认不会进行稀疏计算。为了还能够使用稀疏计算,加入SKIPCHECK命令后,将在规则中也使用稀疏计算。
- 在规则中插入 SKIPCHECK; 语句后,您不能再理所当然地认为计算是准确的。 即使正确定义了规则,如果数据加载程序未准确描述规则派生值所在的位置,那么合并结果也将是错误的。
- 在规则中加入SKIPCHECK后,会导致一些合并数据无法被计算。此时可是要Feeders,告诉TM1,“金额”会受到“销量”的影响,当销量变化时,金额需要被计算。
feeders;
['销量'] => ['金额'];
- 需安装docker,同时docker已添加到PATH中
- 当前用户需在docker组中,添加后,如果还是报错,关闭会话,重新登录可解决问题
# 查看组
cat /etc/groups
# 添加用户到组
usermod -a -G groupA user- 启动ip,需要输出环境变量,才可以被远程访问admin
export ADMINTOOL_IP=<ip address>
- http://ip:8888 访问admintool,并设置
- 如何重新导入部分数据(如某日的数据)