优化器生成的联接错误

2020-09-14 15:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


2个表和一个非常简单的查询,该查询根据ID和日期字段将这2个表连接在一起。 维度表中的ID需要通过to_char()进行修改。 如果我修改联接并添加to_char(),则优化程序将删除此联接,并且仅将其余联接发送到数据库,这当然会产生废话。

我已经附上了屏幕

(12.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


2个表和一个非常简单的查询,该查询根据ID和日期字段将这2个表连接在一起。 维度表中的ID需要通过to_char()进行修改。 如果我修改联接并添加to_char(),则优化程序将删除此联接,并且仅将其余联接发送到数据库,这当然会产生废话。

我已经附上了屏幕

(12.0 kB)
付费偷看设置
发送
4条回答
浮生未央
1楼-- · 2020-09-14 15:57

米克尔。

您的源数据库是什么?

我尝试构建上述情况,但收到以下错误。 请您分享显示优化查询的DS画布的屏幕截图。

 <使用<1>参数调用,但是希望使用<2>。 通过传递正确数量的参数来修复呼叫。  (BODI-1116147)

关于。 S

小灯塔
2楼-- · 2020-09-14 15:42

你好!

非常感谢!

知道了,然后我理解,如果它首先比较所有不同的日期值,然后再应用第一个条件,那么我们将不得不在代码级别上更改它,否则我们将使用"几乎笛卡尔数据"。 沮丧是由于我在SQL优化器中看到的代码。

我看不到任何结果,因为即使有一个列存储,比较也要花费数小时,因为在数据库级别它只比较日期字段。 进行转换的唯一原因是由于非统一数据结构,其中一个系统中的ID存储为无符号整数,另一系统中的ID存储为varchar,因此进行了转换。我们无法创建新的数据库对象,因此转换是唯一的选择, 解决方法也存在,但是我对看到的SQL感到沮丧。

恕我直言,这样的方法是不正确的,但事实是这样。

Mikel

Aaron 3364
3楼-- · 2020-09-14 15:49

你好

这可以与SQL Server,Sybase一起复制,尚未尝试与其他数据库供应商一起使用。 您可以尝试

cast(T_TEXT.TAB_ID,'varchar(4)'),这是BODS语法

hongfeng1314
4楼-- · 2020-09-14 15:47

to_char无法下推到数据库。 另外两个条件可以。

这就是为什么出问题了。

如果要实现完全联接下推,请在查询转换中对表T_TEXT进行数据类型映射,使用data_transfer转换将结果存储在临时表中,然后将该表联接至F_TEXT。

一周热门 更多>