看我第一个截图,忽略这个关联条件,直接判断值是否相等;结果里 charge_code 和 charge_device_code 值是相等的
应该是字段存在空格导致的,select hex(column), column from table where xxx=xxx; 您使用hex函数,看下关联字段匹配不上的两个值的hex函数结果是一样的么![image|456x59]
(upload://ycvWWueK11m8TYhMCcsHHqMOKJm.png) ,字符串存在空格会匹配不上
加上 broadcast hint 如 base left join [broadcast] fault 就好了,会不会是 bucket shuffle join 的问题呢。
这种方式您发个结果的截图看下
怎么获取query_dump文件 - StarRocks 用户问答 / 日常运维 - StarRocks中文社区论坛 (mirrorship.cn) 看上去是bug,但是我这边没有复现出来,麻烦您参考这个文档提供下query_dump文件
正在确认, 请稍等.
辛苦再发一个结果错误的 profile。
现在不稳定了;发现跑 SQL,一会结果正确,一会错误;
相同 SQL,刚才执行了几次,发现每次结果不同(之前用户也反馈有这个问题);
-
关联上的 profile
right.profile (292.3 KB) -
没关联上的 profile
error.profile (284.9 KB)
结果集只有 26 条;排除数据变动等因素干扰,因为只要给关联条件加上 upper, trim 等,结果就很稳定,都关联上了。这是加了 trim 的 profile
add_trim_on_join_key.profile (301.6 KB)
你好, 可以先将join不对的那条sql中, lead, lag这两个函数去掉看下join结果是否稳定吗?
@U_1664959442193_5951方便加微信看一下吗?
原因找到了,
- 原因:Cross Join 后面再 Hash Join,并且有的 Hash Table 是空的时候,可能会有问题。
- 绕过方式:可以设置
parallel_fragment_exec_instance_num = 48; pipeline_dop=1;
等下个版本 2.3.13 发布了,再设置回parallel_fragment_exec_instance_num = 1; pipeline_dop=0;