互动量准确性校验 #
需求 #
互动量是社媒分析中常用的指标,一般是由评论数和点赞数相加得到,但根据不同的站点会有不同的计算方式,在巡检过程中发现数
样例数据 #
字段描述 #
各阵地互动量计算公式 #
微博:互动量=转发数+评论数+点赞数
微信:互动量=在看数+点赞数+阅读数
小红书:互动量=评论数+点赞数+收藏数+转发数
B站:互动量=弹幕数+评论数+点赞数+投币数+收藏数+转发数
其他:互动量=评论数+点赞数
根据计算公式,明显可以看出样例数据中第一条数据的互动量计算是错误的,质检需要把这个情况反馈出来
需求分析 #
需求总结为以下两点:
- 数据中出现的问题为指标列(互动量)与预期不符,具体表现为互动量不等于公式计算结果
- 互动量根据不同的站点,计算公式不一样
不同阵地的计算方法,通过case when即可解决,由于目前数据质检的SQL输出只支持标量(一行数据),因此需要进行标量处理。将数据源中【互动量】列减去质检计算出来的【互动量】,若结果不为0,则说明【互动量】计算有问题,最后统计不为零的数量即可得出有多少数据是计算错误的。
自定义模板设计 #
输入参数&输出指标确定 #
输入参数:数据源,站点名称,转发数,评论数,点赞数,弹幕数,投币数,收藏数,在看数
输出指标:计算错误行数
SQL试运行 #
此步骤用于验证SQL是否写对,统计结果是否如预期,目前XDP未提供试运行环境,用户需要在自己的客户端完成该工作。
select count(1) from
(select site_name,
CASE
WHEN site_name = '微博' then interaction_cnt - review_cnt - like_cnt - reposts_cnt
WHEN site_name = '微信' then interaction_cnt - review_cnt - like_share_cnt - view_cnt
WHEN site_name = '小红书' then interaction_cnt - review_cnt - like_cnt - reposts_cnt - collection_cnt
WHEN site_name = '哔哩哔哩' then interaction_cnt - review_cnt - like_cnt - reposts_cnt - collection_cnt - barrage_cnt - specie_cnt
ELSE interaction_cnt - review_cnt - like_cnt
END as interaction_cnt_quantity
from <code>3C_hot</code>) as t
where interaction_cnt_quantity != 0
运行结果
试运行验证通过后,就可以将SQL中相关的参数改为占位符
改写带占位符的SQL #
由于质检模板本质上是一个函数,只在运行时传入参数进行实例化,因此,不能将实际的数据源、字段写入模板中,需要将试运行时的相关数据源、字段用占位符替代
select count(1) as error_count from
(select ${column1},
CASE
WHEN ${column1} = '微博' then ${column2} - ${column3} - ${column4} - ${column5}
WHEN ${column1} = '微信' then ${column2} - ${column3} - ${column7} - ${column8}
WHEN ${column1} = '小红书' then ${column2} - ${column3} - ${column4} - ${column5} - ${column6}
WHEN ${column1} = '哔哩哔哩' then ${column2} - ${column3} - ${column4} - ${column5} - ${column6} - ${column9} - ${column10}
ELSE ${column2} - ${column3} - ${column4}
END as interaction_cnt_quantity
from ${schema_table1}) as t
where interaction_cnt_quantity != 0
改写占位符的时候,可以顺便把自定义模板也配置了
规则配置&运行 #
配置完自定义模板后,在创建质检规则时,就可以选择该模板。注意:要选择自定义模板
配置数据源参数