|
1 | | - |
2 | 1 | ## 1.格式: |
3 | | -``` |
| 2 | + |
| 3 | +通过建表语句中的` PERIOD FOR SYSTEM_TIME`将表标识为维表,其中`PRIMARY KEY(keyInfo)`中的keyInfo,表示用来和源表进行关联的字段, |
| 4 | + 维表JOIN的条件必须与`keyInfo`字段一致。 |
| 5 | + |
| 6 | +```sql |
4 | 7 | CREATE TABLE tableName( |
5 | 8 | colName cloType, |
6 | 9 | ... |
|
21 | 24 | ``` |
22 | 25 |
|
23 | 26 | # 2.支持版本 |
| 27 | + |
24 | 28 | 19.14.x、19.15.x、19.16.x |
25 | | - |
| 29 | + |
26 | 30 | ## 3.表结构定义 |
27 | | - |
28 | | - |参数名称|含义| |
29 | | - |----|---| |
30 | | - | tableName | clickhouse表名称| |
31 | | - | colName | 列名称| |
32 | | - | colType | 列类型 [colType支持的类型](docs/colType.md)| |
33 | | - | PERIOD FOR SYSTEM_TIME | 关键字表明该定义的表为维表信息| |
34 | | - | PRIMARY KEY(keyInfo) | 维表主键定义;多个列之间用逗号隔开| |
35 | | - |
36 | | -## 4.参数 |
37 | | - |
38 | | - |参数名称|含义|是否必填|默认值| |
39 | | - |----|---|---|----| |
40 | | - | type | 表明维表的类型 clickhouse |是|| |
41 | | - | url | 连接clickhouse数据库 jdbcUrl |是|| |
42 | | - | userName | clickhouse连接用户名 |是|| |
43 | | - | password | clickhouse连接密码|是|| |
44 | | - | tableName | clickhouse表名称|是|| |
45 | | - | tableName | clickhouse 的表名称|是|| |
46 | | - | cache | 维表缓存策略(NONE/LRU)|否|NONE| |
47 | | - | partitionedJoin | 是否在維表join之前先根据 設定的key 做一次keyby操作(可以減少维表的数据缓存量)|否|false| |
48 | | - |
49 | | - ---------- |
50 | | - > 缓存策略 |
51 | | - * NONE: 不做内存缓存 |
52 | | - * LRU: |
53 | | - * cacheSize: 缓存的条目数量 |
54 | | - * cacheTTLMs:缓存的过期时间(ms) |
55 | | - * cacheMode: (unordered|ordered)异步加载是有序还是无序,默认有序。 |
56 | | - * asyncCapacity:异步请求容量,默认1000 |
57 | | - * asyncTimeout:异步请求超时时间,默认10000毫秒 |
58 | | - |
59 | | -## 5.样例 |
| 31 | + |
| 32 | + [维表参数信息](docs/plugin/sideParams.md) |
| 33 | + |
| 34 | +clinkhose独有的参数信息 |
| 35 | + |
| 36 | +| 参数名称 | 含义 | 是否必填 | 默认值 | |
| 37 | +| -------- | --------------------- | -------- | ------ | |
| 38 | +| type | 维表类型, clinkhouse | 是 | | |
| 39 | +| url | 连接数据库 jdbcUrl | 是 | | |
| 40 | +| userName | 连接用户名 | 是 | | |
| 41 | +| password | 连接密码 | 是 | | |
| 42 | + |
| 43 | +## 4.样例 |
| 44 | + |
| 45 | +------ |
| 46 | + |
| 47 | +## ALL全量维表定义 |
| 48 | + |
| 49 | +```sql |
| 50 | +// 定义全量维表 |
| 51 | +CREATE TABLE sideTable( |
| 52 | + id INT, |
| 53 | + name VARCHAR, |
| 54 | + PRIMARY KEY(id), |
| 55 | + PERIOD FOR SYSTEM_TIME |
| 56 | + )WITH( |
| 57 | + type ='clickhouse', |
| 58 | + url ='jdbc:clickhouse://172.16.8.104:3306/zftest', |
| 59 | + userName ='dtstack', |
| 60 | + password ='abc123', |
| 61 | + tableName ='all_test_clinkhousesql', |
| 62 | + cache ='ALL', |
| 63 | + cacheTTLMs ='60000', |
| 64 | + parallelism ='1' |
| 65 | + ); |
60 | 66 | ``` |
61 | | -create table sideTable( |
62 | | - channel varchar, |
63 | | - xccount int, |
64 | | - PRIMARY KEY(channel), |
| 67 | + |
| 68 | +### LRU异步维表定义 |
| 69 | + |
| 70 | +``` |
| 71 | +CREATE TABLE sideTable( |
| 72 | + id INT, |
| 73 | + name VARCHAR, |
| 74 | + PRIMARY KEY(id) , |
65 | 75 | PERIOD FOR SYSTEM_TIME |
66 | 76 | )WITH( |
67 | | - type='clickhouse', |
68 | | - url='jdbc:clickhouse://172.16.8.104:3306/test?charset=utf8', |
69 | | - userName='dtstack', |
70 | | - password='abc123', |
71 | | - tableName='sidetest', |
| 77 | + type ='clickhousesql', |
| 78 | + url ='jdbc:clickhousesql://172.16.8.104:3306/zftest', |
| 79 | + userName ='dtstack', |
| 80 | + password ='abc123', |
| 81 | + tableName ='lru_test_clickhousesql', |
| 82 | + partitionedJoin ='false', |
72 | 83 | cache ='LRU', |
73 | 84 | cacheSize ='10000', |
74 | 85 | cacheTTLMs ='60000', |
75 | | - cacheMode='unordered', |
76 | | - asyncCapacity='1000', |
77 | | - asyncTimeout='10000' |
| 86 | + asyncPoolSize ='3', |
| 87 | + parallelism ='1' |
| 88 | + ); |
| 89 | +``` |
| 90 | + |
| 91 | +### ClickHouseSQL异步维表关联 |
| 92 | + |
| 93 | +```sql |
| 94 | +CREATE TABLE MyTable( |
| 95 | + id int, |
| 96 | + name varchar |
| 97 | + )WITH( |
| 98 | + type ='kafka11', |
| 99 | + bootstrapServers ='172.16.8.107:9092', |
| 100 | + zookeeperQuorum ='172.16.8.107:2181/kafka', |
| 101 | + offsetReset ='latest', |
| 102 | + topic ='cannan_zftest01', |
| 103 | + timezone='Asia/Shanghai', |
| 104 | + enableKeyPartitions ='false', |
| 105 | + topicIsPattern ='false', |
| 106 | + parallelism ='1' |
| 107 | + ); |
| 108 | + |
| 109 | +CREATE TABLE MyResult( |
| 110 | + id INT, |
| 111 | + name VARCHAR |
| 112 | + )WITH( |
| 113 | + type ='clickhousesql', |
| 114 | + url ='jdbc:clickhousesql://172.16.8.104:3306/zftest', |
| 115 | + userName ='dtstack', |
| 116 | + password ='abc123', |
| 117 | + tableName ='test_clickhouse_zf', |
| 118 | + updateMode ='append', |
78 | 119 | parallelism ='1', |
79 | | - partitionedJoin='false' |
| 120 | + batchSize ='100', |
| 121 | + batchWaitInterval ='1000' |
80 | 122 | ); |
81 | 123 |
|
| 124 | +CREATE TABLE sideTable( |
| 125 | + id INT, |
| 126 | + name VARCHAR, |
| 127 | + PRIMARY KEY(id) , |
| 128 | + PERIOD FOR SYSTEM_TIME |
| 129 | + )WITH( |
| 130 | + type ='clickhousesql', |
| 131 | + url ='jdbc:clickhousesql://172.16.8.104:3306/zftest', |
| 132 | + userName ='dtstack', |
| 133 | + password ='abc123', |
| 134 | + tableName ='test_clickhouse_10', |
| 135 | + partitionedJoin ='false', |
| 136 | + cache ='LRU', |
| 137 | + cacheSize ='10000', |
| 138 | + cacheTTLMs ='60000', |
| 139 | + asyncPoolSize ='3', |
| 140 | + parallelism ='1' |
| 141 | + ); |
82 | 142 |
|
| 143 | +insert |
| 144 | +into |
| 145 | + MyResult |
| 146 | + select |
| 147 | + m.id, |
| 148 | + s.name |
| 149 | + from |
| 150 | + MyTable m |
| 151 | + join |
| 152 | + sideTable s |
| 153 | + on m.id=s.id; |
83 | 154 | ``` |
84 | 155 |
|
85 | | - |
|
0 commit comments