การดึงข้อมูล Amplitude ผ่าน API

การแนะนำ

Amplitude ได้รับการพิสูจน์ตัวเองเป็นอย่างดีในฐานะเครื่องมือวิเคราะห์ผลิตภัณฑ์ เนื่องจากการตั้งค่าเหตุการณ์ที่ง่ายดายและความยืดหยุ่นในการแสดงภาพ และบ่อยครั้งที่มีความจำเป็นต้องตั้งค่ารูปแบบการระบุแหล่งที่มา ผู้ใช้คลัสเตอร์ หรือสร้างแดชบอร์ดในระบบ BI อื่นของคุณเอง เป็นไปได้ที่จะดำเนินการฉ้อโกงดังกล่าวด้วยข้อมูลเหตุการณ์ดิบจาก Amplitude เท่านั้น บทความนี้จะบอกวิธีรับข้อมูลนี้โดยมีความรู้ด้านการเขียนโปรแกรมเพียงเล็กน้อย

ข้อกำหนดเบื้องต้น

  1. โปรเจ็กต์ใน Amplitude ซึ่งมีการกำหนดค่าเหตุการณ์อย่างถูกต้องแล้วและรวบรวมสถิติไว้
  2. ติดตั้ง Python แล้ว (ฉันกำลังทำงานในเวอร์ชัน 3.8.3) ซึ่งผู้อ่านที่มีศักยภาพสามารถทำงานได้อย่างน้อยในระดับพื้นฐานแล้ว

การแนะนำ

ขั้นตอนที่ 1 รับคีย์ API และคีย์ลับ

หากต้องการอัปโหลดข้อมูล คุณต้องได้รับคีย์ API และคีย์ลับก่อน

คุณสามารถค้นหาได้โดยทำตามเส้นทางต่อไปนี้:

  1. “จัดการข้อมูล” (อยู่ที่ด้านล่างซ้ายของหน้าจอ)
  2. เลือกโครงการที่ต้องการดาวน์โหลดข้อมูลและไปที่โครงการ
  3. ในเมนูโครงการที่เปิดขึ้น เลือก "การตั้งค่าโครงการ"
  4. เราค้นหาสตริงคีย์ API และคีย์ลับ คัดลอกและบันทึกไว้ในที่ปลอดภัย

คุณสามารถไปตามลิงค์โดยไม่ต้องคลิกซึ่งโดยทั่วไปจะมีลักษณะดังนี้:
analytics.amplitude.com/$$$$$$$/จัดการ/โครงการ/******/การตั้งค่า
โดยที่ $$$$$$ คือข้อมูลเข้าสู่ระบบขององค์กรของคุณ ****** คือหมายเลขโครงการ

ขั้นตอนที่ 2: ตรวจสอบการมีอยู่ของไลบรารีที่จำเป็น

ข่าวดีก็คือคุณเกือบจะติดตั้งไลบรารีเหล่านี้ตามค่าเริ่มต้นหรือดาวน์โหลดไว้แล้ว แต่คุณต้องตรวจสอบ รายการไลบรารีทั้งหมดที่ฉันใช้ในขณะที่เขียน (เวอร์ชันในวงเล็บจะระบุตามความเหมาะสม):

  1. คำขอ (2.10.0) - การส่งคำขอผ่าน API เพื่อรับข้อมูล
  2. pandas (1.0.1) - อ่าน json สร้าง dataframe แล้วเขียนลงไฟล์
  3. zipfile - แยกไฟล์จากไฟล์เก็บถาวรที่ได้รับผ่าน API
  4. gzip - แตกไฟล์ json จาก .gz
  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

วันที่เริ่มต้นและวันที่สิ้นสุดมีหน้าที่รับผิดชอบในช่วงเวลาในการดาวน์โหลดข้อมูลและสร้างขึ้นในข้อความของคำขอที่ส่งไปยังเซิร์ฟเวอร์ 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. การดาวน์โหลดไฟล์เก็บถาวรพร้อมข้อมูล

เราตั้งชื่อไฟล์เก็บถาวรและเขียนลงในตัวแปรชื่อไฟล์ เพื่อความสะดวกของฉัน ฉันระบุช่วงเวลา + ระบุว่านี่คือข้อมูลแอมพลิจูด ต่อไป เราจะบันทึกการตอบสนองที่ได้รับจาก Amplitude ลงในไฟล์เก็บถาวร

# Скачивание архива с данными
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 ในรูปแบบ .gz และเขียนลงใน dataframe เพื่อทำงานต่อไป

โปรดทราบว่าที่นี่คุณต้องเปลี่ยนเส้นทางเป็นของคุณเองอีกครั้งและแทนที่จะเขียนหมายเลขโครงการของคุณจาก Amplitude แทน 000000 (หรือเปิดเส้นทางที่แตกไฟล์เก็บถาวรด้วยตนเองและดูชื่อโฟลเดอร์ที่อยู่ภายใน)

ตามลำดับ:

การเขียนไดเรกทอรีไปยังตัวแปร รับรายการไฟล์จากไดเรกทอรี การสร้าง dataframe ว่าง time.sleep(1) เพื่อให้ tqdm ทำงานได้อย่างถูกต้อง ภายในลูปเราเปิดไฟล์ .gz และใช้ pandas ทันทีเพื่ออ่าน 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

การอัปโหลดไปยัง Excel เป็นเพียงตัวอย่างที่นี่ ในหลายกรณี จะสะดวกกว่าในการทำงานกับ data frame ที่เป็นผลลัพธ์ภายใน 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 - ชื่อเหตุการณ์, event_properties - พารามิเตอร์เหตุการณ์, event_time - เวลาเหตุการณ์, uuid - รหัสลูกค้า, user_properties - พารามิเตอร์ไคลเอนต์ คุณควรเริ่มทำงานกับพวกเขาก่อน . และเมื่อเปรียบเทียบตัวเลขจากการคำนวณของคุณเองกับตัวบ่งชี้จากแดชบอร์ด Amplitude คุณต้องไม่ลืมว่าระบบใช้วิธีการของตัวเองในการคำนวณลูกค้า/ช่องทางที่ไม่ซ้ำกัน ฯลฯ และก่อนดำเนินการนี้ คุณควรอ่านเอกสาร Amplitude อย่างแน่นอน

ขอขอบคุณสำหรับความสนใจของคุณ! ตอนนี้คุณสามารถอัปโหลดข้อมูลเหตุการณ์ดิบไปยัง 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))

ที่มา: will.com

เพิ่มความคิดเห็น