示意的导出管道

Data Warehouse Export Overview

示意的导出管道旨在将您的Mixpanel数据导出到支持的数据仓库或对象存储解决方案中。我们首先将MixPanel中的事件和用户配置文件转换为准备使用支持的数据仓库中转型规则. For object storage solutions, we only add the mapping of original property names to the column names to the bucket. For data warehouses, we add the schema and time-based partitions to the tables to make the queries easier to write and more efficient.

Mixpanel使您可以将Mixpanel数据导出到以下目的地:

该文档针对数据库中的或高级知识以及Amazon Web服务,Google Cloud Platform或Snowflake Technology的知识为目标。

每个管道都与特定的Mixpanel项目相关,而不是组织。因此,如果需要,您将需要为每个项目创建一个单独的管道。

Note

示意的导出管道可作为添加在用于增长和企业计划。此外,免费30 day trial希望尝试尝试此附加组件的客户使用。您可以创建一个试管管道,该管道将在30天的试用期结束时关闭。有关更多信息,请参见Trial Pipeline.

Mixpanel示意出口管道概述

您必须首先配置目标以接受数据,然后才能将数据从Mixpanel导出到该目的地。

For additional information on configuring the Mixpanel export for different destinations, see:

After configuring the destination, you can创建管道to export the data.

配置目标并使用API​​创建管道后,您可以开始从目标仓库或存储存储桶中查询MixPanel数据。这打开了Google BigQuery,Snowflake和Amazon Redshift Spectrum中使用SQL的使用。

Data Sources

MixPanel可以导出事件和用户数据。

使用示意图导出管道导出的事件数据与从该数据导出的数据相同Raw Data Export API.

The user data that is exported using the schematized export pipeline is the same data exported from theQuery API Engage Endpoint.

不支持使用示意图的导出管道出口队列。

Scheduling

Mixpanel每小时和每日出口。

为了确保为所有客户提供性能服务,管道的某些步骤一次仅限于每个项目运行的1个管道。例如,一个具有多个工作的项目将需要一个等待另一个项目才能完成某些步骤。这样,像一个客户的大回报一样,不优先考虑其他客户,并且使安排更公平。

此外,每24小时,客户仅限于1个基于日期范围的管道创建。基于日期范围的管道是一个具有从日期迄今为止过去俩都使用eventsas the data type.

Note

安排自动设置为日常的用于试管管道。

Backfilling Historical Data

您可以在创建管道时安排初始回填。这样可以确保还将历史数据导出到数据仓库。

Use the从日期参数以指定您要使用的日期来导出历史数据。

The completion time for a backfill depends on the number of days and the amount of data in the project. Larger backfills can take up to multiple weeks.

For trial pipelines, we apply a one day backfill which is not configurable.

用户数据支持

User data is exported to a single table namedmp_people_data(user data is accessible as a view ofmp_people_data在bigquery中)。

Since user profiles are mutable, the data in the table is replaced every time an export happens based on the schedule (daily or hourly) with the latest user profiles.

User Identity Resolution

从项目出口ID合并启用will need to use the identity mapping table to replicate the user counts seen in UI reporting. When ID merge is enabled, Mixpanel assigns multiple identifiers to an individual. Mixpanel resolves these into one identifier, and uses that for reporting unique user counts. Read more about how Mixpanel resolves IDs这里.

当Mixpanel摄入时,管道导出事件数据。这意味着在发送别名事件具有原始用户标识符之前,导出事件数据,not已解决的标识符。使用身份映射表准确计算唯一用户。这将使您可以重新创建Mixpanel创建的身份群集。

当您从启用ID合并的项目中创建人员导出管道时,MixPanel会自动导出ID映射表。

Please note that we export all identity mappings regardless of whether there is an ingested event with those mappings or not.

Note

When using the ID mappings table, you should use theresolved独特的_idin place of the non-resolved独特的_id每当在场。如果没有解决独特的_id, you can then use the独特的_idfrom the existing people or events table.

例子of how to do this are available forBigquerySnowflake.

服务水平协议

Mixpanel具有以下数据延迟政策:

  1. Mixpanel adds 24 hours of end to end latency from when the data is exported from Mixpanel until the data reaches the data warehouse.

  2. Mixpanel添加了额外的24小时数据,该数据延迟到达管道或Mixpanel服务器,摄入后延迟。MixPanel将较晚的数据定义为导出窗口结束后两个小时,该数据点或用户配置文件更新到达MixPanel服务器。

数据同步

Event data stored in Mixpanel’s datastore and event data in the data warehouse can fall out of sync.

差异可以归因于几个不同的原因:

  • 由于移动客户端处于离线状态,延迟数据可以在数天之后到达。
  • 导入API可以将数据添加到前几天。
  • 与GDPR相关的删除请求可能会导致事件和事件属性的删除。

Mixpanel能够使用一天的粒度检测数据中的任何更改,并用对象存储和数据仓库中的最新版本取代旧数据(如果适用)。

数据同步有助于保持数据新鲜,最大程度地减少丢失的数据点,最重要的是使您的数据仓库GDPR符合符合性。

We start checking for late arriving data 24 hours after the data for a day is exported. It may take more than 2 days for the data in the destination to be in sync with the data in Mixpanel.

Note

同步不可用于试管管道。

转型规则

Some characters are not legal for table or column names, or when collisions can occur in the dataset. Mixpanel cleans, or transforms, the data to account for this. This section provides the rules on how Mixpanel cleans data.

Table and Column Names

Mixpanel将这些规则应用于表和列名:

  • 特殊字符和空格被替换_(underscore).
  • 字母转换为小写。
  • Maximum name length is 128 characters (The name is truncated after 128 characters.)
  • 以一个开头的属性$(美元符号)有一个前缀MP_.
  • Properties that conflict with reserved keywords are prefixed withres_.

命名冲突

There are several naming transformations that happen as a result of character conflicts.

大写字母转换为较低的情况。任何重复的字符串都有一个数字值附加到它们的区分。

For example if values “XY” and “Xy” are sent in:

  • 两者都转变为“ XY”。
  • If “Xy” is sent in after "XY", it becomes “xy_1”.
  • Any subsequent “xy” values inherit incremental numeric values (i.e. xy_2, xy_3, etc.).

Type Conflicts

Mixpanel将值转换为解决类型冲突。

If a property value is passed with a particular data type and is passed subsequently with a different data type, then the new data type appends to the property name.

例如,如果首先出现“ X”,则将“ X”出现,然后随后以类型字符串(或VARCHAR)出现,则使用String的数据类型将属性名称转换为“ x_string”。

新属性

以前的导入中不存在的新属性将附加到旧行中无效的value.

属性映射

由于转换规则,有时很难知道原始事件和属性名称之间的映射。如果您将示意图的数据导出到对象存储中或导出到数据仓库,但提供您自己的中间对象存储,我们将这些映射导出到///schema/underevents.json,people.jsonidentities.json.

Schema

本节介绍了示意图的导出管道如何为导出数据创建模式。事件数据和用户数据将其加载到单独的表中。用户配置文件数据已加载到一个表中,而事件可以加载到每个事件的单个表中,也可以为所有事件加载一个表。

常见特性

关于您是使用单个表还是多个表的无关,以下属性将始终存在:架构中:

name

类型

description

时间

int

The timestamp representing when the event occurred.

独特的_id

string

The unique ID of the user who triggered the event.

对于单个表模式,您还将拥有事件名称的额外属性:

name

类型

description

MP_event_name

string

the name of the event

请注意,上表中的类型是通用的。根据您的导出目的地,确切类型可以不同。

使用一张表用于所有事件

在此模式中,您的所有混音台数据都存在于单个表中。MixPanel建议使用单个表格架构,因为它使查询更简单。

If you select the single table schema, the export pipeline creates aMP_master_eventtable. The table has one column per unique property name across all events in the history of the dataset.

假设您有一个活动采购量property and one with a推荐人属性,表将有一个采购量column and a推荐人柱子。没有属性的事件包含该列中的零值。

有关所有事件的一张表的示例,请参见One Table for All Events.

Using One Table for Each Event

每个混音台事件都存在于单个表中。对于S3表中允许的列数,该模式是有用的解决方法。

If you select the multi-table option, Mixpanel creates one table per unique event name. Each table is named for the event. For example, if you have an event called报名there will be a table named报名.

每个事件的每个表都在数据集历史记录中的所有事件中每个唯一属性名称都有一个列。

For an example of one table for each event, see每个事件的一张桌子.

在试用期间,每个事件的一张桌子都不可用。

表示例

Here is an example dataset to view different schema options in either one table for all events or one table for each event.

{“ event”:“注册”,“属性”:{“计划”:“免费”,“浏览器”:“ Chrome”,“ dimption_id”:1,“ time”:123}}} {“ event”:“购买”,“属性”:{“ product_id”:“ 123”,“浏览器”:“ chrome”,“ dimption_id”:1,“ time”:124}}} {“ event”:“ cignup”,“ properties”,“ properties”:{{“计划”:“付费”,“浏览器”:“ firefox”,“ ab_test”:1,“ dimption_id”:2,“时间”:125}

One Table for All Events

单表:mixpanel_events

MP_event_name

时间

独特的_id

计划

浏览器

product_id

ab_test

“注册”

123

1

“自由”

"chrome"

无效的

无效的

“Purchase”

124

1

无效的

"chrome"

123

无效的

“注册”

125

2

“有薪酬的”

“ Firefox”

无效的

1

每个事件的一张桌子

两个表:报名购买

Table:报名

时间

独特的_id

计划

浏览器

ab_test

123

1

“自由”

"chrome"

无效的

125

2

“有薪酬的”

“ Firefox”

1

Table:购买

时间

独特的_id

浏览器

product_id

124

1

"chrome"

123