API를 통해 진폭 데이터 검색

소개

Amplitude는 손쉬운 이벤트 설정과 시각화 유연성으로 인해 제품 분석 도구로서 매우 잘 입증되었습니다. 그리고 자체 기여 모델을 설정하거나 사용자를 클러스터링하거나 다른 BI 시스템에 대시보드를 구축해야 하는 경우도 많습니다. Amplitude의 원시 이벤트 데이터를 통해서만 이러한 사기를 수행할 수 있습니다. 이 기사에서는 최소한의 프로그래밍 지식으로 이 데이터를 얻는 방법을 설명합니다.

전제조건

  1. 이벤트가 이미 올바르게 구성되어 있고 이에 대한 통계가 수집되는 Amplitude의 프로젝트
  2. Python이 설치되어 있습니다(저는 버전 3.8.3에서 작업 중입니다). 잠재 독자는 이미 최소한 기본 수준에서 작업할 수 있습니다.

교수

1단계. API 키 및 비밀 키 얻기

데이터를 업로드하려면 먼저 API 키와 비밀 키를 얻어야 합니다.

다음 경로를 따라가면 찾을 수 있습니다.

  1. "데이터 관리"(화면 왼쪽 하단에 위치)
  2. 데이터를 다운로드할 원하는 프로젝트를 선택하고 해당 프로젝트로 이동합니다.
  3. 열리는 프로젝트 메뉴에서 "프로젝트 설정"을 선택합니다.
  4. API 키와 비밀 키 문자열을 찾아 복사하여 안전한 장소에 저장합니다.

클릭하지 않고도 일반적으로 다음과 같은 링크를 따라갈 수 있습니다.
Analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
여기서 $$$$$$는 조직의 진폭 로그인이고 ******는 프로젝트 번호입니다.

2단계: 필요한 라이브러리가 있는지 확인

좋은 소식은 이러한 라이브러리가 기본적으로 이미 설치되어 있거나 다운로드되어 있다는 것이 거의 확실하지만 확인해야 한다는 것입니다. 글을 쓸 당시 사용한 라이브러리의 전체 목록(해당되는 경우 괄호 안의 버전이 표시됨):

  1. 요청 (2.10.0) - 데이터 수신을 위해 API를 통해 요청 보내기
  2. pandas(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 변수에 씁니다. 편의상 주기를 표시하고 + 진폭 데이터임을 나타냅니다. 다음으로 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 변환

아카이브에서 파일을 추출한 후 추가 작업을 위해 json 파일을 .gz 형식으로 변환하고 데이터 프레임에 작성해야 합니다.

여기에서 경로를 다시 자신의 경로로 변경하고 000000 대신 Amplitude에서 프로젝트 번호를 작성해야 합니다(또는 아카이브가 추출된 경로를 수동으로 열고 내부 폴더 이름을 확인하세요).

순서대로:

변수에 디렉터리 쓰기, 디렉터리에서 파일 목록 가져오기, 빈 데이터 프레임 생성, tqdm이 올바르게 작동하도록 time.sleep(1), 루프 내에서 .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로 업로드하는 것은 여기서의 예일 뿐입니다. 많은 경우 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 - 클라이언트 ID, 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))

출처 : habr.com

코멘트를 추가