大数据方面,可以让它帮我们写SQL
下需求:
事件表有 user_id,event_name,event_time,ad_info
事件有 login 和 ad_click
login事件的参数:user_id,event_name,event_time
ad_click事件的参数:user_id,event_name,event_time,ad_info
写个查询给 login事件追加上ad_info(left join),取该用户登录之前的 ad_click事件,并且离得最近的一次
注意一点,因为ad_click可能存在多个,登录 事件 left join会存在一对多的情况(比如一条登录事件,对应3个ad_click。最终的结果我只是要一个登录事件和对应的的广告信息,而不是变成三个登录事件),这是不对的,我只是要追加广告信息。
出结果:
WITH login_with_ad AS (
SELECT
l.user_id,
l.event_name,
l.event_time AS login_time,
a.event_time AS ad_click_time,
a.ad_info,
ROW_NUMBER() OVER (
PARTITION BY l.user_id, l.event_time
ORDER BY a.event_time DESC
) AS rn
FROM
events l
LEFT JOIN
events a
ON
l.user_id = a.user_id
AND a.event_name = 'ad_click'
AND a.event_time < l.event_time
WHERE
l.event_name = 'login'
)
SELECT
user_id,
event_name,
login_time,
ad_info
FROM
login_with_ad
WHERE
rn = 1;
2,问题排查:
问:
ConfigMap = {
"1":" aaa"
}
python 获取字典ConfigMap,比如 ConfigMap['1']是不报错,ConfigMap['2']就报错,这是为什么
答:
字典是一种无序的键值对集合,通过键来唯一标识对应的值。当你使用方括号 [] 加键的方式访问字典中的值时,Python 会在字典里查找该键。若找到了对应的键,就返回该键所对应的值;若没找到,就会抛出 KeyError 异常。
使用 in 关键字进行检查
在访问键之前,先使用 in 关键字检查键是否存在于字典中。