API-ээр дамжуулан далайцын өгөгдлийг татаж байна

Танилцуулга

Amplitude нь үйл явдлыг хялбархан тохируулах, дүрслэх уян хатан байдлаас шалтгаалан бүтээгдэхүүний аналитик хэрэгсэл гэдгээ маш сайн баталсан. Мөн ихэвчлэн өөрийн аттрибутын загвар, кластерын хэрэглэгчдийг тохируулах эсвэл өөр BI системд хяналтын самбар үүсгэх шаардлагатай байдаг. Зөвхөн Amplitude-ийн түүхий үйл явдлын өгөгдлөөр ийм луйврыг хийх боломжтой. Энэ нийтлэл нь програмчлалын хамгийн бага мэдлэгтэй энэ өгөгдлийг хэрхэн олж авахыг танд хэлэх болно.

Урьдчилсан нөхцөл

  1. Үйл явдлыг аль хэдийн зөв тохируулж, тэдгээрийн статистикийг цуглуулсан далайц дахь төсөл
  2. Python суулгасан (би 3.8.3 хувилбар дээр ажиллаж байна), боломжит уншигч нь ядаж үндсэн түвшинд ажиллах боломжтой.

Зааварчилгаа

Алхам 1. API түлхүүр ба нууц түлхүүрийг олж авах

Өгөгдөл байршуулахын тулд эхлээд API түлхүүр болон нууц түлхүүрийг авах шаардлагатай.

Та дараах замыг дагаж тэдгээрийг олох боломжтой.

  1. "Өгөгдөл удирдах" (дэлгэцийн зүүн доод талд байрлах)
  2. Өгөгдлийг татаж авах хүссэн төслөө сонгоод түүн рүү очно уу
  3. Нээгдсэн төслийн цэснээс "Төслийн тохиргоо" -г сонгоно уу.
  4. Бид API-түлхүүр болон нууц түлхүүрийн мөрүүдийг олж, тэдгээрийг хуулж, аюулгүй газар хадгалдаг.

Та товшихгүйгээр холбоосыг дагаж болно, энэ нь ерөнхийдөө дараах байдалтай байна.
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
$$$$$$ нь танай байгууллагын нэвтрэх далайц, ****** нь төслийн дугаар юм

Алхам 2: Шаардлагатай номын сангууд байгаа эсэхийг шалгах

Сайн мэдээ гэвэл та эдгээр сангуудыг анхдагчаар суулгасан эсвэл татаж авсан байх нь гарцаагүй, гэхдээ та шалгах хэрэгтэй. Бичиж байх үед миний ашигласан номын сангуудын бүрэн жагсаалт (хэрэгтэй тохиолдолд хаалтанд байгаа хувилбаруудыг зааж өгсөн болно):

  1. хүсэлт (2.10.0) - өгөгдөл хүлээн авах хүсэлтийг api-ээр илгээх
  2. pandas (1.0.1) - json-г уншиж, dataframe үүсгээд дараа нь файл руу бичнэ
  3. zipfile - API-ээр дамжуулан хүлээн авсан архиваас файлуудыг задлах
  4. gzip - .gz-ээс json файлуудыг задлах
  5. os - задалсан архиваас файлуудын жагсаалтыг авах
  6. цаг - нэмэлт, скриптийн ажиллах хугацааг хэмжинэ
  7. tqdm - нэмэлт, файл боловсруулах явцыг хялбархан хянах боломжтой

Алхам 3. Өгөгдөл ачаалах скрипт бичих

Зөвлөмж: Бүрэн татаж авах скрипт нь нийтлэлийн төгсгөлд байгаа бөгөөд хэрэв хүсвэл та үүнийг даруй авч, шаардлагатай бол алхам алхмаар тайлбарыг үзэх боломжтой.

Алхам 3.1. Номын санг импортлох

Бид хоёр дахь алхамд жагсаасан бүх номын сангуудыг импортолдог.

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

Алхам 3.2. Amplitude-д хүсэлт илгээж байна

Скриптийн гүйцэтгэлийн эхлэлийг илрүүлж a хувьсагч руу бичье.

Эхлэх огноо ба дуусах огноо нь өгөгдлийг татаж авах хугацааг хариуцах бөгөөд Amplitude сервер рүү илгээсэн хүсэлтийн текстэнд суурилагдсан бөгөөд огнооноос гадна та хүсэлтийн 'T'-ийн ард байгаа утгыг өөрчлөх замаар цагийг зааж өгч болно.

api_key болон нууц_түлхүүр нь эхний алхамд олж авсан утгуудтай тохирч байна; аюулгүй байдлын үүднээс би энд өөрийнхөө оронд санамсаргүй дарааллыг зааж өгсөн.

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. Өгөгдөл бүхий архивыг татаж байна

Бид архивын нэрийг гаргаж ирээд файлын нэрийн хувьсагч руу бичдэг. Тохиромжтой болгох үүднээс би үеийг зааж өгсөн + энэ нь далайцын өгөгдөл гэдгийг харуулж байна. Дараа нь бид далайцаас хүлээн авсан хариултыг архивт тэмдэглэнэ.

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

Алхам 3.4. Таны компьютер дээрх фолдероос файл татаж байна

Zipfile номын сан нь файл задлахад тусалдаг. Гурав дахь мөрөнд болгоомжтой байж, олборлоход илүү тохиромжтой замаа бичнэ үү.

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

Алхам 3.5. json хөрвүүлэлт

Архиваас файлуудыг задалсны дараа та json файлуудыг .gz формат руу хөрвүүлж, цаашдын ажилд зориулж dataframe болгон бичих хэрэгтэй.

Энд та замыг дахин өөрийн болгож өөрчлөх хэрэгтэйг анхаарна уу, 000000-ын оронд Amplitude-аас төслийн дугаараа бичнэ үү (эсвэл архивыг задалсан замыг гараар нээж, доторх хавтасны нэрийг харна уу).

Дарааллаар нь:

Хувьсагч руу директор бичих, лавлахаас файлын жагсаалтыг авах, хоосон dataframe үүсгэх, tqdm зөв ажиллахын тулд time.sleep(1) хийх, давталт дотор бид .gz файлуудыг нээж, тэр даруй json уншиж, бөглөхдөө pandas ашиглана. өгөгдсөн өгөгдлийн хүрээ.

# Преобразование 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. Excel дээр dataframe бичих

Excel-д байршуулах нь энд зөвхөн жишээ юм. Ихэнх тохиолдолд python доторх өгөгдлийн хүрээтэй ажиллах эсвэл өгөгдлийг хадгалахад байрлуулах нь илүү тохиромжтой байдаг.

Та мөн энд өгөгдөл байршуулах замыг өөрийн замаар солих хэрэгтэй болно.

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

Алхам 3.7. Бид скриптийн ажиллах хугацааг тооцдог

b хувьсагч дахь одоогийн цагийг бүртгэх, зөрүү болон минутын тоог тооцоолох, нийт минутыг харуулах. Энэ бол сүүлчийн алхам юм.

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

дүгнэлт

Та хүснэгтийг дуудаж, өгөгдөл бичсэн далайц_өгөгдлийн хүрээ хувьсагчийг дуудаж түүнтэй ажиллаж эхлэх боломжтой. Энэ нь 50 орчим баганатай байх бөгөөд үүнээс 80% тохиолдолд та дараах зүйлийг ашиглах болно: event_type - үйл явдлын нэр, үйл явдлын_ шинж чанарууд - үйл явдлын параметрүүд, үйл явдлын_цаг - үйл явдлын цаг, uuid - үйлчлүүлэгчийн id, user_properties - үйлчлүүлэгчийн параметрүүд, та эхлээд тэдэнтэй ажиллаж эхлэх хэрэгтэй. . Өөрийнхөө хийсэн тооцооллыг далайцын хяналтын самбарын үзүүлэлтүүдтэй харьцуулахдаа систем нь өвөрмөц үйлчлүүлэгч / юүлүүр гэх мэтийг тооцоолох өөрийн аргачлалыг ашигладаг гэдгийг мартаж болохгүй бөгөөд үүнийг хийхээсээ өмнө далайцын баримт бичгийг унших хэрэгтэй.

Анхаарал тавьсанд баярлалаа! Одоо та үйл явдлын түүхий өгөгдлийг Amplitude-д байршуулж, ажилдаа бүрэн ашиглах боломжтой.

Бүтэн скрипт:

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

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх