एपीआई के माध्यम से आयाम डेटा पुनर्प्राप्त करना

परिचय

अपने आसान इवेंट सेटअप और विज़ुअलाइज़ेशन लचीलेपन के कारण एम्प्लिट्यूड ने खुद को उत्पाद विश्लेषण उपकरण के रूप में बहुत अच्छी तरह से साबित कर दिया है। और अक्सर अपना खुद का एट्रिब्यूशन मॉडल, क्लस्टर उपयोगकर्ता स्थापित करने या किसी अन्य बीआई सिस्टम में डैशबोर्ड बनाने की आवश्यकता होती है। इस तरह की धोखाधड़ी केवल एम्प्लिट्यूड के कच्चे घटना डेटा के साथ ही संभव है। यह आलेख आपको बताएगा कि न्यूनतम प्रोग्रामिंग ज्ञान के साथ यह डेटा कैसे प्राप्त किया जाए।

आवश्यक शर्तें

  1. एम्प्लिट्यूड में एक प्रोजेक्ट जिसमें घटनाएं पहले से ही सही ढंग से कॉन्फ़िगर की गई हैं और उन पर आंकड़े एकत्र किए गए हैं
  2. पायथन स्थापित है (मैं संस्करण 3.8.3 में काम कर रहा हूं), जिसके साथ संभावित पाठक पहले से ही कम से कम बुनियादी स्तर पर काम कर सकता है

अनुदेश

चरण 1. एपीआई-कुंजी और गुप्त-कुंजी प्राप्त करना

डेटा अपलोड करने के लिए, आपको सबसे पहले एक एपीआई कुंजी और गुप्त कुंजी प्राप्त करनी होगी।

आप निम्न पथ का अनुसरण करके उन्हें पा सकते हैं:

  1. "डेटा प्रबंधित करें" (स्क्रीन के नीचे बाईं ओर स्थित)
  2. वांछित प्रोजेक्ट का चयन करें जिससे डेटा डाउनलोड किया जाएगा और उस पर जाएं
  3. खुलने वाले प्रोजेक्ट मेनू में, "प्रोजेक्ट सेटिंग्स" चुनें
  4. हम एपीआई-कुंजी और गुप्त-कुंजी स्ट्रिंग ढूंढते हैं, उन्हें कॉपी करते हैं और सुरक्षित स्थान पर सहेजते हैं।

बिना क्लिक किए, आप लिंक का अनुसरण कर सकते हैं, जो सामान्यतः इस तरह दिखता है:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
जहां $$$$$$ आपके संगठन का आयाम लॉगिन है, ****** प्रोजेक्ट नंबर है

चरण 2: आवश्यक पुस्तकालयों की उपस्थिति की जाँच करना

अच्छी खबर यह है कि आपके पास निश्चित रूप से ये लाइब्रेरी पहले से ही डिफ़ॉल्ट रूप से इंस्टॉल या डाउनलोड हैं, लेकिन आपको जांच करने की आवश्यकता है। लेखन के समय मेरे द्वारा उपयोग की गई पुस्तकालयों की पूरी सूची (जहां उपयुक्त हो वहां कोष्ठकों में संस्करण दर्शाए गए हैं):

  1. अनुरोध (2.10.0) - डेटा प्राप्त करने के लिए एपीआई के माध्यम से अनुरोध भेजना
  2. पांडा (1.0.1) - json पढ़ना, डेटाफ़्रेम बनाना और फिर फ़ाइल में लिखना
  3. ज़िपफ़ाइल - एपीआई के माध्यम से प्राप्त संग्रह से फ़ाइलें निकालें
  4. gzip - .gz से json फ़ाइलें अनपैक करना
  5. ओएस - एक अनपैक्ड संग्रह से फ़ाइलों की एक सूची प्राप्त करना
  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. एम्प्लिट्यूड के लिए अनुरोध सबमिट करना

आइए स्क्रिप्ट निष्पादन की शुरुआत का पता लगाएं और इसे वेरिएबल ए में लिखें।

प्रारंभ दिनांक और समाप्ति दिनांक डेटा डाउनलोड करने की अवधि के लिए जिम्मेदार हैं और एम्प्लिट्यूड सर्वर पर भेजे गए अनुरोध के पाठ में निर्मित होते हैं; दिनांक के अलावा, आप अनुरोध में 'टी' के बाद मान बदलकर घंटा भी निर्दिष्ट कर सकते हैं।

एपीआई_की और सीक्रेट_की पहले चरण में प्राप्त मूल्यों के अनुरूप हैं; सुरक्षा कारणों से, मैं यहां अपने बजाय यादृच्छिक अनुक्रम निर्दिष्ट करता हूं।

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. आपके कंप्यूटर पर किसी फ़ोल्डर से फ़ाइलें पुनर्प्राप्त करना

फ़ाइलों को निकालने में सहायता के लिए ज़िपफ़ाइल लाइब्रेरी चलन में आती है। तीसरी पंक्ति में, सावधान रहें और अपना रास्ता लिखें जहां से निकालना आपके लिए अधिक सुविधाजनक हो।

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

चरण 3.5. जेएसओएन रूपांतरण

संग्रह से फ़ाइलें निकालने के बाद, आपको json फ़ाइलों को .gz प्रारूप में कनवर्ट करना होगा और आगे के काम के लिए उन्हें डेटाफ़्रेम में लिखना होगा।

कृपया ध्यान दें कि यहां आपको पथ को फिर से अपने अनुसार बदलना होगा, और 000000 के बजाय एम्प्लिट्यूड से अपना प्रोजेक्ट नंबर लिखना होगा (या उस पथ को मैन्युअल रूप से खोलें जहां से संग्रह निकाला गया था और अंदर फ़ोल्डर का नाम देखें)।

क्रम में:

एक वैरिएबल के लिए एक निर्देशिका लिखना, एक निर्देशिका से फ़ाइलों की एक सूची प्राप्त करना, एक खाली डेटाफ्रेम बनाना, tqdm के सही ढंग से काम करने के लिए time.sleep(1), लूप के अंदर हम .gz फ़ाइलें खोलते हैं और json को पढ़ने और भरने के लिए तुरंत पांडा का उपयोग करते हैं दिया गया डेटाफ़्रेम.

# Преобразование 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-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)

चरण 3.7. हम स्क्रिप्ट के चलने का समय गिनते हैं

वेरिएबल बी में वर्तमान समय को रिकॉर्ड करना, अंतर और मिनटों की संख्या की गणना करना, कुल मिनट प्रदर्शित करना। यह अंतिम चरण है.

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

निष्कर्ष

आप तालिका को कॉल कर सकते हैं और amplitude_dataframe वेरिएबल को कॉल करके उसके साथ काम करना शुरू कर सकते हैं जिसमें डेटा लिखा गया था। इसमें लगभग 50 कॉलम होंगे, जिनमें से 80% मामलों में आप इसका उपयोग करेंगे: इवेंट_टाइप - इवेंट नाम, इवेंट_प्रॉपर्टीज - ​​इवेंट पैरामीटर, इवेंट_टाइम - इवेंट टाइम, यूयूआईडी - क्लाइंट आईडी, यूजर_प्रॉपर्टीज - ​​क्लाइंट पैरामीटर, आपको पहले उनके साथ काम करना शुरू करना चाहिए . और एम्प्लिट्यूड डैशबोर्ड के संकेतकों के साथ अपनी गणना के आंकड़ों की तुलना करते समय, आपको यह नहीं भूलना चाहिए कि सिस्टम अद्वितीय क्लाइंट/फ़नल आदि की गणना के लिए अपनी स्वयं की पद्धति का उपयोग करता है, और ऐसा करने से पहले, आपको निश्चित रूप से एम्प्लिट्यूड दस्तावेज़ पढ़ना चाहिए।

आपके ध्यान देने के लिए धन्यवाद! अब आप कच्चे ईवेंट डेटा को एम्प्लिट्यूड पर अपलोड कर सकते हैं और इसे अपने काम में पूरी तरह से उपयोग कर सकते हैं।

पूरी स्क्रिप्ट:

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

एक टिप्पणी जोड़ें