使用 AWS Amplify 和 Pinpoint 进行分析

Analytics with AWS Amplify and Pinpoint

目前正在通过 AWS Amplify 和 Pinpoint 实施网络和移动分析。

我注意到 JS 的 Amplify 文档的分析部分与 iOS 和 Android 的相关部分不同,特别是在事件对象可以包括。

JS 文档指定了 attributes 属性,而 iOS 和 Android 版本都指定了 properties。请参阅以下片段:

JavaScript

Analytics.record({
    name: 'albumVisit', 
    // Attribute values must be strings
    attributes: { genre: '', artist: '' }
});

iOS

func recordEvents() {
    let properties: AnalyticsProperties = [
        "eventPropertyStringKey": "eventPropertyStringValue",
        "eventPropertyIntKey": 123,
        "eventPropertyDoubleKey": 12.34,
        "eventPropertyBoolKey": true
    ]
    let event = BasicAnalyticsEvent(name: "eventName", properties: properties)
    Amplify.Analytics.record(event: event)
}

Android

val event = AnalyticsEvent.builder()
    .name("PasswordReset")
    .addProperty("Channel", "SMS")
    .addProperty("Successful", true)
    .addProperty("ProcessDuration", 792)
    .addProperty("UserAge", 120.3)
    .build()

Amplify.Analytics.recordEvent(event)

attributesproperties 可以互换吗?我将使用 Amazon QuickSight 构建分析仪表板,最终收集的事件数据将在 S3 上结束,并使用 Athena 进行查询。我需要在 Athena 中为 table 定义一个模式,并且我不确定,基于以上内容,我可以期望数据 attributes/properties 的格式是什么。亚马逊似乎打算让 attributesproperties 包含相同类型的事件相关信息。但是我很困惑为什么平台之间的命名约定不同。

如果其他人注意到他们的文档中缺少关于此的解释...任何通过移动 SDK 添加的 property 将出现在记录事件负载的 attributes 对象中.

在 iOS 和 Android 上,Amplify Analytics 的字符串和布尔值 属性 映射到 Pinpoint attributes. Double & Integer properties are mapped to Pinpoint metrics

或者,表示为table:

Amplify property type (in) Pinpoint type (out)
String Attribute
Boolean Attribute
Integer Metric
Double Metric

(参考Amplify的Android code, iOS code。)