API aracılığıyla Genlik verilerini alma

Giriş

Amplitude, kolay olay kurulumu ve görselleştirme esnekliği nedeniyle bir ürün analitiği aracı olarak kendisini çok iyi kanıtlamıştır. Çoğu zaman kendi ilişkilendirme modelinizi, kullanıcı kümenizi kurmanız veya başka bir BI sisteminde bir kontrol paneli oluşturmanız gerekir. Böyle bir sahtekarlığın gerçekleştirilmesi ancak Amplitude'dan alınan ham olay verileriyle mümkündür. Bu makale size minimum programlama bilgisiyle bu verileri nasıl elde edebileceğinizi anlatacaktır.

Önkoşullar

  1. Olayların zaten doğru şekilde yapılandırıldığı ve bunlarla ilgili istatistiklerin toplandığı Amplitude'daki bir proje
  2. Potansiyel okuyucunun en azından temel düzeyde zaten çalışabileceği Python yüklü (3.8.3 sürümünde çalışıyorum)

Talimat

1. Adım. API anahtarını ve gizli anahtarı edinme

Veri yüklemek için öncelikle bir API anahtarı ve gizli anahtar almanız gerekir.

Bunları aşağıdaki yolu takip ederek bulabilirsiniz:

  1. “Verileri yönet” (ekranın sol alt kısmında bulunur)
  2. Verilerin indirileceği istenen projeyi seçin ve ona gidin
  3. Açılan proje menüsünde “Proje ayarları” seçeneğini seçin
  4. API anahtarını ve gizli anahtar dizilerini buluyoruz, kopyalayıp güvenli bir yere kaydediyoruz.

Tıklamadan genel olarak şuna benzeyen bağlantıyı takip edebilirsiniz:
analitik.amplitude.com/$$$$$$$/manage/project/******/settings,
burada $$$$$$ kuruluşunuzun genlik giriş bilgileridir, ****** proje numarasıdır

Adım 2: Gerekli kitaplıkların varlığının kontrol edilmesi

İyi haber şu ki, bu kitaplıkları zaten varsayılan olarak yüklemiş veya indirmiş durumdasınız, ancak kontrol etmeniz gerekiyor. Yazma sırasında kullandığım kütüphanelerin tam listesi (uygun yerlerde parantez içindeki sürümler belirtilmiştir):

  1. istekler (2.10.0) - veri almak için API aracılığıyla istek gönderme
  2. pandalar (1.0.1) - json okuma, veri çerçevesi oluşturma ve ardından bir dosyaya yazma
  3. zip dosyası - API aracılığıyla alınan arşivden dosyaları çıkarın
  4. gzip - json dosyalarını .gz'den açma
  5. os - paketlenmemiş bir arşivden dosyaların listesini alma
  6. time - isteğe bağlı, betiğin çalışma süresini ölçün
  7. tqdm - isteğe bağlı, dosya işleme ilerlemesinin kolay izlenmesi için

3. Adım. Veri yükleme komut dosyası yazma

İpucu: İndirme scriptinin tamamı yazının sonundadır; dilerseniz hemen alıp, gerekirse adım adım açıklamalara başvurabilirsiniz.

Adım 3.1. Kitaplıkları içe aktarma

İkinci adımda listelenen tüm kütüphaneleri içe aktarıyoruz.

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

Adım 3.2. Amplitude'a istek gönderme

Betik yürütmenin başlangıcını tespit edelim ve bunu a değişkenine yazalım.

başlangıç ​​tarihi ve bitiş tarihi, verilerin indirilme döneminden sorumludur ve Amplitude sunucusuna gönderilen isteğin metnine yerleştirilmiştir; tarihe ek olarak, istekte 'T'den sonraki değeri değiştirerek saati de belirtebilirsiniz.

api_key ve secret_key ilk adımda elde edilen değerlere karşılık gelir; güvenlik nedeniyle burada kendi dizilerim yerine rastgele diziler belirtiyorum.

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

Adım 3.3. Veri içeren bir arşivin indirilmesi

Arşiv için bir isim buluyoruz ve bunu dosya adı değişkenine yazıyoruz. Kolaylık olması açısından, periyodu belirtiyorum + bunun genlik verisi olduğunu belirtiyorum. Daha sonra Amplitude'dan alınan yanıtı arşive kaydediyoruz.

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

Adım 3.4. Dosyaları bilgisayarınızdaki bir klasörden alma

Zipfile kütüphanesi, dosyaların çıkarılmasına yardımcı olmak için devreye giriyor. Üçüncü satırda dikkatli olun ve çıkarmanızın daha uygun olduğu yolunuzu yazın.

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

Adım 3.5. json dönüşümü

Dosyaları arşivden çıkardıktan sonra json dosyalarını .gz formatında dönüştürüp daha ileri çalışmalar için bir dataframe'e yazmanız gerekiyor.

Lütfen burada yolu tekrar kendinize göre değiştirmeniz gerektiğini ve 000000 yerine proje numaranızı Amplitude'dan yazmanız gerektiğini unutmayın (veya arşivin çıkarıldığı yolu manuel olarak açın ve içindeki klasörün adına bakın).

Sırayla:

Bir değişkene bir dizin yazmak, bir dizindeki dosyaların listesini almak, boş bir veri çerçevesi oluşturmak, tqdm'nin doğru çalışması için time.sleep(1) , döngü içinde .gz dosyalarını açarız ve hemen pandaları kullanarak json'u okuyup doldururuz verilen veri çerçevesi.

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

Adım 3.6. Excel'de veri çerçevesi yazma

Excel'e yükleme burada sadece bir örnektir. Çoğu durumda, ortaya çıkan veri çerçevesiyle python içinde çalışmak veya verileri depoya koymak daha uygundur.

Ayrıca buradaki veri yükleme yolunu kendi yolunuzla değiştirmeniz gerekecektir.

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

Adım 3.7. Komut dosyasının çalışma süresini sayıyoruz

Geçerli saatin b değişkenine kaydedilmesi, farkın ve dakika sayısının hesaplanması, toplam dakikanın görüntülenmesi. Bu son adımdır.

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

Sonuç

Verilerin yazıldığı amplitude_dataframe değişkenini çağırarak tabloyu çağırabilir ve onunla çalışmaya başlayabilirsiniz. Yaklaşık 50 sütun içerecektir ve bunların %80'inde şunları kullanacaksınız: event_type - etkinlik adı, event_properties - etkinlik parametreleri, event_time - olay zamanı, uuid - istemci kimliği, user_properties - istemci parametreleri, önce onlarla çalışmaya başlamalısınız . Kendi hesaplamalarınızdaki rakamları Amplitude gösterge tablolarındaki göstergelerle karşılaştırırken, sistemin benzersiz istemcileri/hunileri vb. hesaplamak için kendi metodolojisini kullandığını unutmamalısınız ve bunu yapmadan önce mutlaka Amplitude belgelerini okumalısınız.

İlginiz için teşekkür ederiz! Artık ham olay verilerini Amplitude'a yükleyebilir ve bunları çalışmanızda tam olarak kullanabilirsiniz.

Senaryonun tamamı:

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

Kaynak: habr.com

Yorum ekle