Mengambil data Amplitudo melalui API

pengenalan

Amplitude telah membuktikan dirinya dengan baik sebagai alat analisis produk karena pengaturan acara yang mudah dan fleksibilitas visualisasinya. Dan sering kali ada kebutuhan untuk menyiapkan model atribusi Anda sendiri, mengelompokkan pengguna, atau membuat dasbor di sistem BI lain. Penipuan seperti itu hanya dapat dilakukan dengan data peristiwa mentah dari Amplitude. Artikel ini akan memberi tahu Anda cara mendapatkan data ini dengan pengetahuan pemrograman minimal.

Prasyarat

  1. Sebuah proyek di Amplitudo di mana peristiwa telah dikonfigurasi dengan benar dan statistik dikumpulkan mengenai peristiwa tersebut
  2. Python telah diinstal (saya sedang mengerjakan versi 3.8.3), yang mana calon pembaca sudah dapat menggunakannya setidaknya pada tingkat dasar

Pengajaran

Langkah 1. Mendapatkan kunci API dan kunci rahasia

Untuk mengunggah data, Anda harus mendapatkan kunci API dan kunci rahasia terlebih dahulu.

Anda dapat menemukannya dengan mengikuti jalur berikut:

  1. “Kelola data” (terletak di kiri bawah layar)
  2. Pilih proyek yang diinginkan dari mana data akan diunduh dan buka
  3. Di menu proyek yang terbuka, pilih “Pengaturan proyek”
  4. Kami menemukan string kunci API dan kunci rahasia, menyalin dan menyimpannya di tempat yang aman.

Tanpa mengklik, Anda dapat mengikuti link tersebut, yang secara umum terlihat seperti ini:
analitik.amplitude.com/$$$$$$$/manage/project/******/settings,
di mana $$$$$$ adalah login amplitudo organisasi Anda, ****** adalah nomor proyek

Langkah 2: Memeriksa keberadaan perpustakaan yang diperlukan

Kabar baiknya adalah Anda hampir pasti sudah menginstal atau mengunduh perpustakaan ini secara default, tetapi Anda perlu memeriksanya. Daftar lengkap perpustakaan yang saya gunakan pada saat penulisan ini (versi dalam tanda kurung ditunjukkan jika perlu):

  1. permintaan (2.10.0) - mengirim permintaan melalui api untuk menerima data
  2. pandas (1.0.1) - membaca json, membuat kerangka data dan kemudian menulis ke file
  3. zipfile - mengekstrak file dari arsip yang diterima melalui API
  4. gzip - membongkar file json dari .gz
  5. os - mendapatkan daftar file dari arsip yang belum dibongkar
  6. waktu - opsional, ukur waktu berjalan skrip
  7. tqdm - opsional, untuk memudahkan pemantauan kemajuan pemrosesan file

Langkah 3. Menulis skrip pemuatan data

Petunjuk: script download selengkapnya ada di akhir artikel, jika berkenan bisa langsung mengambilnya dan simak penjelasan langkah demi langkahnya jika perlu.

Langkah 3.1. Mengimpor perpustakaan

Kami mengimpor semua perpustakaan yang terdaftar di 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. Mengirimkan permintaan ke Amplitudo

Mari kita deteksi awal eksekusi skrip dan tuliskan ke variabel a.

tanggal mulai dan tanggal akhir bertanggung jawab atas periode pengunduhan data dan dimasukkan ke dalam teks permintaan yang dikirim ke server Amplitudo; selain tanggal, Anda juga dapat menentukan jam dengan mengubah nilai setelah 'T' dalam permintaan.

api_key dan secret_key sesuai dengan nilai yang diperoleh pada langkah pertama, untuk alasan keamanan, saya menentukan urutan acak di sini, bukan 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. Mengunduh arsip dengan data

Kami memberikan nama untuk arsip dan menuliskannya ke variabel nama file. Demi kenyamanan saya, saya menunjukkan periode + menunjukkan bahwa ini adalah data amplitudo. Selanjutnya, kami mencatat respon yang diterima dari Amplitude ke dalam arsip.

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

Langkah 3.4. Mengambil file dari folder di komputer Anda

Perpustakaan zipfile berperan untuk membantu mengekstrak file. Di baris ketiga, berhati-hatilah dan tuliskan jalur Anda di tempat yang lebih nyaman bagi Anda untuk mengekstraknya.

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

Langkah 3.5. konversi json

Setelah mengekstrak file dari arsip, Anda perlu mengonversi file json dalam format .gz dan menuliskannya ke dalam kerangka data untuk pekerjaan lebih lanjut.

Harap dicatat bahwa di sini Anda perlu mengubah jalur lagi ke jalur Anda sendiri, dan alih-alih 000000 tulis nomor proyek Anda dari Amplitude (atau buka secara manual jalur tempat arsip diekstraksi dan lihat nama folder di dalamnya).

Dalam urutan:

Menulis direktori ke variabel, mendapatkan daftar file dari direktori, membuat kerangka data kosong, time.sleep(1) agar tqdm berfungsi dengan benar, di dalam loop kita membuka file .gz dan segera menggunakan pandas 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 di excel

Pengunggahan ke excel hanyalah contoh di sini. Dalam banyak kasus, akan lebih mudah untuk bekerja dengan bingkai data yang dihasilkan di dalam python atau menyimpan data di penyimpanan.

Anda juga harus mengganti jalur pengunggahan data di sini dengan jalur Anda sendiri.

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

Langkah 3.7. Kami menghitung waktu berjalannya skrip

Mencatat waktu saat ini pada variabel b, menghitung selisih dan jumlah menit, menampilkan total menit. Ini adalah langkah terakhir.

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

Kesimpulan

Anda dapat memanggil tabel dan mulai mengerjakannya dengan memanggil variabel amplitude_dataframe tempat data ditulis. Ini akan memiliki sekitar 50 kolom, yang dalam 80% kasus Anda akan menggunakan: event_type - nama acara, event_properties - parameter acara, event_time - waktu acara, uuid - id klien, user_properties - parameter klien, Anda harus mulai bekerja dengannya terlebih dahulu . Dan ketika membandingkan angka dari penghitungan Anda sendiri dengan indikator dari dasbor Amplitudo, Anda tidak boleh lupa bahwa sistem menggunakan metodologinya sendiri untuk menghitung klien/corong unik, dll., dan sebelum melakukan ini, Anda harus membaca dokumentasi Amplitudo.

Terima kasih atas perhatian Anda! Sekarang Anda dapat mengunggah data peristiwa mentah ke Amplitude dan menggunakannya sepenuhnya dalam pekerjaan Anda.

Seluruh 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 komentar