Qlik Sense使用Join合并表后新增列参与计算提示字段不存在问题咨询
问题根因
Qlik Sense 脚本按自上而下的顺序执行,你在首次加载ORDERPOSITION表的LOAD语句中直接调用了DeliveredQuantity字段,但该字段是后续LEFT JOIN操作才会关联写入ORDERPOSITION表的,首次加载阶段该字段不存在,因此触发字段未找到报错。
修复方案
将TurnoverOrderPosition计算逻辑移到JOIN操作完成之后执行,先加载基础字段、完成关联,再做新增列计算,修改后的脚本如下:
ORDERPOSITION: LOAD AUFK_NR&'|'&FIRM_NR as %AUFK, (FIRM_NR&'|'&AUFK_NR&'|'&AUFP_NR) AS %AUFPdelivered, AUFP_NR, ART_NR as %ART_NR, ART_NR, AUFP_PREIS2, AUFP_PEHFAKTOR, AUFP_PREISFAKTOR FROM [lib://QVD/HKTRS2_V_AUFP.qvd] (qvd); LEFT JOIN (ORDERPOSITION) LOAD (FIRM_NR&'|'&AUFK_NR&'|'&AUFP_NR) AS %AUFPdelivered, AUFL_MENGE AS DeliveredQuantity FROM [lib://QVD/HKTRS2_V_AUFL.qvd] (qvd); // 关联完成后新增计算列 NEW_ORDERPOSITION: LOAD *, (AUFP_PREIS2/AUFP_PEHFAKTOR/AUFP_PREISFAKTOR)*DeliveredQuantity AS TurnoverOrderPosition RESIDENT ORDERPOSITION; // 清理旧表避免数据冗余 DROP TABLE ORDERPOSITION; RENAME TABLE NEW_ORDERPOSITION TO ORDERPOSITION;
额外注意事项
- 如果存在关联不上的行,
DeliveredQuantity会返回空值,计算出的TurnoverOrderPosition也会为空,可根据业务需要用Coalesce(DeliveredQuantity, 0)将空值替换为0,避免计算结果为空。 - 请确认两个表的关联键
%AUFPdelivered拼接规则完全一致,无大小写差异、多余空格、字段顺序错误等问题,避免关联失效导致DeliveredQuantity为空。
内容的提问来源于stack exchange,提问作者user17159356
相关产品推荐
相关产品推荐

