如何通过Cognos 10内容存储数据库关联视图与源报表(Oracle SQL)
关联Cognos 10视图与源报表的Oracle SQL实现
核心逻辑说明
Cognos内容存储中,报表视图(report view)的源报表关联信息存在cmobjprops3表中——该表的value字段保存了源报表的唯一标识CMID。通过这个字段可以直接建立视图与源报表的精准关联,而非仅查询同文件夹下的报表。
完整SQL语句
SELECT -- 视图相关信息 view_name.name AS 视图名称, view_obj.cmid AS 视图CMID, -- 源报表相关信息 report_name.name AS 源报表名称, report_obj.cmid AS 源报表CMID FROM cmobjects view_obj -- 关联视图名称表 INNER JOIN cmobjnames_base view_name ON view_obj.cmid = view_name.cmid -- 关联视图属性表,提取源报表CMID INNER JOIN cmobjprops3 view_props ON view_obj.cmid = view_props.cmid AND view_props.propID = (SELECT propid FROM cmproperties WHERE name = 'sourceReport') -- 关联源报表对象表 INNER JOIN cmobjects report_obj ON view_props.value = report_obj.cmid -- 关联源报表名称表 INNER JOIN cmobjnames_base report_name ON report_obj.cmid = report_name.cmid -- 过滤对象类型:仅处理报表视图和报表 INNER JOIN cmclasses view_class ON view_obj.classid = view_class.classid AND view_class.name = 'reportView' INNER JOIN cmclasses report_class ON report_obj.classid = report_class.classid AND report_class.name = 'report' -- 可选:指定单个视图查询,移除则返回所有视图与源报表的关联 WHERE view_name.name = 'Vue de rapport de lam Rapport Indicateurs IDFM'
语句解释
cmobjects:存储所有Cognos内容对象的基础元数据,包括唯一ID(CMID)和对象类型ID(classid)。cmobjnames_base:存储对象的显示名称,通过CMID与cmobjects关联。cmobjprops3:存储对象的长文本属性,这里通过sourceReport属性获取视图对应的源报表CMID。cmproperties:通过属性名称sourceReport匹配对应的属性ID,确保关联字段准确。cmclasses:过滤对象类型,避免混入文件夹、数据源等其他类型的对象。
对现有SQL的补充说明
你当前的SQL仅能查询视图所在文件夹内的所有报表,无法定位到视图对应的特定源报表。上述SQL通过视图内置的sourceReport属性直接关联,能精准返回每个视图对应的唯一源报表。
内容的提问来源于stack exchange,提问作者Mamadou Lamine BAH
相关产品推荐
相关产品推荐

