回答
您可以选择使用以下查询从内容存储库报告的列表:
SELECT CMOBJNAMES_BASE.NAME AS ObjName, CMOBJECTS.PCMID, CMCLASSES.NAME AS ClassName, CMOBJPROPS7.spec
FROM CMOBJECTS
JOIN CMOBJNAMES_BASE ON CMOBJECTS.CMID = CMOBJNAMES_BASE.CMID
JOIN CMCLASSES ON CMOBJECTS.CLASSID = CMCLASSES.CLASSID
LEFT JOIN CMOBJPROPS7 ON CMOBJECTS.CMID = CMOBJPROPS7.CMID
WHERE CMOBJECTS.CLASSID IN (10, 37)
ORDER BY CMOBJECTS.PCMID;
我使用在Cognos 10,我相信在IBM Cognos 8 CMOBJNAMES_BASE表实际上是一个名为“CMOBJNAMES”,不_基础。
报表元数据作为XML存储在CMOBJPROPS7的'SPEC'列中。您可以解析此XML,以便删除报告中使用的列。这不是一个简单的任务。
如果您有时间而不是金钱,您可以编写自己的代码来解析该XML。如果你有更多的钱比时间,你可以购买第三方程序来完成这一点,如Motio或BSP Metamanager。
上面的查询对于构建一个干净的列列表不太有用,但对搜索特定的数据项很有用。例如,您想要在数据源中更改列,但不确定哪个报表使用该列。运行上面的查询,并搜索数据项。它将嵌入在Cognos MDX格式的XML中,即。 [Presentation View]。[Sales Summary]。[Sales]
编辑:如下所示,这是一个包含文件夹路径的查询。
-- List of Reports, the folder they are in, and the package they are using
select distinct temp2.name as package,temp1.folder,temp1.name from
(SELECT temp.PARENTNAME AS FOLDER,CMOBJECTS.PCMID,CMOBJNAMES.CMID, CMOBJNAMES.LOCALEID, CMOBJNAMES.MAPDLOCALEID, CMOBJNAMES.ISDEFAULT, CMOBJNAMES.NAME,
CMOBJECTS.CLASSID
FROM CMOBJNAMES INNER JOIN
CMOBJECTS ON CMOBJNAMES.CMID = CMOBJECTS.CMID
INNER JOIN
(SELECT P.CMID AS PARENT,P.NAME AS PARENTNAME FROM CMOBJNAMES P where P.LOCALEID between 24 and 52) temp
ON CMOBJECTS.PCMID = TEMP.PARENT
WHERE (CMOBJECTS.CLASSID = 10)
AND SUBSTR(TEMP.PARENTNAME,1,1) NOT IN ('1','2','3','4','5','6','7','8','9') AND
TEMP.PARENTNAME NOT LIKE 'Backup%') temp1
inner join
(SELECT CMREFNOORD1.CMID AS PID, CMREFNOORD1.REFCMID, CMOBJNAMES.NAME
FROM CMREFNOORD1 INNER JOIN
CMOBJECTS ON CMREFNOORD1.REFCMID = CMOBJECTS.CMID INNER JOIN
CMOBJNAMES ON CMOBJECTS.CMID = CMOBJNAMES.CMID
WHERE (CMREFNOORD1.PROPID = 31 AND CMOBJNAMES.LOCALEID between 24 and 52)) temp2
on temp1.cmid = temp2.pid and LOCALEID between 24 and 52;
我一直在寻找专门的列(标签),所以这个查询没有完全捕获它 - 此外,我被告知我们没有SDK,我明白这是访问内容存储所必需的。不管怎么说,还是要谢谢你。查询+1。 – jabs
SDK不需要查询内容存储。内容存储库是Cognos自己创建的DB2数据库(eek,适用于演示,并非真正用于生产),或者更可能是您自己创建并指定Cognos的数据库。使用Cognos使用的登录到达内容存储库,您将拥有所有您需要的访问权限。检查返回的元数据,它具有用于构建最终网页的数据,因此它可能包含您正在查找的标签。 – Damienknight
感谢Damienknight,查询已帮助。但是,我想知道是否有添加报表名称所在文件夹的方法? 例如,一些用户已经创建了一个文件夹,然后是一个子文件夹,然后保存报告。我们有一些营业额,事情没有记录,他们应该是。我需要根据报告中生成的以前保存的Excel文件中的列标题查找报告。 谢谢... – CWinKY
- 1. 将Cognos 7报告转换为Cognos 8
- 2. 使用cognos report studio为SQL查询生成Cognos报告
- 3. 查询在ReportServer实例上查找所有* SSRS数据集列表*所有* SSRS数据集所有* SSRS报告
- 4. 如何在报告中制作一列所有已检查列的名称?
- 5. 使用Cognos查看器与Cognos查询工作室和报表工作室
- 6. 慢Cognos报告
- 7. COGNOS报告为一个简单的子查询并加入查询
- 8. Cognos报告中的条件查询或模型
- 9. 查询获取模式中的所有表名称和列名称
- 10. 在Microsoft报告中查找排名
- 11. 名称列在查询
- 12. SQL查找表中所有列的SUM大于零的所有列的名称
- 13. (货款)报告: “查询列是无效的,使用列别名”
- 14. Linq查询报告EF4.2中计算列上的'无效列名'
- 15. IBM Cognos报告在连接到TM1时需要用户名称
- 16. 查找名称和扩展
- 17. nhibernate命名查询,找不到名称
- 18. 查找名称
- 19. “查找名称”
- 20. DataGridView和SQL查询名称
- 21. 查询名称
- 22. 如何查找包含名称列的所有表
- 23. 查找Excel列中的所有唯一名称
- 24. postgres查询列出所有表名
- 25. 查询结果缺少所有列名称
- 26. 查找与查询匹配的所有名称:如何使用后缀树?
- 27. 直到所有查询都执行完为止,SQL查询不是“报告”
- 28. 用于在表中查找最长名称和最短名称的SQL查询
- 29. 建议查找和报告CSV
- 30. c#和RDLC的示例查询报告
我不敢相信有人在那里甚至知道Cognos是什么!我认为我的公司是唯一使用它的公司。无论如何...你可以看看“分析”。这应该给你一个结果样本以及你正在寻找的数据类型。 – durbnpoisn
你在询问很多不同的信息。报告元数据被隐藏在内容存储库中,并且不容易出去,尽管一些Google搜索可能会给您一些疑问。列定义,您可能不得不退出各个FM模型。 – Andrew
@durbnpoisn - 是的,它在这里,我被我的部门分享了(暂时)。感谢分析技巧。 – jabs