加载语句中的 Concat 字段

Concat fields in load statement

我有一个简单的加载语句:

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

这会很好地加载所有数据。

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

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

这有效,但是如果我尝试从加载语句中添加一个连接字段,我会收到错误消息:

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);

Invalid expression

concat 函数是一个聚合函数,因此它希望 group by 知道要做什么,因此出现无效表达式错误。在前端,您为图表选择的维度就是为了这个目的。

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

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

实际使用concat函数是这样的,运行看看MERGE和MERGE2的区别;

甲:

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

乙:

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;