在BigQuery中为Firebase Analytics计算活动用户指标

时间:2017-09-19 14:02:55

标签: google-bigquery firebase-analytics

我最近偶然发现了post来计算BigQuery中的MAU(给定Firebase Analytics数据)。我在这个查询中为我的项目回答了DAU,WAU和MAU,但我看到了MAU和WAU计算的一些细微差别。目的是计算我可以与Firebase信息中心here进行比较的有效用户指标

1)计算MAU

#standardSQL
SELECT
  FORMAT_TIMESTAMP(
      '%Y-%m',
      TIMESTAMP_MICROS(user_dim.first_open_timestamp_micros)) AS year_and_month, 
  COUNT(DISTINCT user_dim.app_info.app_instance_id) AS monthly_visitors
FROM `<<project-id>>.app_events_*`
WHERE (_TABLE_SUFFIX BETWEEN '20170101' AND '20170731')
------ Inclusive for both the start-date and end-date
AND user_dim.first_open_timestamp_micros BETWEEN 1483228800000000 AND 1501545599000000
GROUP BY year_and_month 
ORDER BY year_and_month DESC;

# 1483228800000000   Sunday, January 1, 2017 12:00:00 AM
# 1501545599000000   Monday, July 31, 2017 11:59:59 PM
# https://www.epochconverter.com/

问题:

  • 输出比我在Firebase控制台中看到的值低至少30%。
  • 是&#34; user_dim.first_open_timestamp_micros&#34;只写column_name或帮助确定输出值?如果用户在5月份首次开放,6月份没有回来,然后在7月举行会议,该怎么办?根据上面的代码,那个用户不会仅在5月(而不是7月)被计算在内吗?
  • 我想WHERE子句中更大的&#34; First Open Timestamp&#34; -range会更好,因为它会考虑更多的安装程序。如何在不获得如下所示的奇怪输出的情况下添加更宽范围:

    enter image description here

  • 我认为表格后缀会正确设置范围?没有&#34; AND user_dim.first_open_timestamp_micros BETWEEN 1483228800000000 AND 1501545599000000&#34; -clause,就会得到错误的输出,如上所述。

2)计算WAU

#standardSQL
SELECT
  FORMAT_TIMESTAMP(
      '%Y-%W',
      TIMESTAMP_MICROS(user_dim.first_open_timestamp_micros)) AS year_and_week, 
  COUNT(DISTINCT user_dim.app_info.app_instance_id) AS weekly_visitors 
FROM `<<project-id>>.app_events_*`
WHERE (_TABLE_SUFFIX BETWEEN '20170306' AND '20170917')
------ Inclusive for both the start-date and end-date
AND user_dim.first_open_timestamp_micros BETWEEN 1488758400000000 AND 1505692799000000
GROUP BY year_and_week 
ORDER BY year_and_week DESC;

# 1488758400000000    Monday, March 6, 2017 12:00:00 AM
# 1505692799000000    Sunday, September 17, 2017 11:59:59 PM

问题

  • 上述查询比我在Firebase控制台中看到的要低至少50%。我知道由于approximation,不同的值会有大约10%的差异,但50%的差异太大了。
  • 我还使用过&#39;%Y-%W&#39;得到我的价值观,而不是'% - %w&#39; (例如,在MAU计算中,%Y-%m&#39;)会发挥作用吗?

3)计算DAU

我只设法计算当天安装的不同ID。这基本上是firebase文档中的first_open。

    #standardSQL
    SELECT
      FORMAT_TIMESTAMP(
          '%D',
          TIMESTAMP_MICROS(user_dim.first_open_timestamp_micros)) AS year_and_day, 
      COUNT(DISTINCT user_dim.app_info.app_instance_id) AS day_visitors 
    FROM `<<project-id>>.app_events_*`
    WHERE (_TABLE_SUFFIX = '20170917')
    ------ Inclusive for both the start-date and end-date
    AND user_dim.first_open_timestamp_micros BETWEEN 1505606400000000 AND 1505692799000000 
    GROUP BY year_and_day
    ORDER BY year_and_day;

# 1505606400000000  Sunday, September 17, 2017 12:00:00 AM
# 1505692799000000  Sunday, September 17, 2017 11:59:59 PM

问题:

  • 我如何计算DAU,考虑到今天之前安装的所有用户,并在9月17日再次召开会议。

0 个答案:

没有答案