您的位置:首页 > 房产 > 家装 > 网页设计作业及答案_跨境浏览网站_百度开户资质_网站推广主要是做什么

网页设计作业及答案_跨境浏览网站_百度开户资质_网站推广主要是做什么

2025/2/25 20:21:49 来源:https://blog.csdn.net/weixin_43145550/article/details/145679054  浏览:    关键词:网页设计作业及答案_跨境浏览网站_百度开户资质_网站推广主要是做什么
网页设计作业及答案_跨境浏览网站_百度开户资质_网站推广主要是做什么

一、背景

大数据时代,数据来源主要是业务系统以及用户行为日志,其中 ,用户行为日志的形式主要是埋点,埋点的形式通常是Json格式的字符串,属于半结构化数据,如何将其规范化并入仓?后续如何方便使用?这就需要数仓工作者深思熟虑。

二、案例

用户打开APP并浏览时会触发条目曝光,我们会将曝光日志上传到 Kafka,并 Sink 到数仓,然后通过 ELT 开发相应的底表供使用,但是埋点不是一成不变的,随着产运增加相应的埋点变量,表的字段也会逐渐增多,表结构的频繁变更势必对下游造成影响,为避免频繁变更表结构,我们使用lef字段储存剩余未解析的埋点变量,无论后期增加多少埋点变量,直接从lef中解析即可。
但是在开发过程中也遇到一些问题,那就是lef中的数据该如何储存?下面为大家一一道来,请看CASE:

在这里插入图片描述
起初,lef中字段是以JSON形式存储,但是随着一些不重要的且非埋点事件本身的数据也不像单独放在表中,所以考虑跟lef合并在一起,代码如下:

select lef,recv_ts,to_json(named_struct('lef',lef,'recv_ts',recv_ts)) as json_str
from tmp_test where pt = max_pt('tmp_test')
limit 30;

结果如下:
在这里插入图片描述
在这里插入图片描述
其中,json_str 就是最终字段,但在使用时并不方便,比如解析其中ifAiAnswer_var,代码如下:

select get_json_object(get_json_object(lef,'$.lef'),'$.ifAiAnswer_var') 
from table
;

本来 get_json_object 函数支持通过 get_json_object(column,'$.val1.val2') 获取,所以对代码做了修改:

select lef,recv_ts,to_json(named_struct('lef',from_json(lef,'map<string,string>'),'recv_ts',recv_ts)) as json_str
from tmp_test where pt = max_pt('tmp_test')
limit 30;

结果如下:
在这里插入图片描述
这个时候,就可以根据 path 向下直接获取了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com