在QlikView中将相同的表添加到两个不同的表中 - 循环错误

时间:2018-01-17 21:59:52

标签: sql loops join concatenation qlikview

我是新的QlikView用户。我有一个准备好的数据(表格Alpha,Beta和Gamma,基于SQL选择),我需要添加一个新的数据(Delta-也是SQL选择)。综上所述,我希望制作一个完整的“字母”。

Image showing current tables and the wanted result -> here

Alpha与Beta或Gamma之间没有明确的联系(据我所知它是连接)。当我离开加入Delta与Beta时,一切正常。但是我需要将这个'E'列连接到Gamma表上(Bkey1 = Bkey2 = Bkey)。

所以在这一点上,为了添加Delta表,我输入类似这样的东西:

(...)
LOAD
Bkey as Bkey1,
E
;
SQL(...)
;

正如我所说它工作正常,但是现在是时候加入Delta和Gamma了,所以我再次粘贴相同的SQL Select并只更改Bkey的别名:

(...)
LOAD
Bkey as Bkey2,
E
;
SQL(...)
;

那是我收到循环错误的事情。

  

在数据库结构中发现了一个或多个循环引用。它们可能导致模糊的结果,因此应该避免。 QlikView将通过松散地(由其他人)设置一个或多个表来删除这些循环引用。在文档的属性页中运行脚本后,可以更改此设置

我真的不知道该怎么做。我现在看到的唯一解决方案是联合使用Beta和Gamma表,只将Bkey放在一列中。但我真的不知道它是否是最有效的方式。此外,我几乎不相信QlikView不能只添加一个额外的列(E)这么简单。

正如我之前所说的,我是QlikView的新手,到目前为止,我一直在使用SQL和VBA,所以我肯定会以这种方式缺乏知识。我会赞赏所有的答案。提前谢谢。

其他信息: AKey和Bkey是一致的,但在测试版中可能会有比Gamma更多的行,反之亦然。

1 个答案:

答案 0 :(得分:0)

我会连接Gamma和Beta,连接是Qliks版本的Union。然而,我认为Akey和Bkey在两个表格和那里都有关系。我还添加了一个Source字段,因此我可以区分Beta和Gamma。您通过在SQL中加入表来获得任何东西。 Qlik方面的联盟也非常快,并且不要求字段命名相同。链接表在功能上与SQL中的连接相同。

在qlik中会出现以下情况:

Alpha:
LOAD *;
SQL SELECT Akey,A,B FROM Alpha;

Beta:
LOAD 'Beta' as Source,*;
SQL SELECT Akey,Bkey,C FROM Beta;

Concatenate (Beta):
LOAD 'Gamma' as Source, *;
SQL SELECT Akey,Bkey,D FROM Gamma;

Delta:
LOAD *;
SQL SELECT Bkey,E FROM Delta;