Firebase BigQuery学习笔记

BigQuery问世好久一直没机会接触,刚好碰到跟行销相关案子就来研究一下了

正文开始

首先Firebase专案必须先关联上BigQuery,我自己实测大约隔天开始才会有值
http://img2.58codes.com/2024/20126774MLk3HqiKk0.png

切换到GCP BigQuery,关联上并且有资料后,在左侧选单会有analytic的子项,Firebase Analytics的Event似乎都是存放在这里,Event会以日期为单位切成Table,也可以直接从预览看到Table的资料
http://img2.58codes.com/2024/20126774p8xLGsNPJc.png

下几个简单的SQL测试捞取结果
From的部分需要特别注意,经过几次测试,Table要符合这个格式才不会报错<project-id>.<analytics_XXXXXXXXX>.<events_YYYYMMDD>
events后面YYYYMMDD可直接用"星号"取代,就不会被日期限制搜寻条件
http://img2.58codes.com/2024/20126774DxS90kRrSE.png

附上官方栏位说明及範例,有需要开发最好整个摸熟,不要老是找东西複製
https://support.google.com/firebase/answer/7029846?hl=zh-Hant
https://support.google.com/analytics/answer/9037342?hl=zh-Hant&ref_topic=7029512

接下来是关键了

通常行销报表需要一些栏位来判断成果

参考了一下网路上的文章,行销公司的报表,应该会有以下几个必备栏位
人数、浏览次数、平均停留时间、平均单次浏览页面、跳出率、离开率、浏览时段、浏览地区

首先我们玩玩看DAU

人数 => N 天活跃使用者

来这边给你複製
SELECT
COUNT(DISTINCT user_id) AS n_day_active_users_count
FROM
-- 请换成您的表格名称。
YOUR_TABLE.events_*
WHERE
event_name = 'user_engagement'
-- 请换成所需日期範围。
AND _TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYYMMDD';
http://img2.58codes.com/2024/20126774dkVlRTviA4.png

浏览次数 => 需要设定页面名称

SELECT
COUNT(event_timestamp) AS page_browse_count
FROM
YOUR_TABLE.events_*
UNNEST(event_params) AS param
WHERE
event_name = 'screen_view'
AND param.key = "firebase_screen_class"
AND param.value.string_value = "page name"
AND _TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYYMMDD';

需要特别注意的是event资料表中有非常多栏位都是event_params.XXXX,按照BigQuery语法需要作转换才能使用也就是UNNEST(event_params) AS param
firebase_screen_class key对应的value是在埋点的时候设定的,虽然官方有说预设就会纪录screen_view这个event,如果是没有特别埋点纪录的话,以Android来说就是会直接纪录Class name
http://img2.58codes.com/2024/20126774xXQ3mwZmKO.png

#平均停留时间(秒)

大概研究了一下发现只有使用firebase analytics提供的基本栏位设定可能不足以计算,以下文章有提到相关原因
https://www.stevenhi.xyz/2019/01/14/google-analytics-time-on-site/
https://www.yesharris.com/session-avg-time-error/

停留时间计算可能会需要再页面增加额外的event log timestamp才能较精确的计算。以Android来说有life cycle可以配合计算,onCreate(起始时间) -> onStop or onDestroy(结束时间),网页的方式可以参考上面文章

平均单次浏览页面(页)

SELECT
(COUNT( param.key = "firebase_screen_id") )as dist_count
FROM live-streaming-player.analytics_203057437.events_*,
UNNEST(event_params) AS param
WHERE
event_name = 'screen_view' AND param.key = "ga_session_id"
Group by param.value.int_value

浏览时段

event_timestamp可直接使用

跳出率、离开率

Google定义
https://support.google.com/analytics/answer/2525491?hl=zh-Hant
每一个screen_view event都会有ga_session_id <= 算是每个工作阶段 可以算成一次完整的使用
firebase_previous_class, firebase_screen_class参数可以把每个工作阶段的页面转跳串起来,就可以计算离开、跳出率

大概是我太菜了,暂时没有想到有什么SQL语法可以直接把这个结果串好
http://img2.58codes.com/2024/20126774G9aFwy9NcN.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章