Обзор
Экспорт необработанных данных Unity Analytics предоставляет вам полный доступ к необработанным данным о событиях. Это позволяет использовать данные любым удобным для вас способом, например, для создания пользовательских запросов или визуализации данных.
Есть два способа доступа к экспорту необработанных данных:
- Unity AnalyticsПлатформа данных, предоставляющая аналитику для вашей игры Unity. Подробнее
См. в Словарь панели управления - Вызывая REST API
Экспорт необработанных данных предоставляет данные за период с июня 2016 года.
Пользовательский интерфейс панели Analytics
Панель мониторинга Unity Analytics позволяет экспортировать необработанные данные о событиях и получать к ним доступ без написания кода. На панели инструментов Unity Analytics (analytics.cloud.unity3d.com) выберите свой проект и перейдите к АналитикаСокращение от Unity Analytics
См. в разделе Словарь > Экспорт необработанных данных.
Затем выполните следующие действия в разделе Экспорт этого экрана:
- Укажите набор данных, который вы хотите экспортировать (например, appRunning, appStart, custom, deviceInfo или transaction).
- Укажите Дату начала или продолжите экспорт данных из предыдущего задания, выбрав Идентификатор предыдущего задания в раскрывающемся списке.
- Укажите дату окончания.
- По умолчанию используется формат файла JSON. Укажите предпочтительный формат файла, нажав и выбрав элемент в раскрывающемся меню в разделе Экспортировать как JSON.
Экспорт необработанных данных автоматически создает задание и отображает его в таблице Активность на экране.
После завершения работы вы можете загрузить свои данные, выбрав файлы в столбце Загрузить.
API REST (Representational State Transfer)
Каждая точка данных, отправляемая в Unity Analytics, сохраняется в хранилище данных Unity. API-интерфейсы экспорта необработанных данных позволяют загружать необработанные данные событий в файлы по мере их получения и сохранения.
Требования
Для каждого запроса требуется базовая аутентификация HTTP с использованием вашего идентификатора проекта Unity (UPID) и ключа API.
Ограничения
- Период запроса (от
startDate
доendDate
) ограничен 31 днем. - Ограничения на использование могут быть изменены.
- Unity Analytics хранит файлы необработанных данных, созданные для запроса, в течение 14 дней. (Чтобы получить доступ к данным по истечении 14 дней, отправьте новый запрос.)
Рабочий процесс пользователя
Чтобы экспортировать необработанные данные, вызовите Create Raw Data Export API. Этот запрос запускает асинхронное задание для обработки данных. Время, которое это займет, зависит от объема экспортируемых данных.
Чтобы получить текущий статус или результат, проведите опрос с помощью Get Raw Data Export API. После завершения экспорта вы можете получить результат в ответе этого API. Результат содержит список файлов и соответствующие URL-адреса загрузки. Вы можете просмотреть URL-адреса и загрузить экспортированные данные.
Примечания:
- Все даты и время в запросах и ответах указаны в часовом поясе UTC.
- Запросы или ответы API используют формат JSON (который в этом документе отформатирован для удобочитаемости). Формат файла данных настраивается.
- Данные экспортируются в сжатые файлы .gzip.
- Основой URL для API является https://analytics.cloud.unity3d.com.
Создать экспорт необработанных данных
Экспорт необработанных данных относится к проекту и к отдельному набору данных (типу события). Период запроса ограничен 31 днем.
Используйте следующий метод HTTP для создания экспорта необработанных данных:
POST api/v2/projects/{UNITY_PROJECT_ID}/rawdataexports
Аргументы предоставляются в полезной нагрузке запроса и в формате JSON с приложением Content-Type/json.
Аргумент запроса | Обязательный или необязательный | Тип | Описание |
---|---|---|---|
startDate | Требуется, если не указано continueFrom | string | Дата начала (включительно) экспорта. Дата указывается в формате ГГГГ-ММ-ДД (ISO-8601). |
endDate | Обязательный | String | Конечные данные (эксклюзивные) экспорта. Дата указывается в формате ГГГГ-ММ-ДД (ISO 8601). Это дата закрытия запроса. При поиске текущего дня используйте дату следующего дня. |
format | Обязательный | String | Формат выходных данных: json (json с разделителями строк) или tsv. |
dataset | Обязательный | String | Один из следующих типов событий: appStart, appRunning, deviceInfo, custom или transaction. |
continueFrom | Необязательный | String | Идентификатор экспорта необработанных данных, из которого следует продолжить экспорт данных. Это используется для продолжения предыдущего экспорта с момента его завершения. См. Продолжение для получения дополнительной информации. Вместо указания startDate в continueFrom можно указать предыдущий идентификатор экспорта необработанных данных. Будет ошибкой указывать и continueFrom, и startDate. |
Шаблон для запроса с использованием cURL в командной строке:
curl --user {UNITY_PROJECT_ID}:{API_KEY} --request POST --header "Content-Type: application/json" --data {REQUEST_JSON}
https://analytics.cloud.unity3d.com/api/v2/projects/{UNITY_PROJECT_ID}/rawdataexports
Example values:
UNITY_PROJECT_ID = aa43ae0a-a7a7-4016-ae96-e253bb126aa8
API_KEY = 166291ff148b2878375a8e54aebb1549
REQUEST_JSON = { "startDate": "2016-05-15" , "endDate": "2016-05-16", "format": "tsv", "dataset": "appStart" }
Фактический запрос с использованием примеров значений:
curl --user aa43ae0a-a7a7-4016-ae96-e253bb126aa8:166291ff148b2878375a8e54aebb1549 --request POST --header "Content-Type: application/json" --data '{ "startDate": "2016-05-15" , "endDate": "2016-05-16", "format": "tsv", "dataset": "appStart" }' https://analytics.cloud.unity3d.com/api/v2/projects/aa43ae0a-a7a7-4016-ae96-e253bb126aa8/rawdataexports
В ответе используются общие атрибуты ответа экспорта необработанных данных в формате JSON.
Атрибуты ответа на экспорт необработанных данных
Атрибут ответа | Тип | Описание |
---|---|---|
id | String | Идентификатор экспорта необработанных данных. |
upid | String | Идентификатор проекта Unity. |
createdAt | String | Созданное время в формате ISO 8601. |
status | string | Текущий статус экспорта. Возможные значения: выполняется, завершено или не выполнено. |
duration | Long | Время, которое потребовалось для экспорта данных (в миллисекундах). |
request | Json | Аргументы запроса. |
result | Json | Результат содержит атрибуты, детализирующие экспортированные данные. Результат доступен только после успешного завершения экспорта. Ниже приведены атрибуты результата. |
result.size | Long | Общий размер экспортируемых данных (в байтах). |
result.eventCount | Long | Общее количество экспортированных событий. |
result.intraDay | Boolean | Если запрос включает текущий день, он может не содержать всех данных за этот день. Этот атрибут имеет значение TRUE, если данные за последний день неполные. |
result.fileList | Json | Список файлов, содержащих экспортируемые данные. Список файлов пуст, когда нет данных. |
result.fileList.name | String | Имя файла. |
result.fileList.url | String | The download URL for the file. The files are compressed in gzip format. |
result.fileList.size | Long | Размер файла в байтах. |
result.fileList.date | String | Файл содержит события для этой конкретной даты. Эта дата основана на времени отправки события. На одну и ту же дату может быть несколько файлов. Дата в формате ISO 8601. |
Пример ответа:
{
"id":"8228d1e9-31b3-4a5e-aabe-55d9c8afa052",
"upid":"beff3f49-b9ed-41a4-91ea-677e9b85e71e",
"createdAt":"2016-05-10T10:10:10.100+0000",
"status":"running",
"duration" : 0,
"request":{
"startDate":"2016-05-01",
"endDate":"2016-05-02",
"format":"json",
"dataset":"appRunning"
}
}
Продолжить создание из предыдущего экспорта необработанных данных
При периодическом экспорте необработанных данных необходимо указать аргумент continueFrom вместо startDate, чтобы убедиться, что вы продолжаете с предыдущего экспорта необработанных данных. Идентификаторы предыдущего экспорта необработанных данных можно получить с помощью GET API или получить к ним доступ через панель управления.
Получить экспорт необработанных данных
Используйте следующий HTTP-метод, чтобы получить определенный статус экспорта необработанных данных или текущего экспорта:
GET api/v2/projects/{UNITY_PROJECT_ID}/rawdataexports/{raw_data_export_id}
Все обязательные аргументы являются частью пути URL.
Пример запроса:
curl --user {UNITY_PROJECT_ID}:${API_KEY} https://analytics.cloud.unity3d.com/api/v2/projects/{UNITY_PROJECT_ID}/rawdataexports/${ID}
Ответ представляет собой экспорт необработанных данных в формате JSON. Он аналогичен ответу в разделе «Создать экспорт необработанных данных».
Пример ответа:
{
"id":"6601f70e-6a0b-48ed-909f-26711af82b49",
"status":"completed",
"createdAt":"2016-05-21T04:41:54.000+0000",
"duration":8631714000,
"request":{
"startDate":"2016-02-11T00:00:00.000+0000",
"endDate":"2016-03-11T00:00:00.000+0000",
"format":"tsv",
"dataset":"custom"
},
"result":{
"size":78355,
"eventCount":17473,
"fileList":[
{
"name":"headers.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b49/headers.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=PnzIeeI%2FNxSOlKkLVpLcfK%2FxVpU%3D",
"size":105
},
{
"name":"part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b49/part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=xZk3%2BzQNTQ6yjK2Mh%2FaH338ABn8%3D",
"size":78250,
"date":"2016-02-13T00:00:00.000+0000"
}
],
"intraDay":false
}
}
Список всех экспортируемых необработанных данных
Используйте этот HTTP-метод, чтобы получить список всех экспортов необработанных данных для определенного проекта:
ПОЛУЧИТЬ api/v2/projects/{UNITY_PROJECT_ID}/rawdataexports
Все обязательные аргументы являются частью пути URL.
Пример запроса:
curl --user {UNITY_PROJECT_ID}:${API_KEY} https://analytics.cloud.unity3d.com/api/v2/projects/${UNITY_PROJECT_ID}/rawdataexports/
Ответ представляет собой список экспортируемых необработанных данных в формате JSON. См. Атрибуты ответа на экспорт необработанных данных для определения каждого элемента списка экспорта.
Пример ответа:
[
{
"id":"6601f70e-6a0b-48ed-909f-26711af82b49",
"status":"completed",
"createdAt":"2016-05-21T04:41:54.000+0000",
"duration":8631714000,
"request":{
"startDate":"2016-02-11T00:00:00.000+0000",
"endDate":"2016-03-11T00:00:00.000+0000",
"format":"tsv",
"dataset":"custom"
},
"result":{
"size":78355,
"eventCount":17473,
"fileList":[
{
"name":"headers.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b49/headers.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=PnzIeeI%2FNxSOlKkLVpLcfK%2FxVpU%3D",
"size":105
},
{
"name":"part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b49/part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=xZk3%2BzQNTQ6yjK2Mh%2FaH338ABn8%3D",
"size":78250,
"date":"2016-02-13T00:00:00.000+0000"
}
],
"intraDay":false
}
},
{
"id":"6601f70e-6a0b-48ed-909f-26711af82b48",
"status":"completed",
"createdAt":"2016-05-21T04:41:54.000+0000",
"duration":8631714000,
"request":{
"startDate":"2016-02-11T00:00:00.000+0000",
"endDate":"2016-03-11T00:00:00.000+0000",
"format":"tsv",
"dataset":"custom"
},
"result":{
"size":78355,
"eventCount":17473,
"fileList":[
{
"name":"headers.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b48/headers.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=PnzIeeI%2FNxSOlKkLVpLcfK%2FxVpU%3D",
"size":105
},
{
"name":"part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz",
"url":"https://uca-export.s3.amazonaws.com/staging/devTest/custom/appid%3DUNITY_PROJECT_ID/jid%3D6601f70e-6a0b-48ed-909f-26711af82b48/part-4b0cf376-3478-4bc8-845e-f73aff5c0be4.gz?AWSAccessKeyId=AKIAJUXGNF66F4XPWSWA&Expires=1463872651&Signature=xZk3%2BzQNTQ6yjK2Mh%2FaH338ABn8%3D",
"size":78250,
"date":"2016-02-13T00:00:00.000+0000"
}
],
"intraDay":false
}
}
]
Формат TSV
Если вы выбрали экспорт в формате TSV, заголовки предоставляются в отдельном файле в headers.gz. Файлы данных не содержат заголовков.
Пример файла заголовков:
ts appid type userid sessionid platform sdk_ver debug_device user_agent submit_time name custom_params
Набор данных
Каждый из шести типов данных (типов событий) отличается. См. ниже определения их схем.
Примечания:
-
ts
— это отметка времени, когда событие было сгенерировано на устройстве. Обратите внимание, что временные метки, генерируемые устройством, могут быть искажены из-за часов устройства и задержки при получении события. -
submit_time
– это отметка времени, когда событие было получено Unity Analytics. - Если поле в записи не содержит данных, для значения этого поля устанавливается значение по умолчанию для типа данных поля (
0
для чисел,""
для строк иfalse
для логических значений). Вложенные поля, такие как поле IAPTransactionEvent.receipt
, в экспорте в формате JSON являются исключением из этой политики. При экспорте вложенных полей в формате JSON любые поля, не содержащие данных, не включаются в объект JSON для этой записи.
Событие AppStart
{
"namespace":"com.unity.analytics.commons.schema",
"name":"AppStartEvent",
"type":"record",
"fields":[
{"name": "ts", "type": "long", "default": 0},
{"name": "appid", "type": "string", "default": ""},
{"name": "type", "type": "string", "default": ""},
{"name": "userid", "type": "string", "default": ""},
{"name": "sessionid", "type": "string", "default": ""},
{"name": "platform", "type": "string", "default": ""},
{"name": "sdk_ver", "type": "string", "default": ""},
{"name": "debug_device", "type": "boolean", "default": false},
{"name": "user_agent", "type": "string", "default": ""},
{"name": "submit_time", "type": "long", "default": 0}
]
}
Событие AppRunning
{
"namespace":"com.unity.analytics.commons.schema",
"name":"AppRunningEvent",
"type":"record",
"fields":[
{"name": "ts", "type": "long", "default": 0},
{"name": "appid", "type": "string", "default": ""},
{"name": "type", "type": "string", "default": ""},
{"name": "userid", "type": "string", "default": ""},
{"name": "sessionid", "type": "string", "default": ""},
{"name": "platform", "type": "string", "default": ""},
{"name": "sdk_ver", "type": "string", "default": ""},
{"name": "debug_device", "type": "boolean", "default": false},
{"name": "user_agent", "type": "string", "default": ""},
{"name": "submit_time", "type": "long", "default": 0},
{"name": "duration", "type": "int", "default": 0}
]
}
Пользовательское событие
{
"namespace":"com.unity.analytics.commons.schema",
"name":"CustomEvent",
"type":"record",
"fields":[
{"name": "ts", "type": "long", "default": 0},
{"name": "appid", "type": "string", "default": ""},
{"name": "type", "type": "string", "default": ""},
{"name": "userid", "type": "string", "default": ""},
{"name": "sessionid", "type": "string", "default": ""},
{"name": "platform", "type": "string", "default": ""},
{"name": "sdk_ver", "type": "string", "default": ""},
{"name": "debug_device", "type": "boolean", "default": false},
{"name": "user_agent", "type": "string", "default": ""},
{"name": "submit_time", "type": "long", "default": 0},
{"name": "name", "type": "string", "default": ""},
{
"name":"custom_params",
"type":["null",{
"type":"map",
"values": ["string","null"],
"default": ""
}],
"default": null
}
]
}
Событие DeviceInfo
{
"namespace":"com.unity.analytics.commons.schema",
"name":"DeviceInfoEvent",
"type":"record",
"fields":[
{"name": "ts", "type": "long", "default": 0},
{"name": "appid", "type": "string", "default": ""},
{"name": "type", "type": "string", "default": ""},
{"name": "userid", "type": "string", "default": ""},
{"name": "sessionid", "type": "string", "default": ""},
{"name": "platform", "type": "string", "default": ""},
{"name": "sdk_ver", "type": "string", "default": ""},
{"name": "debug_device", "type": "boolean", "default": false},
{"name": "user_agent", "type": "string", "default": ""},
{"name": "submit_time", "type": "long", "default": 0},
{"name": "debug_build", "type": "boolean", "default": false},
{"name": "rooted_jailbroken", "type": "boolean", "default": false},
{"name": "processor_type", "type": "string", "default": ""},
{"name": "system_memory_size", "type": "string", "default": ""},
{"name": "make", "type": "string", "default": ""},
{"name": "app_ver", "type": "string", "default": ""},
{"name": "license_type", "type": "string", "default": ""},
{"name": "app_install_mode", "type": "string", "default": ""},
{"name": "model", "type": "string", "default": ""},
{"name": "engine_ver", "type": "string", "default": ""},
{"name": "os_ver", "type": "string", "default": ""},
{"name": "app_name", "type": "string", "default": ""},
{"name": "timezone", "type": "string", "default": ""},
{"name": "ads_tracking", "type": "boolean", "default": false}
]
}
Событие транзакции
{
"namespace":"com.unity.analytics.commons.schema",
"name":"TransactionEvent",
"type":"record",
"fields":[
{"name": "ts", "type": "long", "default": 0},
{"name": "appid", "type": "string", "default": ""},
{"name": "type", "type": "string", "default": ""},
{"name": "userid", "type": "string", "default": ""},
{"name": "sessionid", "type": "string", "default": ""},
{"name": "platform", "type": "string", "default": ""},
{"name": "sdk_ver", "type": "string", "default": ""},
{"name": "debug_device", "type": "boolean", "default": false},
{"name": "user_agent", "type": "string", "default": ""},
{"name": "submit_time", "type": "long", "default": 0}, {
"name":"receipt",
"type":["null",{
"type":"record",
"name": "receiptRecord",
"fields":[
{"name": "data", "type": "string", "default": ""},
{"name": "signature", "type": "string", "default": ""}
]
}],
"default": null
},
{"name": "currency", "type": "string", "default": "USD"},
{"name": "amount", "type": "float", "default": 0},
{"name": "transactionid", "type": "long", "default": 0},
{"name": "productid", "type": "string", "default": ""}
]
}
Поле данных | Определение | Набор данных |
---|---|---|
ts | Отметка времени (в миллисекундах), когда событие было создано на устройстве. Обратите внимание, что временные метки, сгенерированные устройством, могут быть искажены из-за часов устройства и задержки при получении события. | All datasets |
appid | Идентификатор, который назначается каждому приложению на панели инструментов Unity Analytics. | All datasets |
type | Тип запрашиваемого события (например, Custom, DeviceInfo, Transaction и т. д.) | All datasets |
userid | Идентификатор, сгенерированный Unity Analytics для идентификатора пользователя | All datasets |
sessionid | Unity Analytics сгенерировал идентификатор сеанса. Если игра повторно открывается после более чем 30 минут бездействия, создается новый идентификатор сеанса. | All datasets |
remote_ip | IP-адрес, с которого был воспроизведен сеанс. Обратите внимание, что это поле было удалено и больше недоступно. | Not used |
platform | Платформа, на которой игралась сессия | All datasets |
sdk_ver | Версия Unity Analytics SDK, используемая для этого события. Если sdk_ver начинается с «u», значит, это движок, созданный инструментом Analytics. В противном случае это из плагина Analytics для версий Unity старше 5.2. | All datasets |
debug_device | Логическое значение, показывающее, было ли событие отправлено из разрабатываемой сборкиРазрабатываемая сборка включает символы отладки и включает профилировщик. Подробнее См. в Словарь. Установите значение TRUE для событий, поступающих из редактора Unity. |
All datasets |
user_agent | Поле заголовка запроса User-Agent | All datasets |
submit_time | Отметка времени (в миллисекундах), когда событие было получено Unity Analytics. | All datasets |
duration | Длительность (количество секунд), в течение которой выполнялся этот сеанс, рассчитанная SDK. | AppRunning |
name | Название пользовательского события (например, «LevelComplete») | Custom |
custom_params | Список параметров Custom Event и соответствующие им значения. | Custom |
receipt | Включает данные, возвращаемые магазинами приложений платформы, такими как App Store и Google Play. | Transaction |
currency | Код валюты платежа (например, USD, EUR, CAD и т. д.) в коде ISO 4217. | Transaction |
amount | Общая десятичная сумма потраченной валюты | Transaction |
transactionid | Уникальный идентификатор этой транзакции, заданный SDK. Каждой транзакции присваивается уникальный идентификатор, не путать с идентификатором транзакции магазина. | Transaction |
productid | Идентификатор продукта для покупки в приложении для конкретного магазина (например, com.mygame.100coins). | Transaction |
debug_build | Логическое значение, показывающее, было ли событие отправлено из разрабатываемой сборки. Установите значение TRUE для событий, поступающих из редактора Unity. | DeviceInfo |
rooted_jailbroken | Логическое значение, установленное в TRUE в случае рутированного / взломанного телефона, не отправляется для обычного телефона. | DeviceInfo |
processor_type | Тип процессора устройства | DeviceInfo |
system_memory_size | Системная память устройства | DeviceInfo |
make | Производитель устройства (например, «OSXEditor») | DeviceInfo |
app_ver | Версия приложения (например, «1.0») | DeviceInfo |
deviceid | Уникальный идентификатор устройства. Обратите внимание, что это поле было удалено и больше недоступно. | Not used |
license_type | Тип лицензии (например, «advanced_pro») | DeviceInfo |
app_install_mode | Сообщает, установлено ли приложение через магазин приложений («магазин»), ad hoc («ad hoc»), установку разработчика («выпуск dev»), симулятор («симулятор») или предприятие («предприятие»). | DeviceInfo |
model | Модель устройства (например, «MacBookPro11,3») | DeviceInfo |
engine_ver | Версия движка Unity (например, «5.5.0a3») | DeviceInfo |
os_ver | OS Version (eg. “Mac OS X 10.11.5”) | DeviceInfo |
app_name | Идентификатор пакета или имя пакета (например, «com.Company.ProductName») | DeviceInfo |
timezone | ISO code (eg. “GMT–7”) | DeviceInfo |
ads_tracking | Логическое значение, указывающее, ограничил ли пользователь отслеживание рекламы. | DeviceInfo |
adsid | Рекламный идентификатор. На iOSмобильной операционной системе Apple. Подробнее См. в Словарь, собранном при включении Unity Ads. На андроиде постоянно. Обратите внимание, что это поле было удалено и больше недоступно.. |
Not used |
- 2018–08–01 — удалено поле remote_ip. Он больше не доступен.
- 2018–06–28 – удалено событие UserInfo.
- 2018–06–04 – удален идентификатор устройства и идентификатор объявления из события DeviceInfo. Устаревшее событие UserInfo.
- 2017–06–21 — Включение пустых вложенных полей в экспорт JSON изменено в Unity 2017.1