API کے ذریعے طول و عرض ڈیٹا کو بازیافت کرنا

تعارف

طول و عرض نے اپنے آسان ایونٹ سیٹ اپ اور ویژولائزیشن لچک کی وجہ سے خود کو ایک پروڈکٹ اینالیٹکس ٹول کے طور پر بہت اچھی طرح سے ثابت کیا ہے۔ اور اکثر آپ کے اپنے انتساب ماڈل، کلسٹر صارفین، یا کسی دوسرے BI سسٹم میں ڈیش بورڈ بنانے کی ضرورت ہوتی ہے۔ اس طرح کی دھوکہ دہی صرف ایمپلیٹیوڈ کے خام ایونٹ ڈیٹا کے ساتھ ہی ممکن ہے۔ یہ مضمون آپ کو بتائے گا کہ پروگرامنگ کے کم سے کم علم کے ساتھ یہ ڈیٹا کیسے حاصل کیا جائے۔

شرطیں

  1. طول و عرض میں ایک پروجیکٹ جس میں واقعات کو پہلے سے ہی صحیح طریقے سے ترتیب دیا گیا ہے اور ان پر اعداد و شمار جمع کیے گئے ہیں
  2. Python انسٹال ہے (میں ورژن 3.8.3 میں کام کر رہا ہوں)، جس کے ساتھ ممکنہ ریڈر پہلے ہی کم از کم بنیادی سطح پر کام کر سکتا ہے۔

ہدایات

مرحلہ 1۔ API-key اور secret-key حاصل کرنا

ڈیٹا اپ لوڈ کرنے کے لیے، آپ کو پہلے ایک API کلید اور خفیہ کلید حاصل کرنے کی ضرورت ہے۔

آپ انہیں درج ذیل راستے پر چل کر تلاش کر سکتے ہیں۔

  1. "ڈیٹا کا نظم کریں" (اسکرین کے نیچے بائیں طرف واقع ہے)
  2. مطلوبہ پروجیکٹ منتخب کریں جس سے ڈیٹا ڈاؤن لوڈ کیا جائے گا اور اس پر جائیں۔
  3. کھلنے والے پروجیکٹ مینو میں، "پروجیکٹ سیٹنگز" کو منتخب کریں۔
  4. ہمیں API-key اور secret-key کے تار ملتے ہیں، انہیں کاپی کرکے محفوظ جگہ پر محفوظ کریں۔

کلک کیے بغیر، آپ لنک کی پیروی کر سکتے ہیں، جو عام طور پر اس طرح لگتا ہے:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
جہاں $$$$$$ آپ کی تنظیم کا طول و عرض لاگ ان ہے، ****** پروجیکٹ نمبر ہے۔

مرحلہ 2: مطلوبہ لائبریریوں کی موجودگی کی جانچ کرنا

اچھی خبر یہ ہے کہ آپ کے پاس پہلے سے ہی یہ لائبریریاں پہلے سے طے شدہ یا ڈاؤن لوڈ کی گئی ہیں، لیکن آپ کو چیک کرنے کی ضرورت ہے۔ لائبریریوں کی مکمل فہرست جو میں نے تحریر کے وقت استعمال کی تھی (جہاں مناسب ہو قوسین میں ورژن اشارہ کیا جاتا ہے):

  1. درخواستیں (2.10.0) - ڈیٹا حاصل کرنے کے لیے api کے ذریعے درخواست بھیجنا
  2. پانڈا (1.0.1) - json پڑھنا، ڈیٹا فریم بنانا اور پھر فائل میں لکھنا
  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 پر لکھیں۔

startdate اور enddate ڈیٹا کو ڈاؤن لوڈ کرنے کی مدت کے لیے ذمہ دار ہیں اور Amplitude سرور کو بھیجی گئی درخواست کے متن میں شامل ہیں؛ تاریخ کے علاوہ، آپ درخواست میں 'T' کے بعد قدر کو تبدیل کر کے گھنٹے کی بھی وضاحت کر سکتے ہیں۔

api_key اور secret_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۔ آپ کے کمپیوٹر پر فولڈر سے فائلوں کو بازیافت کرنا

فائلوں کو نکالنے میں مدد کے لیے زپ فائل لائبریری کام میں آتی ہے۔ تیسری سطر میں، محتاط رہیں اور اپنا راستہ لکھیں جہاں آپ کے لیے نکالنا زیادہ آسان ہو۔

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

مرحلہ 3.5۔ json کی تبدیلی

آرکائیو سے فائلیں نکالنے کے بعد، آپ کو json فائلوں کو .gz فارمیٹ میں تبدیل کرنا ہوگا اور مزید کام کے لیے انہیں ڈیٹا فریم میں لکھنا ہوگا۔

براہ کرم نوٹ کریں کہ یہاں آپ کو اپنا راستہ دوبارہ تبدیل کرنے کی ضرورت ہے، اور 000000 کے بجائے Amplitude سے اپنا پروجیکٹ نمبر لکھیں (یا دستی طور پر وہ راستہ کھولیں جہاں سے آرکائیو نکالا گیا تھا اور اندر موجود فولڈر کا نام دیکھیں)۔

ترتیب میں:

ڈائرکٹری کو متغیر پر لکھنا، ڈائرکٹری سے فائلوں کی فہرست حاصل کرنا، 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۔ ایکسل میں ڈیٹا فریم لکھنا

ایکسل پر اپ لوڈ یہاں صرف ایک مثال ہے۔ بہت سے معاملات میں، 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))

حاصل يہ ہوا

آپ ٹیبل کو کال کر سکتے ہیں اور اس کے ساتھ کام کرنا شروع کر سکتے ہیں amplitude_dataframe متغیر کو کال کر کے جس میں ڈیٹا لکھا گیا تھا۔ اس میں تقریباً 50 کالم ہوں گے، جن میں سے 80% کیسز میں آپ استعمال کریں گے: event_type - ایونٹ کا نام، ایونٹ_پراپرٹیز - ایونٹ کے پیرامیٹرز، ایونٹ_ٹائم - ایونٹ کا وقت، uuid - کلائنٹ آئی ڈی، صارف_پراپرٹیز - کلائنٹ پیرامیٹرز، آپ کو پہلے ان کے ساتھ کام کرنا شروع کرنا چاہیے۔ . اور جب آپ کے اپنے حساب سے اعداد و شمار کا موازنہ ایمپلیٹیوڈ ڈیش بورڈز کے اشارے سے کرتے ہیں، تو آپ کو یہ نہیں بھولنا چاہیے کہ سسٹم منفرد کلائنٹس/فنلز وغیرہ کا حساب لگانے کے لیے اپنا طریقہ کار استعمال کرتا ہے، اور ایسا کرنے سے پہلے، آپ کو ایمپلیٹیوڈ دستاویزات کو ضرور پڑھنا چاہیے۔

آپکی توجہ کا شکریہ! اب آپ Raw ایونٹ کا ڈیٹا 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

نیا تبصرہ شامل کریں