【问题标题】:How can I filter Firebase events based on parameters?如何根据参数过滤 Firebase 事件?
【发布时间】:2021-01-29 01:07:10
【问题描述】:

在我的 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”按钮:

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

【问题讨论】:

  • 您是否尝试使用查询?如果这就是您的意思,我可以为 BigQuery 提供一个示例,以获取您正在寻找的结果。
  • @xTwisteDx 我试图在我的分析仪表板中查看某种报告。现在我看到的只是“1500 个事件 X”,而实际上它是特定 ID 上的几十个事件。我正在更新问题以使其更清楚

标签: swift firebase google-analytics swiftui


【解决方案1】:

好的,在 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,其中包含每个唯一 eventID 的计数以及您要识别该事件的数据。如果您决定采用仪表板路线并应用转化,则需要 24 小时才能更新,因此不要立即期待结果。

【讨论】:

    【解决方案2】:

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

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

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

    因此,您应该使用此代码进行自定义值的屏幕跟踪:

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

    过滤自定义值在我的仪表板中效果很好。

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

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

    【讨论】:

    • 感谢您的回答,但我使用“open_screen”作为随机示例,它实际上是更复杂的事件。我会更新我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多