Join 或 derive 本地正常生产报错
报错信息:Error in cell A39 Error in cell A39 null: Duplicated primary keys
写法一:
A39 >rs1=mainTableListAddAmount.derive(baseCorps.select(.corpId==mainTableListAddAmount.corpId).corpCode:shopCode,baseCorps.select(.corpId==mainTableListAddAmount.corpId).corpName:corpName,baseproducts.select(.productId==mainTableListAddAmount.productId).productCode:productCode,baseproducts.select(.productId==mainTableListAddAmount.productId).productName:productName)
写法二:
A39 rs1=mainTableListAddAmount.join(.corpId,baseCorps:corpId,corpCode:shopCode,corpName;.productId,baseproducts:productId,productCode,productName)
上面两种写法都报上面的错
错误信息写了主键重复,本地可能数据少没重复的
把生产数据同步下来到本地了,本地执行没有报错
调试错误,就是一点点剥掉不相关的东西,剩最后特别简单的情况如果也报错,就可以确定问题所在。
只是单纯说个现象,那只能凭经验猜一下。
比如,你可能并没有完全复制生产的数据,或者错误并不是在这一行出现的,…。
一点点去追,总能追出来,当然也可能(小概率)发现是 SPL 有错误,但也是面对非常简单的脚本和数据情况可以再现。
这种错误挺容易排查的,维表的主键值有重复的,只要把维表按主键去重看看得到结果的数量是否和源数量相等。
=baseproducts.id(productId).len()==baseproducts.len()
=baseCorps.id(corpId).len()==baseCorps.len()
执行一下这两个表达式看看哪个的计算结果是 false