如何根据参数过滤Firebase事件?

时间:2020-10-14 15:18:07

标签: swift firebase google-analytics swiftui

在我的iOS应用中,我正在向Firebase发送事件,如下所示:

Analytics.logEvent(event, parameters: [
  AnalyticsParameterItemID: id,
  AnalyticsParameterItemName: name,
  AnalyticsParameterContentType: type,
])

例如,我可以发送事件complete_review,其ID为12代表屏幕。这似乎运作良好,并且在Firebase / Google Analytics(分析)仪表板中看到了事件数据。

但是,我不知道如何根据这些参数(例如idnametype)进行过滤。

例如:为了说明这一点,我目前有:"There are 2000 completed reviews" ...,但我真的想要"there are 500 completed reviews of id 1, 100 of id 2, 300 of id 3 ..."


我从documentation看到应该找到一个“编辑参数报告”链接,但是它似乎没有出现,我只是看到一个“标记为NPA”按钮:

enter image description here

现在看来,唯一的解决方案是使用事件名称。这意味着我将发送complete_review并发送大量不同事件,而不是将id设置为12,将complete_review_id_12设置为12,然后导出它,然后使用自定义脚本重新解析它。 。这感觉很糟糕,所以我想知道是否有人有更好的主意。

2 个答案:

答案 0 :(得分:0)

除非您在FirebaseScreenReportingEnabled中将false设置为Info.plist,否则Firebase会自动跟踪屏幕。

要获取报告中的最大详细信息,请记录对您的应用及其指定参数有意义的建议事件。这也可以确保您从最新的Google Analytics(分析)功能中受益。

您可以找到这些事件的完整列表here

因此,您应该将此代码用于具有自定义值的屏幕跟踪:

Analytics.logEvent(AnalyticsEventScreenView,
        parameters: [AnalyticsParameterScreenName: "ScreenName",
                     AnalyticsParameterScreenClass: "ScreenViewController",
                     "custom_value":customValue])

过滤自定义值在我的仪表板中非常有用。

对于记录自定义事件,您应该使用:

Analytics.logEvent("custom_event", parameters: ["custom_value":customValue])

答案 1 :(得分:0)

好吧,在Firebase中,您最多可以将30个事件标记为转化,仅此而已。如果您想查看每个事件的每个ID的特定数据,则必须进入BigQuery。一开始,BigQuery看起来似乎令人生畏,但它与具有一些甜美功能的任何其他数据库一样,即unnest(),可用于基于ID过滤事件。

默认情况下,Firebase每24小时将其数据导出到BigQuery一次,因此您的数据就在那里了,现在,要按照期望的方式解析数据是一个问题。幸运的是,您可以将此数据导出为JSON,XML或表格式,以便可以按需使用它,包括应用内。这是我用来在BigQuery中按ID解析和计数事件的示例。

您可以通过访问链接https://console.cloud.google.com/bigquery?project=来访问BigQuery,您可能需要在左上角选择项目。

#standardSQL
SELECT DISTINCT
  // UNNEST() allows you to get a specific value from your nested
  // parameters. In this case I'm getting value.int_value and value.string_value.
  (SELECT value.int_value FROM UNNEST(event_params)
    WHERE key = 'some_ID') AS ID,
  (SELECT value.string_value FROM UNNEST(event_params)
    WHERE key = 'some_title') AS Title, 
  COUNT(1) Count
  
// INFO: If you build a query your last line will have the date as
// .events_20201015 and it will only query for that day. Replace the 
// 20201015 with a " * " to filter on ALL events.
FROM `your_table_name.analytics_243434300.events_*` t

WHERE 
  event_name = 'your_event_name'
GROUP BY ID, Title

这将返回一个表或JSON,具体取决于您的偏好,该表或JSON包含每个唯一eventID的计数以及要标识该事件的数据。如果您决定采用仪表板路线并应用转化,那么更新将需要24小时,因此不要立即获得结果。