https://cloud.google.com/bigquery/docs/authentication/service-account-file?hl=ko
서비스 계정 입력 후 완료
만든 계정을 누르고 키에 들어가서 json 파일 생성
서비스계정에 권한 추가
pip install --upgrade google-cloud-bigquery
project id 확인 방법
빅쿼리 연동 및 확인 코드
from google.oauth2 import service_account
from google.cloud import bigquery
SERVICE_ACCOUNT_FILE = "./api_key.json" # 키 json 파일
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE)
project_id = "bigquery-test-408414" # 각자 프로젝트에 맞게 수정
client = bigquery.Client(credentials=credentials, project=project_id)
def import_bigquery_data(query):
query_job = client.query(query)
return query_job.to_dataframe()
data = import_bigquery_data('''
SELECT *
FROM `bigquery-public-data.google_trends.international_top_rising_terms`
WHERE refresh_date = '2024-08-01'
LIMIT 10
;
''')
data.head()
안녕하세요! 메타코드 무료 강의 내용 중 질문이 있어 댓글 남겨요.
bigquery 실습 문제 중 TRAFFIC SOURCE 별 전체 sessions, 구매 sessions, 구매 sessions/전체 sessions 을 해결하기 위한 쿼리 작성에 관한 질문입니다.
저는 동일한 세션id 내에서 여러 이벤트가 발생할 수 있고 그 중 purchase인 경우에 관심있기 때문에 중복을 제거한 고유한 세션id 기준으로 purchase 이벤트가 발생한 경우를 고려하여 쿼리를 작성하였습니다. 논리적으로 문제가 있는지 피드백 주시면 감사드리겠습니다!!
WITH T1 AS (
SELECT e.session_id,
e.traffic_source,
MAX(case when e.event_type = 'purchase'then 1 else 0 end) as is_purchase # COUNTIF(e.event_type='purchase') > 0
FROM
bigquery-public-data.thelook_ecommerce.events
eWHERE e.created_at BETWEEN '2023-01-01' AND '2024-01-01'
GROUP BY 1,2
)
SELECT traffic_source,
count(session_id) as session_of_total,
sum(is_purchase) as session_of_purchase,
round(sum(is_purchase)/count(session_id)*100,2) as ratio
FROM T1
GROUP BY 1
좋은 강의 감사드립니다:)