Gbigba data titobi pada nipasẹ API

Ifihan

Titobi ti fihan ararẹ daradara bi ohun elo atupale ọja nitori iṣeto iṣẹlẹ irọrun rẹ ati irọrun wiwo. Ati nigbagbogbo iwulo wa lati ṣeto awoṣe ikasi tirẹ, awọn olumulo iṣupọ, tabi kọ dasibodu kan ninu eto BI miiran. O ṣee ṣe nikan lati ṣe iru jegudujera pẹlu data iṣẹlẹ aise lati titobi. Nkan yii yoo sọ fun ọ bi o ṣe le gba data yii pẹlu imọ siseto pọọku.

Awọn ibeere pataki

  1. Ise agbese kan ni titobi ninu eyiti awọn iṣẹlẹ ti wa ni tunto tẹlẹ ni deede ati pe awọn iṣiro ti gba lori wọn
  2. Python ti fi sori ẹrọ (Mo n ṣiṣẹ ni ẹya 3.8.3), eyiti oluka ti o ni agbara le ṣiṣẹ tẹlẹ pẹlu o kere ju ni ipele ipilẹ

Ilana

Igbese 1. Ngba API-bọtini ati ikoko-bọtini

Lati gbe data soke, o nilo lati gba bọtini API ati bọtini ikoko.

O le wa wọn nipa titẹle ọna atẹle:

  1. "Ṣakoso data" (ti o wa ni isale apa osi ti iboju)
  2. Yan iṣẹ akanṣe ti o fẹ lati eyiti data yoo ṣe igbasilẹ ki o lọ si
  3. Ninu akojọ aṣayan iṣẹ-ṣiṣe ti o ṣii, yan "Awọn eto iṣẹ".
  4. A ri awọn API-bọtini ati ìkọkọ-bọtini awọn gbolohun ọrọ, daakọ ati ki o fi wọn ni kan ailewu ibi.

Laisi titẹ, o le tẹle ọna asopọ, eyiti o dabi eyi ni gbogbogbo:
analytics.amplitude.com/$$$$$$/ṣakoso/iṣẹ/*****/awọn eto,
nibiti $$$$$$ jẹ wiwọle titobi ti ajo rẹ, ****** jẹ nọmba iṣẹ akanṣe

Igbesẹ 2: Ṣiṣayẹwo wiwa ti awọn ile-ikawe ti a beere

Irohin ti o dara ni pe o fẹrẹẹ daju pe o ti fi awọn ile-ikawe wọnyi sori aiyipada tabi ṣe igbasilẹ, ṣugbọn o nilo lati ṣayẹwo. Atokọ pipe ti awọn ile ikawe ti Mo lo ni akoko kikọ (awọn ẹya ni awọn akọmọ jẹ itọkasi nibiti o yẹ):

  1. awọn ibeere (2.10.0) - fifiranṣẹ ibeere nipasẹ api lati gba data
  2. pandas (1.0.1) - kika json, ṣiṣẹda dataframe ati lẹhinna kikọ si faili kan
  3. zipfile - jade awọn faili lati ibi ipamọ ti o gba nipasẹ API
  4. gzip – ṣiṣi awọn faili json lati .gz
  5. os - gbigba atokọ ti awọn faili lati ibi ipamọ ti ko kun
  6. akoko - iyan, wiwọn awọn akosile ká nṣiṣẹ akoko
  7. tqdm - iyan, fun abojuto irọrun ti ilọsiwaju sisẹ faili

Igbese 3. Kikọ a data loading akosile

Imọran: iwe afọwọkọ igbasilẹ ni kikun wa ni ipari nkan naa; ti o ba fẹ, o le mu lẹsẹkẹsẹ ki o tọka si awọn alaye igbesẹ-nipasẹ-igbesẹ ti o ba jẹ dandan.

Igbesẹ 3.1. Awọn ile-ikawe agbewọle

A gbe gbogbo awọn ile-ikawe ti a ṣe akojọ si ni igbesẹ keji.

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

Igbesẹ 3.2. Gbigbe ibeere kan si titobi

Jẹ ki a ṣawari ibẹrẹ ti ipaniyan iwe afọwọkọ ki o kọ si oniyipada a.

ọjọ ibẹrẹ ati ipari jẹ iduro fun akoko igbasilẹ data ati pe a ṣe sinu ọrọ ti ibeere ti a firanṣẹ si olupin titobi; ni afikun si ọjọ naa, o tun le pato wakati naa nipa yiyipada iye lẹhin 'T' ninu ibeere naa.

api_key ati secret_key ni ibamu si awọn iye ti o gba ni igbesẹ akọkọ; fun awọn idi aabo, Mo pato awọn ilana laileto nibi dipo ti ara mi.

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

Igbesẹ 3.3. Gbigbasilẹ ohun pamosi pẹlu data

A wa pẹlu orukọ kan fun ile ifi nkan pamosi ati kọ si oniyipada orukọ faili. Fun irọrun mi, Mo tọka akoko + tọka pe eyi jẹ data titobi. Nigbamii, a ṣe igbasilẹ esi ti o gba lati titobi sinu ile-ipamọ.

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

Igbesẹ 3.4. Ngba awọn faili pada lati folda kan lori kọnputa rẹ

Ile-ikawe zipfile wa sinu ere lati ṣe iranlọwọ jade awọn faili jade. Ni ila kẹta, ṣọra ki o kọ ọna rẹ si ibi ti o rọrun julọ fun ọ lati jade.

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

Igbesẹ 3.5. json iyipada

Lẹhin yiyọ awọn faili kuro lati ibi ipamọ, o nilo lati yi awọn faili json pada ni ọna kika .gz ki o kọ wọn sinu dataframe kan fun iṣẹ siwaju sii.

Jọwọ ṣe akiyesi pe nibi o nilo lati yi ọna pada lẹẹkansi si tirẹ, ati dipo 000000 kọ nọmba iṣẹ akanṣe rẹ lati titobi (tabi pẹlu ọwọ ṣii ọna ti o ti fa jade ki o wo orukọ folda inu).

Ni eto:

Kikọ liana kan si oniyipada, gbigba atokọ awọn faili lati inu itọsọna kan, ṣiṣẹda data ṣofo, time.sleep(1) fun tqdm lati ṣiṣẹ ni deede, inu lupu a ṣii awọn faili .gz ati lẹsẹkẹsẹ lo pandas lati ka json ati kun dataframe ti a fun.

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

Igbesẹ 3.6. Kikọ dataframe ni tayo

Ikojọpọ si tayo jẹ apẹẹrẹ kan nibi. Ni ọpọlọpọ awọn ọran, o rọrun diẹ sii lati ṣiṣẹ pẹlu fireemu data abajade ninu Python tabi fi data naa sinu ibi ipamọ.

Iwọ yoo tun ni lati rọpo ọna gbigbe data nibi pẹlu tirẹ.

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

Igbesẹ 3.7. A ka akoko ṣiṣe ti iwe afọwọkọ naa

Gbigbasilẹ akoko lọwọlọwọ ni oniyipada b, ṣe iṣiro iyatọ ati nọmba awọn iṣẹju, ṣafihan awọn iṣẹju lapapọ. Eyi ni igbesẹ ti o kẹhin.

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

ipari

O le pe tabili ki o bẹrẹ ṣiṣẹ pẹlu rẹ nipa pipe amplitude_dataframe oniyipada sinu eyiti a ti kọ data naa. Yoo ni nipa awọn ọwọn 50, eyiti ninu 80% awọn ọran iwọ yoo lo: event_type - orukọ iṣẹlẹ, iṣẹlẹ_properties - awọn aye iṣẹlẹ, iṣẹlẹ_time - akoko iṣẹlẹ, uuid - id client, user_properties - awọn paramita alabara, o yẹ ki o bẹrẹ ṣiṣẹ pẹlu wọn ni akọkọ. . Ati nigbati o ba ṣe afiwe awọn isiro lati awọn iṣiro tirẹ pẹlu awọn olufihan lati awọn dasibodu titobi, o ko gbọdọ gbagbe pe eto naa nlo ilana tirẹ fun ṣiṣe iṣiro awọn alabara alailẹgbẹ / funnels, ati bẹbẹ lọ, ati ṣaaju ṣiṣe eyi, o yẹ ki o dajudaju ka iwe-itumọ titobi naa.

Mo dupe fun ifetisile re! Bayi o le gbe data iṣẹlẹ iṣẹlẹ aise si titobi ati lo ni kikun ninu iṣẹ rẹ.

Gbogbo iwe afọwọkọ:

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

orisun: www.habr.com

Fi ọrọìwòye kun