【问题标题】:How to effectively "outer join" two data sources (SQL queries) in OBIEE 11g data model?如何在 OBIEE 11g 数据模型中有效地“外连接”两个数据源(SQL 查询)?
【发布时间】:2019-01-15 04:10:59
【问题描述】:

我在一个数据模型中有两个 SQL 查询,每个查询用于不同的数据源。我试图将一个链接到另一个链接,以创建包含所有列的报告不会排除每个查询中不匹配的值。创建报告时,简单地链接元素似乎是“内部连接”(排除两个查询中不匹配的值)。我希望在创建报告时将一个源与另一个源“左连接” - 我希望从另一个源显示空值。

当我查看数据模型本身(通过数据选项卡)中的数据时,会显示空值。我只是在创建报告时遇到了这个问题。

我不是 DBA,拥有只读数据库访问权限。我无权使用任何 OBIEE 桌面工具。

Example

【问题讨论】:

  • 查看这些查询以及一些示例数据会有所帮助。
  • 添加了示例链接来演示问题并显示需要什么。为简单起见,假设基本的“select * from”查询。

标签: sql database oracle11g obiee


【解决方案1】:

【讨论】:

  • 我在 BI Publisher 中找不到此选项。
  • 您从未说过 BI Publisher。 OBIEE 就是 OBIEE。不是 BI Publisher。
  • 克里斯,我很抱歉,但我引用了 BI Publisher 中的数据模型功能。
  • @User8675309 我已经回答了你的问题没有解决吗?
  • Zaynul,我相信这只适用于表格。我在 BI Publisher 数据模型中使用两个单独的数据源(SQL 查询)。
【解决方案2】:

在 query1 和 query2 之间使用简单的左连接:

select q1.name,q2.name from  query1 q1 left join query2 q2
on q1.num=q2.num2
order by q1.name

http://sqlfiddle.com/#!4/ef642/3

NAME    NAME2
ExA1    ExB1
ExA2    
ExA3    
ExA4    
ExA5    ExB4

【讨论】:

    【解决方案3】:

    想通了。诀窍是通过 UNION 向第二个表添加一个“虚拟行”,并在第一个表中创建一个“虚拟列”(通过 CASE WHEN 列为 NULL),它使用一些占位符值代替空值。然后,使用虚拟列链接两个表。这样,当两个查询链接时,空值不会被排除在实际列中。创建报告时,只需排除虚拟列即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多