API vasitəsilə Amplitude datasının alınması

Giriş

Amplitude, hadisənin asan qurulması və vizuallaşdırma çevikliyi sayəsində məhsul analitika vasitəsi kimi özünü çox yaxşı sübut etdi. Və tez-tez öz atribusiya modelinizi, klaster istifadəçilərinizi qurmağa və ya başqa BI sistemində tablosunu qurmağa ehtiyac var. Yalnız Amplitude-dən xam hadisə məlumatları ilə belə bir saxtakarlıq etmək mümkündür. Bu məqalə sizə bu məlumatları minimal proqramlaşdırma biliyi ilə necə əldə edəcəyinizi izah edəcək.

İlkin şərtlər

  1. Hadisələrin artıq düzgün konfiqurasiya edildiyi və onlar haqqında statistik məlumatların toplandığı Amplitude layihəsi
  2. Potensial oxucunun ən azı əsas səviyyədə işləyə biləcəyi Python quraşdırılıb (mən 3.8.3 versiyasında işləyirəm).

Təlim

Addım 1. API açarının və gizli açarın əldə edilməsi

Məlumatları yükləmək üçün əvvəlcə API açarı və gizli açar əldə etməlisiniz.

Onları aşağıdakı yolu izləməklə tapa bilərsiniz:

  1. "Məlumatları idarə et" (ekranın aşağı solunda yerləşir)
  2. Məlumatların yüklənəcəyi istədiyiniz layihəni seçin və ona keçin
  3. Açılan layihə menyusunda “Layihə parametrləri”ni seçin.
  4. API açarı və gizli açar sətirlərini tapırıq, onları təhlükəsiz yerdə kopyalayırıq və saxlayırıq.

Klikləmədən, ümumiyyətlə bu kimi görünən linki izləyə bilərsiniz:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
burada $$$$$$ təşkilatınızın amplituda girişidir, ****** layihə nömrəsidir

Addım 2: Tələb olunan kitabxanaların mövcudluğunun yoxlanılması

Yaxşı xəbər odur ki, siz demək olar ki, bu kitabxanaları artıq standart olaraq quraşdırmısınız və ya yükləmisiniz, lakin yoxlamaq lazımdır. Yazı zamanı istifadə etdiyim kitabxanaların tam siyahısı (mötərizədə olan versiyalar lazım olduqda göstərilir):

  1. sorğular (2.10.0) - verilənlərin qəbulu üçün api vasitəsilə sorğunun göndərilməsi
  2. pandas (1.0.1) - json-u oxumaq, dataframe yaratmaq və sonra fayla yazmaq
  3. zipfile - API vasitəsilə alınan arxivdən faylları çıxarın
  4. gzip - json fayllarının .gz-dən açılması
  5. os - açılmamış arxivdən faylların siyahısını əldə etmək
  6. vaxt - isteğe bağlıdır, skriptin işləmə müddətini ölçün
  7. tqdm - faylın işlənməsinin gedişatının asan monitorinqi üçün isteğe bağlıdır

Addım 3. Məlumat yükləmə skriptinin yazılması

İpucu: tam yükləmə skripti məqalənin sonundadır; istəsəniz, onu dərhal götürə və lazım gələrsə, addım-addım izahatlara müraciət edə bilərsiniz.

Addım 3.1. Kitabxanaların idxalı

İkinci addımda sadalanan bütün kitabxanaları idxal edirik.

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

Addım 3.2. Amplitude-ə sorğunun göndərilməsi

Skriptin icrasının başlanğıcını aşkar edək və onu a dəyişəninə yazaq.

başlanğıc tarixi və bitmə tarixi məlumatların endirilməsi müddətinə cavabdehdir və Amplitude serverinə göndərilən sorğunun mətninə daxil edilir; tarixə əlavə olaraq, sorğuda 'T'dən sonra dəyəri dəyişdirərək saatı da təyin edə bilərsiniz.

api_key və secret_key ilk addımda əldə edilən dəyərlərə uyğundur; təhlükəsizlik səbəbi ilə burada özümün əvəzinə təsadüfi ardıcıllıqları qeyd edirəm.

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

Addım 3.3. Data ilə arxiv endirilir

Arxiv üçün bir ad tapırıq və onu fayl adı dəyişəninə yazırıq. Rahatlığım üçün dövrü göstərirəm + bunun amplituda məlumatları olduğunu göstərir. Sonra, Amplitude-dən alınan cavabı arxivə qeyd edirik.

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

Addım 3.4. Kompüterinizdəki qovluqdan faylların götürülməsi

Zipfile kitabxanası faylları çıxarmağa kömək etmək üçün işə düşür. Üçüncü sətirdə diqqətli olun və yolunuzu çıxarmaq üçün daha əlverişli olan yerə yazın.

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

Addım 3.5. json çevrilməsi

Faylları arxivdən çıxardıqdan sonra siz json fayllarını .gz formatına çevirməli və sonrakı iş üçün dataframe-ə yazmalısınız.

Nəzərə alın ki, burada yolu yenidən özünüzə dəyişdirməlisiniz və 000000 əvəzinə Amplitude-dən layihə nömrənizi yazın (yaxud arxivin çıxarıldığı yolu əl ilə açın və içindəki qovluğun adına baxın).

Sıra ilə:

Dəyişənlərə kataloq yazmaq, kataloqdan faylların siyahısını almaq, boş dataframe yaratmaq, tqdm-nin düzgün işləməsi üçün time.sleep(1) dövrə daxilində .gz faylları açıb json oxumaq və doldurmaq üçün dərhal pandalardan istifadə edirik. verilmiş 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')

Addım 3.6. Excel-də dataframe yazmaq

Excel-ə yükləmə burada sadəcə bir nümunədir. Bir çox hallarda python daxilində yaranan verilənlər çərçivəsi ilə işləmək və ya məlumatları yaddaşa qoymaq daha rahatdır.

Siz həmçinin burada məlumat yükləmə yolunu özünüzlə əvəz etməli olacaqsınız.

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

Addım 3.7. Skriptin işləmə müddətini hesablayırıq

Dəyişən b-də cari vaxtı qeyd etmək, fərqi və dəqiqə sayını hesablamaq, ümumi dəqiqələri göstərmək. Bu son addımdır.

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

Nəticə

Verilənlərin yazıldığı amplitude_dataframe dəyişəninə zəng edərək cədvələ zəng edə və onunla işləməyə başlaya bilərsiniz. Onun təxminən 50 sütunu olacaq, onlardan 80% hallarda istifadə edəcəksiniz: hadisə_tipi - hadisə adı, hadisə_xassəsi - hadisə parametrləri, hadisə_zamanı - hadisə vaxtı, uuid - müştəri identifikatoru, user_properties - müştəri parametrləri, əvvəlcə onlarla işləməyə başlamalısınız. . Öz hesablamalarınızdakı rəqəmləri Amplitude tablosunun göstəriciləri ilə müqayisə edərkən unutmamalısınız ki, sistem unikal müştəriləri/huniləri və s. hesablamaq üçün öz metodologiyasından istifadə edir və bunu etməzdən əvvəl mütləq Amplituda sənədlərini oxumalısınız.

Diqqətinizə görə təşəkkürlər! İndi siz xam hadisə datasını Amplitude-a yükləyə və ondan işinizdə tam istifadə edə bilərsiniz.

Tam 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))

Mənbə: www.habr.com

Добавить комментарий