首页 文章

如何为应用了多个维度的自定义Firebase事件获取唯一用户数?

提问于
浏览
1

我目前正在尝试为BigQuery中的自定义Firebase活动计算唯一身份用户 . 虽然我已经能够通过使用APPROX_COUNT_DISTINCT函数来获得聚合中的数字,但是当选择并向表中添加许多不同的维度时,我仍然坚持获得正确的(唯一的)计数 .

关于使用HLL_COUNT.INIT的following resource让我更近了一步,但我还没弄明白如何在同一个表中使用HLL_COUNT.MERGE函数,这样我就可以通过在datastudio中应用过滤器来获取事件唯一用户数

enter image description here

到目前为止我用过的查询:

SELECT
 (SELECT x.date) AS event_date, 
 (SELECT x.name) AS name,
 (SELECT params.value.string_value FROM x.params WHERE params.key = 'grade') AS vl_grades,
 user_dim.geo_info.region as user_region,
  user_dim.geo_info.city as user_city,
  user_dim.device_info.user_default_language as user_language,
   (SELECT user_prop.key) AS user_prop_key,
   (SELECT user_prop.value.value.string_value) AS user_prop_string_value,
    COUNTIF(user_prop.key = "first_open_time") as event_count ,
    APPROX_COUNT_DISTINCT(user_dim.app_info.app_instance_id) as unique_user,
    HLL_COUNT.INIT(user_dim.app_info.app_instance_id) as sketch
FROM `project.info_project_TOTAL.TOTAL_results_jobs` ,
UNNEST (user_dim.user_properties) AS user_prop,
UNNEST(event_dim) AS x
WHERE x.name = 'Zlag_Click'

GROUP BY date,user_prop_key,user_prop_string_value,name,fr_grades,vl_grades,style,item_category,indoor_outdoor,boulder_route,item_name,user_dim.geo_info.country,user_dim.app_info.app_platform,user_dim.geo_info.region,user_dim.geo_info.city,user_dim.device_info.user_default_language,location

ORDER BY event_count desc

有没有人对我如何达到这一点有任何想法,表格允许我回答诸如这样的问题 - 德国有多少独特用户在过去的x天内触发了一个事件? - 在过去x天内有多少独特用户触发了难度等级为5的事件? - 过去x天内有多少独特用户请求了以下资源?

谢谢

1 回答

  • 1

    让project.table_results成为您从查询中保存结果的表 . 由于我没有看到与您要回答的所有问题相对应的列,因此我将对您可以提供的列进行一些假设 .

    要计算在过去5天内触发event_count的用户数:

    SELECT HLL_COUNT.MERGE(sketch) approx_cnt
    FROM `project.table_results`
    WHERE date >= DATE_SUB(CURRENT_DATE(), INTERVAL 5 DAY)
    AND event_count > 0
    

    如果存在难度级别字段; event_diff_level,添加

    AND event_diff_level == 5
    

    要获取请求特定资源的唯一用户数,请添加

    AND <resource_column_name> == <resource>
    

    此外,您不需要 (SELECT x.<struct_field>) as <struct_field> . 只需 x.<struct_field> as <struct_field> 即可 . 我希望有所帮助 .

相关问题