API orqali amplituda ma'lumotlarini olish

kirish

Amplitude hodisalarni oson sozlash va vizualizatsiya moslashuvchanligi tufayli mahsulotni tahlil qilish vositasi sifatida o'zini juda yaxshi isbotladi. Va ko'pincha o'zingizning atribut modelingizni, klaster foydalanuvchilarini o'rnatish yoki boshqa BI tizimida asboblar panelini yaratish kerak bo'ladi. Bunday firibgarlikni faqat Amplitude-dan olingan xom ashyo ma'lumotlari bilan amalga oshirish mumkin. Ushbu maqola sizga ushbu ma'lumotni minimal dasturlash bilimi bilan qanday olish kerakligini aytib beradi.

Old shartlar

  1. Hodisalar allaqachon to'g'ri sozlangan va ular bo'yicha statistik ma'lumotlar to'plangan Amplitude loyihasi
  2. Python o'rnatildi (men 3.8.3 versiyasida ishlayapman), potentsial o'quvchi u bilan kamida asosiy darajada ishlashi mumkin

ko'rsatma

1-qadam. API-kalit va maxfiy kalitni olish

Ma'lumotlarni yuklash uchun avval API kaliti va maxfiy kalitni olishingiz kerak.

Siz ularni quyidagi yo'l orqali topishingiz mumkin:

  1. "Ma'lumotlarni boshqarish" (ekranning pastki chap qismida joylashgan)
  2. Ma'lumotlar yuklab olinadigan kerakli loyihani tanlang va unga o'ting
  3. Ochilgan loyiha menyusida "Loyiha sozlamalari" ni tanlang.
  4. Biz API-kalit va maxfiy kalit satrlarini topamiz, ularni xavfsiz joyda nusxalaymiz va saqlaymiz.

Bosmasdan, siz havolaga o'tishingiz mumkin, bu umuman quyidagicha ko'rinadi:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
bu erda $$$$$$ - tashkilotingiz amplitudali login, ****** - loyiha raqami

2-qadam: Kerakli kutubxonalar mavjudligini tekshirish

Yaxshi xabar shundaki, sizda bu kutubxonalar allaqachon sukut bo'yicha o'rnatilgan yoki yuklab olingan, ammo tekshirishingiz kerak. Yozish paytida men foydalangan kutubxonalarning to'liq ro'yxati (tegishli hollarda qavs ichidagi versiyalar ko'rsatilgan):

  1. so'rovlar (2.10.0) - ma'lumotlarni qabul qilish uchun api orqali so'rov yuborish
  2. pandas (1.0.1) - json o'qish, dataframe yaratish va keyin faylga yozish
  3. zipfile - API orqali olingan arxivdan fayllarni chiqarib olish
  4. gzip - json fayllarini .gz dan ochish
  5. os - ochilmagan arxivdan fayllar ro'yxatini olish
  6. vaqt - ixtiyoriy, skriptning ishlash vaqtini o'lchash
  7. tqdm - ixtiyoriy, fayllarni qayta ishlash jarayonini oson kuzatish uchun

Qadam 3. Ma'lumotlarni yuklash skriptini yozish

Maslahat: to'liq yuklab olish skripti maqolaning oxirida, agar xohlasangiz, uni darhol olishingiz va kerak bo'lganda bosqichma-bosqich tushuntirishlarga murojaat qilishingiz mumkin.

3.1-qadam. Kutubxonalarni import qilish

Biz ikkinchi bosqichda keltirilgan barcha kutubxonalarni import qilamiz.

# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm

3.2-qadam. Amplitude-ga so'rov yuborish

Skriptni bajarish boshlanishini aniqlaymiz va uni a o'zgaruvchisiga yozamiz.

Boshlanish sanasi va tugash sanasi ma'lumotlarni yuklab olish muddati uchun javobgardir va Amplitude serveriga yuborilgan so'rov matniga kiritilgan; sanadan tashqari, so'rovdagi "T" dan keyin qiymatni o'zgartirish orqali soatni ham belgilashingiz mumkin.

api_key va secret_key birinchi bosqichda olingan qiymatlarga mos keladi; xavfsizlik nuqtai nazaridan men bu erda o'zimning o'rniga tasodifiy ketma-ketliklarni ko'rsataman.

a = time.time()
# Параметры начальной и конечной даты
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Отправление запроса в Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос отправлен')

3.3-qadam. Ma'lumotlar bilan arxiv yuklab olinmoqda

Biz arxiv uchun nom topamiz va uni fayl nomi o'zgaruvchisiga yozamiz. Menga qulaylik uchun men davrni ko'rsataman + bu amplituda ma'lumotlari ekanligini ko'rsataman. Keyinchalik, Amplitude-dan olingan javobni arxivga yozamiz.

# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
    code.write(response.content)
print('2. Архив с файлами успешно скачан')  

3.4-qadam. Kompyuteringizdagi papkadan fayllarni olish

Zipfile kutubxonasi fayllarni ajratib olishga yordam beradi. Uchinchi qatorda ehtiyot bo'ling va siz uchun qulayroq bo'lgan yo'lingizni yozing.

# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)

3.5-qadam. json konvertatsiyasi

Fayllarni arxivdan chiqarib olgandan so'ng, json fayllarini .gz formatiga o'tkazishingiz va keyingi ishlash uchun ularni dataframega yozishingiz kerak.

E'tibor bering, bu erda siz yo'lni yana o'zingizga o'zgartirishingiz kerak va 000000 o'rniga Amplitude'dan loyiha raqamingizni yozing (yoki arxiv chiqarilgan yo'lni qo'lda oching va ichidagi papka nomiga qarang).

Tartibda; ... uchun:

O'zgaruvchiga katalog yozish, katalogdan fayllar ro'yxatini olish, bo'sh dataframe yaratish, tqdm to'g'ri ishlashi uchun time.sleep(1), sikl ichida biz .gz fayllarni ochamiz va jsonni o'qish va to'ldirish uchun darhol pandalardan foydalanamiz. berilgan dataframe.

# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'
# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)    
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
0000' files = os.listdir(directory) amplitude_dataframe = pd.DataFrame() print('Прогресс обработки файлов:') time.sleep(1) for i in tqdm(files): with gzip.open(directory + '\' + i) as f: add = pd.read_json(f, lines = 'True') amplitude_dataframe = pd.concat([amplitude_dataframe, add]) time.sleep(1) print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')

3.6-qadam. Excelda dataframe yozish

Excelga yuklash bu erda faqat bir misol. Ko'pgina hollarda, python ichida olingan ma'lumotlar ramkasi bilan ishlash yoki ma'lumotlarni saqlashga qo'yish qulayroqdir.

Bundan tashqari, bu erda ma'lumotlarni yuklash yo'lini o'zingiz bilan almashtirishingiz kerak bo'ladi.

# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)

3.7-qadam. Biz skriptning ishlash vaqtini hisoblaymiz

b o'zgaruvchisiga joriy vaqtni yozish, farqni va daqiqalar sonini hisoblash, jami daqiqalarni ko'rsatish. Bu oxirgi qadam.

b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))

xulosa

Siz jadvalga qo'ng'iroq qilishingiz va ma'lumotlar yozilgan amplitude_dataframe o'zgaruvchisini chaqirish orqali u bilan ishlashni boshlashingiz mumkin. Unda 50 ga yaqin ustun bo'ladi, ulardan 80% hollarda siz foydalanasiz: voqea_turi - hodisa nomi, voqea_xususiyatlari - voqea parametrlari, voqea_vaqti - voqea vaqti, uuid - mijoz identifikatori, user_properties - mijoz parametrlari, avval ular bilan ishlashni boshlashingiz kerak. . O'zingizning hisob-kitoblaringizdagi raqamlarni Amplitude asboblar panelidagi ko'rsatkichlar bilan solishtirganda, tizim noyob mijozlarni / hunilarni va boshqalarni hisoblash uchun o'zining metodologiyasidan foydalanishini unutmasligingiz kerak va buni amalga oshirishdan oldin, albatta, Amplituda hujjatlarini o'qib chiqishingiz kerak.

E'tiboringiz uchun rahmat! Endi siz xom ashyo ma'lumotlarini Amplitude-ga yuklashingiz va undan ishingizda to'liq foydalanishingiz mumkin.

To'liq skript:

# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
a = time.time()
# Параметры начальной и конечной даты
startdate = '20200627'
enddate = '20200628'

api_key = 'd988fddd7cfc0a8a'
secret_key = 'da05cf1aeb3a361a61'
# Отправление запроса в Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос отправлен')

# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
    code.write(response.content)
print('2. Архив с файлами успешно скачан')  

# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)

# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'
# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
a = time.time()
# Параметры начальной и конечной даты
startdate = '20200627'
enddate = '20200628'
api_key = 'd988fddd7cfc0a8a'
secret_key = 'da05cf1aeb3a361a61'
# Отправление запроса в Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос отправлен')
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')  
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)    
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))
0000' files = os.listdir(directory) amplitude_dataframe = pd.DataFrame() print('Прогресс обработки файлов:') time.sleep(1) for i in tqdm(files): with gzip.open(directory + '\' + i) as f: add = pd.read_json(f, lines = 'True') amplitude_dataframe = pd.concat([amplitude_dataframe, add]) time.sleep(1) print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe') # Записать полученной таблицы в Excel-файл amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False) print('5. Dataframe успешно записан в файл ' + filename) b = time.time() diff = b-a minutes = diff//60 print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))

Manba: www.habr.com

a Izoh qo'shish