Qlikview中的SQL等价查询?

时间:2016-08-25 10:18:46

标签: sql-server business-intelligence qlikview

在SQL中,我们可以编写如下查询:

Select field1,field2,field3,field4,field5,field6,field7
from table1 t1,table2 t2,table3 t3
where t1.field1 = t3.field3 and
      t2.field2 = 'USD'

在Qlikview中,我创建了6个表的QVD,现在我想创建这6个QVD的单个QVD。不幸的是,这些表不包含主键。所以我不能使用加入。我也尝试过这样:

fact:
load * 
from 
[D:\path\fact*.qvd](qvd);
//To store all qvd's into one qvd.
store fact into [D:\path\facttable.qvd];

此查询创建一个facttable但只有2列,这些列是第一个事实表。图表清楚地表明了这一点:

enter image description here

因为它在内部给出了所有事实表的名称,包括fact,fact-1,fact-2等等,我已经将查询存储 fact 写入[D:\ path \ facttable .qvd];在此图中,事实表只包含两列,因此它创建的事实表只有两列。

请让我知道如何在Qlikview中编写此查询的解决方案,或者我们如何使用所有QVDS创建事实表?

提前致谢。

1 个答案:

答案 0 :(得分:3)

由于每个qvd包含不同的字段名称,因此在加载*时会创建多个具有合成键的表。

您可以使用Concatenate Load将每个qvd堆叠到一个事实表中。一个简单的例子是首先通过以下方式创建Fact表:

Fact:
Load * INLINE [
dummyField
];

现在您可以将qvd连接到Fact表:

concatenate(Fact)
load * 
from 
[D:\path\fact*.qvd](qvd);

//To store all qvd's into one qvd.

store Fact into [D:\path\facttable.qvd];
//drop the dummy field.
drop field dummyField;