通过建表语句中的 PERIOD FOR SYSTEM_TIME
将表标识为维表,其中PRIMARY KEY(keyInfo)
中的keyInfo,表示用来和源表进行关联的字段,
维表JOIN的条件必须与keyInfo
字段一致。
CREATE TABLE tableName(
colName cloType,
...
PRIMARY KEY(keyInfo),
PERIOD FOR SYSTEM_TIME
)WITH(
type='db2',
url='jdbcUrl',
userName='dbUserName',
password='dbPwd',
tableName='tableName',
cache ='LRU',
cacheSize ='10000',
cacheTTLMs ='60000',
parallelism ='1',
partitionedJoin='false'
);
db2 9.X
维表参数信息 db2独有的参数配置:
参数名称 | 含义 |
---|---|
type | 维表类型, db2 |
url | 连接数据库 jdbcUrl |
userName | 连接用户名 |
password | 连接密码 |
schema | 表所属scheam |
// 定义全量维表
CREATE TABLE sideTable(
id INT,
name VARCHAR,
PRIMARY KEY(id) ,
PERIOD FOR SYSTEM_TIME
)WITH(
type='db2',
url='jdbc:db2://172.16.10.251:50000/mqTest',
userName='DB2INST1',
password='abc123',
tableName='USER_INFO2',
schema = 'DTSTACK'
cache ='ALL',
cacheTTLMs ='60000',
parallelism ='2'
);
CREATE TABLE sideTable(
id INT,
name VARCHAR,
PRIMARY KEY(id) ,
PERIOD FOR SYSTEM_TIME
)WITH(
type='db2',
url='jdbc:db2://172.16.10.251:50000/mqTest',
userName='DB2INST1',
password='abc123',
tableName='USER_INFO2',
schema = 'DTSTACK'
partitionedJoin ='false',
cache ='LRU',
cacheSize ='10000',
cacheTTLMs ='60000',
asyncPoolSize ='3',
parallelism ='2'
);
CREATE TABLE source1 (
id int,
name VARCHAR
)WITH(
type ='kafka11',
bootstrapServers ='172.16.8.107:9092',
zookeeperQuorum ='172.16.8.107:2181/kafka',
offsetReset ='latest',
topic ='mqTest03',
timezone='Asia/Shanghai',
topicIsPattern ='false'
);
CREATE TABLE source2(
id int,
address VARCHAR,
PERIOD FOR SYSTEM_TIME
)WITH(
type='db2',
url='jdbc:db2://172.16.10.251:50000/mqTest',
userName='DB2INST1',
password='abc123',
tableName='USER_INFO2',
schema = 'DTSTACK',
batchSize = '1'
);
CREATE TABLE MyResult(
id int,
name VARCHAR,
address VARCHAR,
primary key (id)
)WITH(
type='console'
);
insert into MyResult
select
s1.id,
s1.name,
s2.address
from
source1 s1
left join
source2 s2
on
s1.id = s2.id
DB2维表字段信息
-- DTSTACK.USER_INFO2 definition
CREATE TABLE "DTSTACK "."USER_INFO2" (
"ID" INTEGER ,
"NAME" VARCHAR(50 OCTETS) ,
"ADDRESS" VARCHAR(50 OCTETS) )
IN "USERSPACE1"
ORGANIZE BY ROW
;
GRANT CONTROL ON TABLE "DTSTACK "."USER_INFO2" TO USER "DB2INST1"
;
维表数据:(1001,maqi,hz)
源表数据:{"name":"maqi","id":1001}
输出结果: (1001,maqi,hz)