18
18
19
19
package com .dtstack .flink .sql .side .rdb .all ;
20
20
21
- import org . apache .flink .api . java . typeutils . RowTypeInfo ;
22
-
21
+ import com . dtstack .flink .sql . side . AbstractSideTableInfo ;
22
+ import com . dtstack . flink . sql . side . BaseSideInfo ;
23
23
import com .dtstack .flink .sql .side .FieldInfo ;
24
24
import com .dtstack .flink .sql .side .JoinInfo ;
25
25
import com .dtstack .flink .sql .side .PredicateInfo ;
26
- import com .dtstack .flink .sql .side .BaseSideInfo ;
27
- import com .dtstack .flink .sql .side .AbstractSideTableInfo ;
28
26
import com .dtstack .flink .sql .side .rdb .table .RdbSideTableInfo ;
29
27
import com .dtstack .flink .sql .util .ParseUtils ;
30
28
import com .google .common .collect .Lists ;
31
29
import org .apache .calcite .sql .SqlNode ;
32
30
import org .apache .commons .collections .CollectionUtils ;
33
31
import org .apache .commons .lang3 .StringUtils ;
32
+ import org .apache .flink .api .java .typeutils .RowTypeInfo ;
34
33
import org .slf4j .Logger ;
35
34
import org .slf4j .LoggerFactory ;
36
35
37
- import java .util .Arrays ;
38
36
import java .util .List ;
37
+ import java .util .Map ;
38
+ import java .util .Objects ;
39
39
import java .util .stream .Collectors ;
40
40
41
41
/**
@@ -59,7 +59,18 @@ public RdbAllSideInfo(RowTypeInfo rowTypeInfo, JoinInfo joinInfo, List<FieldInfo
59
59
@ Override
60
60
public void buildEqualInfo (JoinInfo joinInfo , AbstractSideTableInfo sideTableInfo ) {
61
61
RdbSideTableInfo rdbSideTableInfo = (RdbSideTableInfo ) sideTableInfo ;
62
- sqlCondition = getSelectFromStatement (getTableName (rdbSideTableInfo ), Arrays .asList (StringUtils .split (sideSelectFields , "," )), sideTableInfo .getPredicateInfoes ());
62
+ List <String > selectFields = Lists .newArrayList ();
63
+ Map <String , String > physicalFields = rdbSideTableInfo .getPhysicalFields ();
64
+ physicalFields .keySet ().forEach (
65
+ item -> {
66
+ if (Objects .isNull (physicalFields .get (item ))) {
67
+ selectFields .add (quoteIdentifier (item ));
68
+ } else {
69
+ selectFields .add (quoteIdentifier (physicalFields .get (item )) + " AS " + quoteIdentifier (item ));
70
+ }
71
+ }
72
+ );
73
+ sqlCondition = getSelectFromStatement (getTableName (rdbSideTableInfo ), selectFields , sideTableInfo .getPredicateInfoes ());
63
74
LOG .info ("--------dimension sql query-------\n {}" + sqlCondition );
64
75
}
65
76
@@ -68,7 +79,7 @@ public String getAdditionalWhereClause() {
68
79
}
69
80
70
81
private String getSelectFromStatement (String tableName , List <String > selectFields , List <PredicateInfo > predicateInfoes ) {
71
- String fromClause = selectFields . stream (). map ( this :: quoteIdentifier ). collect ( Collectors . joining ( ", " ) );
82
+ String fromClause = String . join ( ", " , selectFields );
72
83
String predicateClause = predicateInfoes .stream ().map (this ::buildFilterCondition ).collect (Collectors .joining (" AND " ));
73
84
String whereClause = buildWhereClause (predicateClause );
74
85
return "SELECT " + fromClause + " FROM " + tableName + whereClause ;
0 commit comments