如何在 cognos 框架管理器中设置相关查询

How to set up correlated query in cognos framework manager

这里需要一些帮助。 我有如下查询。我应该如何在cognos框架中设置?或者,我怎样才能变成(多个)简单查询。那么我可以像我为其他查询所做的那样设置吗?

SELECT 
  isnull((SELECT  distinct   'Y'
  FROM 
  PC  WITH(NOLOCK) 
  join P WITH(NOLOCK) on  PC.POSTN_ID = P.ROW_ID and P.PR_EMP_ID=E.PER_ID
  join  CE WITH(NOLOCK) on  CE.PAR_ROW_ID=P.EMP_ID and E.PER_ID=CE.PAR_ROW_ID 
  where  PC.X_RESEARCH='Y' and PC.CON_ID=F.ROW_ID
  ) ,'N') X_RESEARCH,
  F.ROW_ID,
  E.ROW_ID A
   FROM
   F INNER JOIN G ON (G.CON_ID=dbo.S_CONTACT.ROW_ID)
   INNER JOIN E ON (E.ROW_ID=G.ACTIVITY_ID)

我已经导入了物理模型,只需要看看如何在逻辑模型中导入 非常感谢!

我可以建议在 Framework 中采用分层方法吗?

例如第一层,我们称之为导入 将是 P、PC、E 之类的表以及它们的连接方式和任何过滤器 在此级别创建数据源查询主题 查询主题 PC 的 SQL 将是

Select * from PC

然后添加过滤器 -

X_Research = 'Y'

下一个命名空间层是计算层,我们可以称之为开发层

作者想要的所有数据项 在此级别创建模型源查询主题并从导入层添加数据项或创建计算

Name: Activity ID
Expression: Import.G.Activity_ID

我们可以添加第三层用于演示

它有来自开发层的快捷方式,使模型更耐用(设计语言与标签更改)

如果你喜欢这个想法,请告诉我我可以添加更多关于如何assemble这个

的细节

刚刚又看了一眼。我之前的评论不准确。

我可以将您的查询归结为更容易阅读的内容:

SELECT coalesce(XR.X_RESEARCH, 'N') as X_RESEARCH
, F.ROW_ID
, E.ROW_ID A

FROM F
  INNER JOIN G ON G.CON_ID = dbo.S_CONTACT.ROW_ID
  INNER JOIN E ON E.ROW_ID = G.ACTIVITY_ID
  LEFT OUTER JOIN (
    select DISTINCT PC.X_RESEARCH
    , P.PR_EMP_ID as E_PER_ID
    , PC.CON_ID AS F_ROW_ID
    FROM PC
      INNER JOIN P  ON PC.POSTN_ID = P.ROW_ID
                   AND P.EMP_ID = P.PR_EMP_ID
      INNER JOIN CE ON CE.PAR_ROW_ID = P.EMP_ID
                 --AND CE.PAR_ROW_ID = P.PR_EMP_ID
    WHERE PC.X_RESEARCH = 'Y'
  ) XR ON XR.E_PER_ID = E.PER_ID
      AND XR.F_ROW_ID = F.ROW_ID

Cognos 在 ISNULL 上遇到问题。 COALESCE.
你会更幸运 当 P.EMP_ID = P.PR_EMP_ID.
时,您的 X_RESEARCH 值只会是 Y dbo.S_CONTACT 仍然不在 FROM 子句中,所以这仍然会失败。

我一般直接在项目的主命名空间下使用3个命名空间:

  • 物理层
  • 业务层
  • 表示层

但这通常用于数据集市。您尝试做的事情可能会使用这种模式,但我不会在这里使用表示层。

右键单击物理层并使用 "Import Metadata Wizard..." 让 Cognos 从您的数据库(F、G、E、P、PC、CE)创建查询主题。看起来你已经完成了这一步。

在业务层,为每个物理查询主题创建一个查询主题。他们应该是 "model" 个查询主题。

创建业务查询主题之间的关系。

(后两步可能不需要。您可以使用物理层来满足相同的需求。但这样做可能会更容易从未来的数据库更改中恢复。)

创建一个结合了P、PC、CE的查询主题(上面我把子查询叫做XR)。将过滤器 PC.X_RESEARCH = 'Y' 添加到此过滤器。

创建 XR、F 和 E 之间的关系。

创建包含最终输出的查询主题。