加载语句中的Concat字段

时间:2015-04-23 14:07:43

标签: qlikview

我有一个简单的加载声明:

LOAD FIELDA,
     FIELDB,
     FIELDC,
     FIELDD,
     FIELDE
FROM
[C:\Users\XXX\data.QVD]
(qvd);

这样可以很好地加载所有数据。

如果我将表达式添加到直表中,它会给出连接字段:

 concat(FIELDA&'.'&FIELDB&'.'&FIELDC&'.'&IF(Isnull(FIELDD), '0', FIELDD)&'.'&IF(Isnull(FIELDE), '0', FIELDE)) as MERGED

这是有效的,但是如果我尝试从load语句添加连接字段,我会收到错误:

LOAD FIELDA,
     FIELDB,
     FIELDC,
     FIELDD,
     FIELDE,
     concat(FIELDA&'.'&FIELDB&'.'&FIELDC&'.'&IF(Isnull(FIELDD), '0', FIELDD)&'.'&IF(Isnull(FIELDE), '0', FIELDE)) as MERGED
FROM
[C:\Users\XXX\data.QVD]
(qvd);
  

表达式无效

1 个答案:

答案 0 :(得分:3)

concat函数是一个聚合函数,因此它希望group by知道该怎么做,因此无效的表达式错误。在前端,您为图表选择的尺寸可用于此目的。

如果您只想连接行的字段行,只需删除concat函数。

FIELDA&'.'&FIELDB&'.'&FIELDC&'.'&IF(Isnull(FIELDD), '0', FIELDD)&'.'&IF(Isnull(FIELDE), '0', FIELDE) as MERGED

concat函数的实际用法是这样的,运行它并看看MERGE和MERGE2之间的区别;

A:

LOAD * INLINE [
    FieldA, FieldB,FieldC
    1, 2,1
    1, 0,1
    2, 9,1
    2, 4,1
];

B:

load FieldA,     
     concat(FieldB,'|') as MERGE     
Resident A
group by FieldA; 

C:

load FieldA,
     FieldB,
     FieldC,
     FieldA&'.'&FieldB&'.'&FieldC as MERGE2
resident A;

drop table A;