

# 连接到 Mixpanel
<a name="connecting-to-mixpanel"></a>

Mixpanel 是一个强大的实时分析平台，可帮助公司衡量和优化用户参与度。Mixpanel 是一款用于跟踪客户行为的应用程序。此应用可跟踪用户如何与产品进行交互，并借助交互式报告分析这些数据，让您只需点击几下即可查询和可视化分析结果。若是 Mixpanel 用户，则可将 AWS Glue 连接到 Mixpanel 账户。然后，可以使用 Mixpanel 作为 ETL 作业中的数据来源。通过运行这些作业，可在 Mixpanel 与 AWS 服务或其他受支持的应用程序之间传输数据。

**Topics**
+ [AWS Glue 支持 Mixpanel](Mixpanel-support.md)
+ [包含创建和使用连接的 API 操作的策略](mixpanel-configuring-iam-permissions.md)
+ [配置 Mixpanel](mixpanel-configuring.md)
+ [配置 Mixpanel 连接](mixpanel-configuring-connections.md)
+ [从 Mixpanel 实体读取内容](mixpanel-reading-from-entities.md)
+ [Mixpanel 连接选项](mixpanel-connection-options.md)
+ [创建 Mixpanel 账户并配置客户端应用程序](mixpanel-create-account.md)
+ [限制](mixpanel-connector-limitations.md)

# AWS Glue 支持 Mixpanel
<a name="Mixpanel-support"></a>

AWS Glue 对 Mixpanel 的支持情况如下：

**是否支持作为来源？**  
是。可以使用 AWS Glue ETL 作业查询 Mixpanel 中的数据。

**是否支持作为目标？**  
否。

**支持的 Mixpanel API 版本**  
 2.0 

# 包含创建和使用连接的 API 操作的策略
<a name="mixpanel-configuring-iam-permissions"></a>

 以下示例策略描述了创建和使用连接所需的 AWS 权限。如果您要创建新角色，请创建包含以下内容的策略：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

如果不想使用前述方法，也可以使用以下托管 IAM 策略：
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)：授予对各种 AWS Glue 进程代表您运行所需的资源的访问权限。这些资源包括 AWS Glue、Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此策略中指定的资源的命名约定，则 AWS Glue 进程具有所需的权限。此策略通常附加到在定义爬网程序、作业和开发终端节点时指定的角色。
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)：当策略所附加到的身份使用 AWS 管理控制台时，授予对 AWS Glue 资源的完全访问权限。如果遵循此策略中指定的资源的命名约定，则用户具有完全控制台功能。此策略通常附加到 AWS Glue 控制台的用户。

# 配置 Mixpanel
<a name="mixpanel-configuring"></a>

必须满足以下要求，才能使用 AWS Glue 从 Mixpanel 传输数据：

## 最低要求
<a name="mixpanel-configuring-min-requirements"></a>
+  拥有一个 Mixpanel 账户。有关创建账户的更多信息，请参阅[创建 Mixpanel 账户](mixpanel-create-account.md)。
+  Mixpanel 账户已启用 API 访问权限。默认情况下，Enterprise、Unlimited、Developer 和 Performance 版已启用 API 访问权限。

如果满足这些要求，就可以将 AWS Glue 连接到 Mixpanel 账户。对于常见连接，无需在 Mixpanel 中执行其他操作。

# 配置 Mixpanel 连接
<a name="mixpanel-configuring-connections"></a>

Mixpanel 支持 `BasicAuth` 的用户名和密码。基本身份验证是一种简单的身份验证方法，客户端直接提供凭证即可访问受保护的资源。AWS Glue 能够使用用户名和密码对 Mixpanel API 进行身份验证。

有关 `BasicAuth` 流的 Mixpanel 公共文档，请参阅 [Mixpanel Service Accounts ](https://developer.mixpanel.com/reference/service-accounts)。

要配置 Mixpanel 连接，请执行以下操作：

1. 在 AWS Secrets Manager 中，创建一个包含以下详细信息的密钥：
   +  对于基本身份验证，密钥应包含关联应用程序的消费者密钥，且以 `USERNAME` 和 `PASSWORD` 为键。
**注意**  
必须在 AWS Glue 中为每个连接创建密钥。

1. 在 AWS Glue Studio 中，按照以下步骤在**数据连接**下创建连接：

   1. 选择**连接类型**时，请选择 **Mixpanel**。

   1. 提供想要连接到的 Mixpanel 的 `INSTANCE_URL`。

   1. 选择 AWS Glue 可以代入并有权执行以下操作的 IAM 角色：

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  在 AWS Glue 中选择您要用于此连接的 `secretName`，然后放置令牌。

   1.  如果要使用网络，请选择**网络选项**。

1.  向与您的 AWS Glue 作业关联的 IAM 角色授予读取 `secretName` 的权限。

# 从 Mixpanel 实体读取内容
<a name="mixpanel-reading-from-entities"></a>

 **先决条件** 

必须拥有一个要从中读取数据的 Mixpanel 对象，例如 `Funnels`、`Retention` 或 `Retention Funnels`。此外，还需要知道对象名称。

 **支持的实体** 


| 实体 | 可以筛选 | 支持限制 | 支持排序依据 | 支持 Select \$1 | 支持分区 | 
| --- | --- | --- | --- | --- | --- | 
| 漏斗 | 是 | 否 | 否 | 是 | 否 | 
| 保留 | 是 | 否 | 否 | 是 | 否 | 
| 客户细分 | 是 | 否 | 否 | 是 | 否 | 
| 分段总和 | 是 | 否 | 否 | 是 | 否 | 
| 分段平均值 | 是 | 否 | 否 | 是 | 否 | 
| 队列 | 是 | 否 | 否 | 是 | 否 | 
| 互动 | 否 | 是 | 否 | 是 | 否 | 
| Events | 是 | 否 | 否 | 是 | 否 | 
| 顶级事件 | 是 | 否 | 否 | 是 | 否 | 
| 事件名称 | 是 | 否 | 否 | 是 | 否 | 
| 事件属性 | 是 | 否 | 否 | 是 | 否 | 
| 顶级事件属性 | 是 | 否 | 否 | 是 | 否 | 
| 事件属性值 | 是 | 否 | 否 | 是 | 否 | 
| Annotations | 是 | 否 | 否 | 是 | 否 | 
| 配置文件事件活动 | 是 | 否 | 否 | 是 | 否 | 

 **示例** 

```
mixpanel_read = glueContext.create_dynamic_frame.from_options(
    connection_type="mixpanel",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/cohorts/list?project_id=2603353",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://www.mixpanel.com/api/app/me"
    }
```

 **Mixpanel 实体和字段详细信息** 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/mixpanel-reading-from-entities.html)

# Mixpanel 连接选项
<a name="mixpanel-connection-options"></a>

以下是 Mixpanel 的连接选项：
+  `ENTITY_NAME`（字符串）：（必填）用于读取/写入。Mixpanel 中对象的名称。
+  `API_VERSION`（字符串）：（必填）用于读取/写入。要使用的 Mixpanel Rest API 版本。例如：V2.0。
+  `SELECTED_FIELDS`（列表<字符串>）– 默认：empty(SELECT \$1)。用于读取。您想要为对象选择的列。
+  `FILTER_PREDICATE`（字符串）– 默认：空。用于读取。应采用 Spark SQL 格式。
+  `QUERY`（字符串）– 默认：空。用于读取。完整的 Spark SQL 查询。

# 创建 Mixpanel 账户并配置客户端应用程序
<a name="mixpanel-create-account"></a>

**创建 MixPanel 账户**

1. 导航到 [Mixpanel 主页/](https://mixpanel.com/)。

1. 在 **Mixpanel** 主页上，选择页面右上角的**注册**。

1. 在**我们开始吧**页面上，完成以下操作：
   + 在指定字段中输入电子邮件地址。
   + 选中所需的复选框来同意条款。
   + 选择**开始使用**来继续操作。

     成功完成以上操作后，即会收到一封验证电子邮件。

1. 确认电子邮件收件箱中有验证消息，打开电子邮件，然后按照说明验证电子邮件地址。

1. 在验证页面上，选择**验证电子邮件**来完成电子邮件验证。

1. 在**为组织命名**页面上输入组织名称，然后选择**下一步**。

1. 在**第一个项目**页面上输入项目详细信息，然后选择**创建**。

1. 在下一页上，选择**我们开始吧**来完成账户的创建。

**登录 Mixpanel 账户**

1. 导航到 [Mixpanel 登录页面/](https://mixpanel.com/login/)。

1. 输入电子邮件地址，然后选择**继续**。

1. 确认电子邮件收件箱中有验证消息，打开电子邮件，然后按照说明验证电子邮件地址。

1. 在下一页上，点击**登录**按钮来登录账户。

**购买 Mixpanel 方案**

1. 在 Mixpanel 页面上，选择页面右上角的**设置**图标。

1. 从选项列表中选择**方案详情和账单**。

1. 在**方案详情和账单**页面上，选择**升级或修改**。

1. 在下一页中，选择要购买的方案。

   账户创建和方案购买流程到此完成。

**创建用户名和客户端密钥（用于注册应用程序）**

1. 在 Mixpanel 页面上，选择页面右上角的**设置**图标。

1. 从选项列表中选择**项目设置**。

1. 在**项目设置**页面上选择**服务账户**，然后选择**添加服务账户**。

1. 从**服务账户**下拉列表中选择**服务账户或输入要创建的名称**，添加**项目角色**，指定**过期时间**，然后选择**添加**。
**重要**  
完成上一步后，下一页会显示服务账户的密钥。务必保存好服务账户的密钥。因为此后无法再次访问此页面。

# 限制
<a name="mixpanel-connector-limitations"></a>

以下是 Mixpanel 连接器的限制：
+ 对于 `Segmentation Numeric` 实体，如果未找到必要筛选条件的数字数据，Mixpanel API 会引发 `400 (Bad Request)` 错误。我们将其视作防止流失败的 `OK` 响应。
+ 出于以下原因，已从支持的实体中删除了可查询字段 `limit`：
  + 由于被解释为 SDK 的限制功能而导致错误
  + 筛选条件没有实际用途
  + 限制功能实现现已涵盖了等效功能
+ 由于 SaaS 平台缺少分区所需的运算符（`>=`、`<=`、`<`、`>`、`between`），因此无法支持基于字段的分区。尽管其支持 `between` 运算符，但支持该运算符的字段是不可检索的。因此，不符合基于字段的分区标准。
+  由于未要求为支持分页的实体提供“偏移量”值，因此无法支持 Mixpanel 基于记录的分区。
+ `Cohorts` 实体仅支持 `CreatedDate/Time` 字段，没有字段可识别 `UpdatedDate/Time`，因此无法识别结果 `DML_Status`。此外，没有端点可以识别已删除的记录。因此，无法支持 CDC。
+  要为下面提到的实体运行 AWS Glue 作业，需要使用必要筛选条件。有关实体名称及其所需的筛选条件，请参阅下表。  
**实体名称和所需的筛选条件**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/mixpanel-connector-limitations.html)