可视化场景中NULL值处理方案咨询
Qlik 关联表NULL值(显示'-')处理方案
1. 检查NullAsValue的正确用法
很多时候NullAsValue未生效是因为缺少配套的NullValue设置,或者未指定目标字段。正确写法如下:
// 对所有字段生效 NullAsValue *; Set NullValue = '0'; // 替换为你需要的默认值,比如'无数据' // 仅对指定字段生效 NullAsValue 销售额, 产品类别; Set NullValue = '未知';
注意:NullAsValue需要放在数据加载脚本的最开头,确保在所有表加载前执行。
2. 加载阶段直接替换NULL/空值
如果NullAsValue不生效,可在加载单表时用函数直接处理:
- 数值型字段用
Alt():自动替换NULL为指定值表1: LOAD ID, Alt(销售额, 0) as 销售额, // NULL替换为0 Alt(数量, 1) as 数量 FROM [你的数据源路径]; - 文本型字段用
If():区分NULL和空字符串表2: LOAD ID, If(IsNull(客户名称) Or Trim(客户名称) = '', '未知客户', 客户名称) as 客户名称, If(订单日期 Is Null, '无记录', Date(订单日期)) as 订单日期 FROM [你的数据源路径];
3. 关联时通过Join填充缺失值
如果是关联后产生的NULL(比如左连接右表无匹配数据),可在Join阶段直接处理:
表1: LOAD ID, 销售额, 客户名称 FROM ...; // 左连接表2并替换NULL Left Join(表1) LOAD ID, Alt(订单金额, 0) as 订单金额, If(产品类别 Is Null, '未分类', 产品类别) as 产品类别 FROM 表2的数据源;
4. 清理关联键的无效值
如果关联键(比如ID)存在NULL,会导致关联失败产生大量NULL,先过滤无效关联键:
表1: LOAD ID, 销售额, 客户名称 FROM ... Where Not IsNull(ID); // 过滤ID为NULL的记录 表2: LOAD ID, 订单日期, 产品类别 FROM ... Where Not IsNull(ID);
5. 区分Qlik中的NULL与空字符串
Qlik中显示的'-'可能是空字符串而非真NULL,此时NullAsValue无效,需要用字符串处理:
If(Trim(字段) = '', '无数据', 字段) as 字段
内容的提问来源于stack exchange,提问作者Pavel Solopov
相关产品推荐
相关产品推荐

