การแนะนำ
Amplitude ได้รับการพิสูจน์ตัวเองเป็นอย่างดีในฐานะเครื่องมือวิเคราะห์ผลิตภัณฑ์ เนื่องจากการตั้งค่าเหตุการณ์ที่ง่ายดายและความยืดหยุ่นในการแสดงภาพ และบ่อยครั้งที่มีความจำเป็นต้องตั้งค่ารูปแบบการระบุแหล่งที่มา ผู้ใช้คลัสเตอร์ หรือสร้างแดชบอร์ดในระบบ BI อื่นของคุณเอง เป็นไปได้ที่จะดำเนินการฉ้อโกงดังกล่าวด้วยข้อมูลเหตุการณ์ดิบจาก Amplitude เท่านั้น บทความนี้จะบอกวิธีรับข้อมูลนี้โดยมีความรู้ด้านการเขียนโปรแกรมเพียงเล็กน้อย
ข้อกำหนดเบื้องต้น
- โปรเจ็กต์ใน Amplitude ซึ่งมีการกำหนดค่าเหตุการณ์อย่างถูกต้องแล้วและรวบรวมสถิติไว้
- ติดตั้ง Python แล้ว (ฉันกำลังทำงานในเวอร์ชัน 3.8.3) ซึ่งผู้อ่านที่มีศักยภาพสามารถทำงานได้อย่างน้อยในระดับพื้นฐานแล้ว
การแนะนำ
ขั้นตอนที่ 1 รับคีย์ API และคีย์ลับ
หากต้องการอัปโหลดข้อมูล คุณต้องได้รับคีย์ API และคีย์ลับก่อน
คุณสามารถค้นหาได้โดยทำตามเส้นทางต่อไปนี้:
- “จัดการข้อมูล” (อยู่ที่ด้านล่างซ้ายของหน้าจอ)
- เลือกโครงการที่ต้องการดาวน์โหลดข้อมูลและไปที่โครงการ
- ในเมนูโครงการที่เปิดขึ้น เลือก "การตั้งค่าโครงการ"
- เราค้นหาสตริงคีย์ API และคีย์ลับ คัดลอกและบันทึกไว้ในที่ปลอดภัย
คุณสามารถไปตามลิงค์โดยไม่ต้องคลิกซึ่งโดยทั่วไปจะมีลักษณะดังนี้:
analytics.amplitude.com/$$$$$$$/จัดการ/โครงการ/******/การตั้งค่า
โดยที่ $$$$$$ คือข้อมูลเข้าสู่ระบบขององค์กรของคุณ ****** คือหมายเลขโครงการ
ขั้นตอนที่ 2: ตรวจสอบการมีอยู่ของไลบรารีที่จำเป็น
ข่าวดีก็คือคุณเกือบจะติดตั้งไลบรารีเหล่านี้ตามค่าเริ่มต้นหรือดาวน์โหลดไว้แล้ว แต่คุณต้องตรวจสอบ รายการไลบรารีทั้งหมดที่ฉันใช้ในขณะที่เขียน (เวอร์ชันในวงเล็บจะระบุตามความเหมาะสม):
- คำขอ (2.10.0) - การส่งคำขอผ่าน API เพื่อรับข้อมูล
- pandas (1.0.1) - อ่าน json สร้าง dataframe แล้วเขียนลงไฟล์
- zipfile - แยกไฟล์จากไฟล์เก็บถาวรที่ได้รับผ่าน API
- gzip - แตกไฟล์ json จาก .gz
- ระบบปฏิบัติการ - รับรายการไฟล์จากไฟล์เก็บถาวรที่คลายการแพ็ก
- เวลา - เป็นทางเลือก วัดเวลาทำงานของสคริปต์
- 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