str_to_map(字符串参数, 分隔符1, 分隔符2)
使用两个分隔符将文本拆分为键值对。
分隔符1将文本分成K-V对,分隔符2分割每个K-V对。对于分隔符1默认分隔符是 ',',对于分隔符2默认分隔符是 '='
我们先介绍一下这个函数的应用场景。
Z表又被称之为拉链表。在同一个分区中主键是stat_date+uid被储存的值是客户的状态。
我们需要对客户状态进行统计。
select str_to_map(concat_ws(',',collect_set(concat(stat_date,':',label_state))),',',':')
from table1 group by uid;
存贮map字段必须用 map<string,string>存储
DROP TABLE IF EXISTS tmp.tmp_str_to_map; CREATE TABLE IF NOT EXISTS tmp.tmp_str_to_map ( uid string comment '客户号', date_label map<string,string> comment 'map字段' );