如何在不丢失分析数据的前提下清理BigQuery/Firebase中的旧用户属性?
解决Firebase用户属性重命名后旧属性清理与数据保留问题
一、先确认是不是真的属性溢出
先去Firebase控制台的「用户属性」页面,统计当前活跃的用户属性数量——BigQuery里的历史旧属性数据不会占用Firebase的25个属性配额,只有当前还在被客户端上报的活跃属性才算数。所以大概率是你还有旧版本客户端在上报BootsEquipmentItemName,导致活跃属性数逼近上限。
二、彻底停掉旧属性的上报
把所有客户端代码里的BootsEquipmentItemName全换成BootsItemName,确保新代码不再上报旧属性。如果还有用户在用旧版本客户端,要么推更新,要么在客户端逻辑里加拦截,不让旧属性再发往Firebase。
三、从Firebase控制台删除旧属性
进入Firebase控制台 → Analytics → 用户属性,找到BootsEquipmentItemName,点右侧三个点选删除。这个操作只会把旧属性从控制台的展示列表里去掉,完全不会删BigQuery里的历史数据,放心操作。
四、在BigQuery里合并新旧属性数据
要保留完整的分析数据,直接在BigQuery里写SQL把新旧属性合并就行,比如:
SELECT user_pseudo_id, -- 优先取新属性值,没有就用旧属性的,保证数据完整 COALESCE(new_boots.value.string_value, old_boots.value.string_value) AS BootsItemName, -- 其他你需要的用户属性... FROM `你的项目ID.analytics_xxxxxx.events_*`, UNNEST(user_properties) AS new_boots LEFT JOIN UNNEST(user_properties) AS old_boots ON old_boots.key = 'BootsEquipmentItemName' WHERE new_boots.key = 'BootsItemName'
嫌每次写麻烦的话,直接创建一个视图,把这个合并逻辑固化,以后分析直接查视图就好。
五、验证结果
等个24小时,再去Firebase控制台看用户属性数量,确认旧属性已经从活跃列表里消失,配额回到正常范围。同时在BigQuery里查一下刚才的视图,确认新旧数据都合并成功,历史数据没丢。
内容的提问来源于stack exchange,提问作者Aleksandr Kuznetsov
相关产品推荐
相关产品推荐

