Mendapatkan semula data Amplitud melalui API

Pengenalan

Amplitud telah membuktikan dirinya dengan baik sebagai alat analitik produk kerana persediaan acara yang mudah dan fleksibiliti visualisasi. Dan selalunya terdapat keperluan untuk menyediakan model atribusi anda sendiri, pengguna kluster atau membina papan pemuka dalam sistem BI yang lain. Penipuan sedemikian hanya boleh dilakukan dengan data peristiwa mentah daripada Amplitud. Artikel ini akan memberitahu anda cara mendapatkan data ini dengan pengetahuan pengaturcaraan yang minimum.

Prasyarat

  1. Projek dalam Amplitud di mana peristiwa telah dikonfigurasikan dengan betul dan statistik dikumpulkan padanya
  2. Python dipasang (saya bekerja dalam versi 3.8.3), yang mana pembaca berpotensi sudah boleh bekerja dengan sekurang-kurangnya pada tahap asas

Arahan

Langkah 1. Mendapatkan kunci API dan kunci rahsia

Untuk memuat naik data, anda perlu mendapatkan kunci API dan kunci rahsia terlebih dahulu.

Anda boleh mencarinya dengan mengikuti laluan berikut:

  1. "Urus data" (terletak di bahagian bawah sebelah kiri skrin)
  2. Pilih projek yang dikehendaki dari mana data akan dimuat turun dan pergi ke sana
  3. Dalam menu projek yang terbuka, pilih "Tetapan projek"
  4. Kami mencari rentetan kunci API dan kunci rahsia, salin dan simpannya di tempat yang selamat.

Tanpa mengklik, anda boleh mengikuti pautan, yang secara umum kelihatan seperti ini:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
dengan $$$$$$ ialah log masuk amplitud organisasi anda, ****** ialah nombor projek

Langkah 2: Menyemak kehadiran perpustakaan yang diperlukan

Berita baiknya ialah anda hampir pasti sudah memasang perpustakaan ini secara lalai atau dimuat turun, tetapi anda perlu menyemak. Senarai lengkap perpustakaan yang saya gunakan semasa penulisan (versi dalam kurungan ditunjukkan di mana sesuai):

  1. permintaan (2.10.0) - menghantar permintaan melalui api untuk menerima data
  2. panda (1.0.1) - membaca json, mencipta kerangka data dan kemudian menulis ke fail
  3. zipfile - ekstrak fail daripada arkib yang diterima melalui API
  4. gzip - membongkar fail json daripada .gz
  5. os - mendapatkan senarai fail daripada arkib yang tidak dibungkus
  6. masa - pilihan, ukur masa berjalan skrip
  7. tqdm - pilihan, untuk memudahkan pemantauan kemajuan pemprosesan fail

Langkah 3. Menulis skrip pemuatan data

Petunjuk: skrip muat turun penuh ada di penghujung artikel; jika anda mahu, anda boleh segera mengambilnya dan merujuk kepada penjelasan langkah demi langkah jika perlu.

Langkah 3.1. Mengimport perpustakaan

Kami mengimport semua perpustakaan yang disenaraikan dalam langkah kedua.

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

Langkah 3.2. Mengemukakan permintaan kepada Amplitud

Mari kita mengesan permulaan pelaksanaan skrip dan menulisnya kepada pembolehubah a.

tarikh mula dan tarikh tamat bertanggungjawab untuk tempoh memuat turun data dan dibina ke dalam teks permintaan yang dihantar ke pelayan Amplitud; sebagai tambahan kepada tarikh, anda juga boleh menentukan jam dengan menukar nilai selepas 'T' dalam permintaan.

api_key dan secret_key sepadan dengan nilai yang diperoleh dalam langkah pertama; atas sebab keselamatan, saya menyatakan urutan rawak di sini dan bukannya urutan saya sendiri.

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. Запрос отправлен')

Langkah 3.3. Memuat turun arkib dengan data

Kami menghasilkan nama untuk arkib dan menulisnya ke pembolehubah nama fail. Untuk kemudahan saya, saya menunjukkan tempoh + menunjukkan bahawa ini adalah data amplitud. Seterusnya, kami merekodkan respons yang diterima daripada Amplitud ke dalam arkib.

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

Langkah 3.4. Mendapatkan semula fail daripada folder pada komputer anda

Pustaka fail zip memainkan peranan untuk membantu mengekstrak fail. Dalam baris ketiga, berhati-hati dan tuliskan laluan anda di tempat yang lebih mudah untuk anda ekstrak.

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

Langkah 3.5. penukaran json

Selepas mengekstrak fail daripada arkib, anda perlu menukar fail json dalam format .gz dan menulisnya ke dalam bingkai data untuk kerja selanjutnya.

Sila ambil perhatian bahawa di sini anda perlu menukar laluan semula kepada anda sendiri, dan bukannya 000000 tulis nombor projek anda dari Amplitud (atau buka laluan secara manual di mana arkib diekstrak dan lihat nama folder di dalamnya).

mengikut urutan:

Menulis direktori kepada pembolehubah, mendapatkan senarai fail daripada direktori, mencipta kerangka data kosong, time.sleep(1) untuk tqdm berfungsi dengan betul, di dalam gelung kami membuka fail .gz dan segera menggunakan panda untuk membaca json dan mengisi kerangka data yang diberikan.

# Преобразование 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')

Langkah 3.6. Menulis kerangka data dalam excel

Muat naik ke excel hanyalah contoh di sini. Dalam kebanyakan kes, adalah lebih mudah untuk bekerja dengan bingkai data yang terhasil di dalam python atau meletakkan data dalam storan.

Anda juga perlu menggantikan laluan muat naik data di sini dengan laluan anda sendiri.

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

Langkah 3.7. Kami mengira masa berjalan skrip

Merekod masa semasa dalam pembolehubah b, mengira perbezaan dan bilangan minit, memaparkan jumlah minit. Ini adalah langkah terakhir.

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

Kesimpulan

Anda boleh memanggil jadual dan mula bekerja dengannya dengan memanggil pembolehubah amplitude_dataframe tempat data ditulis. Ia akan mempunyai kira-kira 50 lajur, yang mana dalam 80% kes anda akan gunakan: event_type - event name, event_properties - event parameters, event_time - event time, uuid - client id, user_properties - client parameters, anda harus mula bekerja dengan mereka terlebih dahulu . Dan apabila membandingkan angka daripada pengiraan anda sendiri dengan penunjuk daripada papan pemuka Amplitud, anda tidak boleh lupa bahawa sistem menggunakan metodologinya sendiri untuk mengira pelanggan/corong unik, dsb., dan sebelum melakukan ini, anda pasti perlu membaca dokumentasi Amplitud.

Terima kasih kerana memberi perhatian! Kini anda boleh memuat naik data peristiwa mentah ke Amplitud dan menggunakannya sepenuhnya dalam kerja anda.

Keseluruhan skrip:

# Импорт библиотек
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))

Sumber: www.habr.com

Tambah komen