流表JOIN
流与表进行连接操作,从表中查询并补全流字段。目前支持连接RDS表和DCS服务的Redis表。通过ON条件描述查询的Key,并补全表结构的Value字段。
RDS表的数据定义语句请参见创建RDS表。
Redis表的数据定义语句请参见创建Redis表。
语法格式
1 2 |
FROM tableExpression JOIN tableExpression ON value11 = value21 [ AND value12 = value22] |
语法说明
ON条件中只支持表属性等值查询,当存在二级Key时(Redis值类型为HASH情况下),需要AND表达Key和Hash Key等值查询。
注意事项
无。
示例
将车辆信息输入流与车辆价格表做等值连接后,获取车辆价格信息并填入车辆信息输出流后输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
CREATE SOURCE STREAM car_infos ( car_id STRING, car_owner STRING, car_brand STRING, car_detail_type STRING ) WITH ( type = "dis", region = "", channel = "dliinput", partition_count = "1", encode = "csv", field_delimiter = "," ); /** 创建数据维表,用于和输入流连接,实现字段回填 * * 根据实际情况修改以下选项: * value_type:redis的键值对应值类型,支持STRING、HASH、SET、ZSET、LIST,其中HASH类型需要指定hash_key_column作为二层主键,集合类型将用逗号拼接所有查询出来的值 * key_column:维表主键对应的列名 * hash_key_column:当redis的键值对应值类型为HASH时,HASHMAP的KEY对应的列名,当值类型非HASH时,无需指定该配置 * cluster_address:DCS服务redis集群地址 * password:DCS服务redis集群密码 **/ CREATE TABLE car_price_table ( car_brand STRING, car_detail_type STRING, car_price STRING ) WITH ( type = "dcs_redis", value_type = "hash", key_column = "car_brand", hash_key_column = "car_detail_type", cluster_address = "192.168.1.238:6379", password = "xxxxxxxx" ); CREATE SINK STREAM audi_car_owner_info ( car_id STRING, car_owner STRING, car_brand STRING, car_detail_type STRING, car_price STRING ) WITH ( type = "dis", region = "", channel = "dlioutput", partition_key = "car_owner", encode = "csv", field_delimiter = "," ); INSERT INTO audi_car_owner_info SELECT t1.car_id, t1.car_owner, t2.car_brand, t1.car_detail_type, t2.car_price FROM car_infos as t1 join car_price_table as t2 ON t2.car_brand = t1.car_brand and t2.car_detail_type = t1.car_detail_type WHERE t1.car_brand = "audi"; |