Я собираюсь перейти к следующему плану в Mixpanel, поскольку у меня слишком много людей, и я хотел бы сначала удалить некоторых старых пользователей.
Есть ли простой способ / скрипт / api для массового удаления старых пользователей?
Я собираюсь перейти к следующему плану в Mixpanel, поскольку у меня слишком много людей, и я хотел бы сначала удалить некоторых старых пользователей.
Есть ли простой способ / скрипт / api для массового удаления старых пользователей?
Я написал два сценария, которые могут пригодиться; mixpanel-entertainment-query и mixpanel-Engagement-post.
Используя первый скрипт (запрос), вы можете запросить данные о людях и получить список профилей, например все пользователи, у которых для $ last_seen установлена дата старше X месяцев.
Используя второй сценарий (сообщение), вы можете выполнять действия с этими профилями в пакетном режиме, например, удалять их. Смотрите в README пример того, как выполнить пакетное удаление а>.
Да, есть. Просматривая спецификацию HTTP, вы обнаружите следующее.
$ удалить
string Безвозвратно удалить профиль из Mixpanel вместе со всеми его свойствами. Значение игнорируется - профиль определяется по идентификатору $ independent_id из самого запроса.
// This removes the user 13793 from Mixpanel
{
"$token": "36ada5b10da39a1347559321baf13063",
"$distinct_id": "13793",
"$delete": ""
}
Пакетные запросы
И конечная точка событий в http://api.mixpanel.com/track/, и конечная точка обновления профиля на http://api.mixpanel.com/engage/ принимайте пакетные обновления. Чтобы отправить пакет сообщений в конечную точку, вы должны использовать POST вместо запроса GET. Вместо отправки одного объекта JSON в качестве параметра запроса данных отправьте список объектов JSON в кодировке base64 в качестве параметра данных тела запроса POST application / x-www-form-urlencoded.
// Here's a list of events
[
{
"event": "Signed Up",
"properties": {
"distinct_id": "13793",
"token": "e3bc4100330c35722740fb8c6f5abddc",
"Referred By": "Friend",
"time": 1371002000
}
},
{
"event": "Uploaded Photo",
"properties": {
"distinct_id": "13793",
"token": "e3bc4100330c35722740fb8c6f5abddc",
"Topic": "Vacation",
"time": 1371002104
}
}
]
В кодировке Base64 список становится следующим:
Ww0KICAgIHsNCiAgICAgICAgImV2ZW50IjogIlNpZ25lZCBVcCIsDQogICAgICAgICJwcm9wZXJ0aWVzIjogew0KICAgICAgICAgICAgImRpc3RpbmN0X2lkIjogIjEzNzkzIiwNCiAgICAgICAgICAgICJ0b2tlbiI6ICJlM2JjNDEwMDMzMGMzNTcyMjc0MGZiOGM2ZjVhYmRkYyIsDQogICAgICAgICAgICAiUmVmZXJyZWQgQnkiOiAiRnJpZW5kIiwNCiAgICAgICAgICAgICJ0aW1lIjogMTM3MTAwMjAwMA0KICAgICAgICB9DQogICAgfSwNCiAgICB7DQogICAgICAgICAiZXZlbnQiOiAiVXBsb2FkZWQgUGhvdG8iLA0KICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KICAgICAgICAgICAgICAiZGlzdGluY3RfaWQiOiAiMTM3OTMiLA0KICAgICAgICAgICAgICAidG9rZW4iOiAiZTNiYzQxMDAzMzBjMzU3MjI3NDBmYjhjNmY1YWJkZGMiLA0KICAgICAgICAgICAgICAiVG9waWMiOiAiVmFjYXRpb24iLA0KICAgICAgICAgICAgICAidGltZSI6IDEzNzEwMDIxMDQNCiAgICAgICAgICB9DQogICAgfQ0KXQ==
Итак, тело запроса POST для отправки событий в виде пакета:
data=Ww0KICAgIHsNCiAgICAgICAgImV2ZW50IjogIlNpZ25lZCBVcCIsDQogICAgICAgICJwcm9wZXJ0aWVzIjogew0KICAgICAgICAgICAgImRpc3RpbmN0X2lkIjogIjEzNzkzIiwNCiAgICAgICAgICAgICJ0b2tlbiI6ICJlM2JjNDEwMDMzMGMzNTcyMjc0MGZiOGM2ZjVhYmRkYyIsDQogICAgICAgICAgICAiUmVmZXJyZWQgQnkiOiAiRnJpZW5kIiwNCiAgICAgICAgICAgICJ0aW1lIjogMTM3MTAwMjAwMA0KICAgICAgICB9DQogICAgfSwNCiAgICB7DQogICAgICAgICAiZXZlbnQiOiAiVXBsb2FkZWQgUGhvdG8iLA0KICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KICAgICAgICAgICAgICAiZGlzdGluY3RfaWQiOiAiMTM3OTMiLA0KICAgICAgICAgICAgICAidG9rZW4iOiAiZTNiYzQxMDAzMzBjMzU3MjI3NDBmYjhjNmY1YWJkZGMiLA0KICAgICAgICAgICAgICAiVG9waWMiOiAiVmFjYXRpb24iLA0KICAgICAgICAgICAgICAidGltZSI6IDEzNzEwMDIxMDQNCiAgICAgICAgICB9DQogICAgfQ0KXQ==
Обе конечные точки будут принимать до 50 сообщений в одном пакете. Обычно пакетные запросы будут иметь свойство «время», связанное с событиями, или атрибут «$ time», связанный с обновлениями профиля.
Использование модуля Python Mixpanel-api
pip install mixpanel-api
Этот скрипт удалит любой профиль, который не просматривался с 1 января 2019 года:
from mixpanel_api import Mixpanel
mixpanel = Mixpanel('MIXPANEL_SECRET', token='MIXPANEL_TOKEN')
deleted_count = mixpanel.people_delete(query_params={ 'selector' : 'user["$last_seen"]<"2019-01-01T00:00:00"'})
print(deleted_count)
Замените MIXPANEL_SECRET и MIXPANEL_TOKEN собственными токенами проекта.
Установите Mixpanel Python API (Нажмите здесь)
pip install mixpanel-api
Создайте файл python: delete_people.py, скопируйте и вставьте код ниже и внесите изменения в соответствии с конфигурацией вашего проекта, то есть секретом, токеном, параметрами фильтра и т. Д.
from mixpanel_api import Mixpanel
from datetime import datetime
now = datetime.now()
current_time = now.strftime("%Y_%m_%d_%H_%M_%S")
if __name__ == '__main__':
#Mixpanel Project :
credentials = {
'API_secret': '<Your API Secret>',
'token': '<Your API Token>',
}
# first we are going to make a Mixpanel object instance
mlive = Mixpanel(credentials['API_secret'])
# Mixpanel object with token to delete people
ilive = Mixpanel(credentials['API_secret'],credentials['token'])
#Prepare parameters for delete condition
#<filter_by_cohort_here> - Get from mixpanel explore UI, from engage api xhr call (https://mixpanel.com/api/2.0/engage)
parameters = {'filter_by_cohort':'<filter_by_cohort_here>','include_all_users':'true','limit':0}
# Backup data before deleting
print("\n Creating backup of data\n")
mlive.export_people('backup_people_'+current_time+'.json', parameters)
# Delete people using parameters filter
print("\n Backup Completed! Deleting Data\n")
ilive.people_delete(query_params=parameters)
print("\n Data Deleted Successfully\n")
Запустите команду ниже с терминала
python delete_people.py
Примечание: метод people_delete API mixpanel автоматически создаст файл backup_timestamp.json в том же каталоге, в котором вы поместили этот скрипт