python
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 3. 오픈은 실전etc. 2022. 9. 10. 01:32
두 번째로 만든 서비스는 'userSelector'였습니다. 이번에도 다짜고짜 코드 먼저 첨부합니다. 더보기 import streamlit as st import pandas as pd from datetime import datetime, timedelta st.set_page_config(page_title="userSelector", page_icon="📝", layout='wide') st.title("dat-a-dmin [userSelector]") ### @st.cache(ttl=10800) def get_categories(): engine = db.ps_engine() categories = pd.read_sql("select ", engine)['category'] return categ..
-
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 2. 페이지 작성etc. 2022. 9. 10. 01:00
Streamlit을 띄운 목적이 데이터 애드혹을 줄이는 것이었기 때문에, 주요 테이블을 조회하는 간단한 쿼리를 누구나 클릭 베이스로 작성할 수 있는 페이지를 가장 먼저 작성해 봤습니다. 부끄럽지만 전체 코드(일부를 제외한) 를 첨부합니다. 더보기 import streamlit as st import pandas as pd from datetime import datetime, timedelta st.set_page_config(page_title="queryMaker", page_icon="📝", layout='wide') st.title("dat-a-dmin [queryMaker]") ### d0_options = { "유저, 크리에이터": [""], "마케팅": [""], "사이트/앱 로그": [""..
-
사이즈가 큰 csv데이터 S3 -> redshift DB로 Copy하기About Data 2020. 12. 18. 17:27
약 7만 row, 40mb정도 되는 파일을 redshift로 올리기 위해 가장 먼저 아래와 같은 python 코드를 사용했었습니다. df.to_sql(tablename, if_exists = 'replace', con=engine, schema = schema, index=False) 그런데 이렇게 하고 redshift 쿼리 로그를 보니 무려 한 줄씩 일일히 insert로 들어가고 있던..... 한 줄마다 평균 0.5초씩만 계산해도 9시간이 넘게 소요되는 속도입니다. 이건 아니다 싶어서 방법을 찾다가 S3 버킷에 파일을 올리고 redshift copy문을 찾아서 적용해 봤습니다. 먼저 내용이 있는 데이터프레임을 csv형식으로 S3에 올리기 위해 사전 작업을 합니다. csv_buffer = StringIO..
-
Airflow 이용해서 Slack Bot 만들기 - 기초etc. 2020. 12. 17. 13:24
airflow에 있는 SlackAPIPostOperator를 활용해서 slack에 메시지를 보내 보려고 합니다. 먼저 슬랙에서 app을 만들어 줍니다. 다음으로 incoming webhooks를 활성화합니다. 슬랙 채널에 앱을 연동한 뒤 airflow dag를 작성합니다. from datetime import datetime, timedelta import airflow from airflow import DAG from airflow.operators.slack_operator import SlackAPIPostOperator default_args = { 'owner': 'rami', 'depends_on_past': False, 'start_date': datetime(2020, 12, 17, 10..
-
Airflow Dag 관리를 위한 Jupyter Lab 설치하기etc. 2020. 12. 17. 10:39
python 파일로 이루어진 Airflow Dag를 관리하는 데에는 여러 방법이 있습니다. 가장 보편적으로 git을 이용하는 것, 그리고 데이터 분석 목적으로 사용하는 데는 이런 방법도 있다고 해서 적용해 봤습니다. 물론 git처럼 버전 관리에 유용한 건 아니지만 jupyter notebook으로 테스트를 하면서 동시에 dag를 띄울 수 있어서 복잡하지 않은 dag를 관리하는 데는 나쁘지 않은 방법이라는 생각이 듭니다. 일단, docker를 통해 설치해 둔 airflow 컨테이너에 접속합니다. docker exec -it airflow /bin/bash 앞의 airflow 세팅 과정에서 miniconda도 설치되어 있기 때문에 바로 jupyter lab 셋업으로 넘어갑니다. 2020/12/15 - [et..
-
Airflow Macro PythonOperator에 적용하기etc. 2020. 12. 17. 09:44
Airflow Macro란? 지정된 변수를 호출해서 태스크에 적용할 수 있는 기능입니다. 만약 실행하는 코드에 날짜 설정이 now() 등으로 되어 있다면 backfill이나 과거의 작업을 재실행할 때 문제가 되는데, 이 때 {{execution_date}} 처럼 airflow task가 실행되는 날짜를 불러와서 적용할 수 있다는 것이 장점입니다. airflow.apache.org/docs/apache-airflow/stable/macros-ref.html Macros reference — Airflow Documentation airflow.apache.org BashOperator에서는 매크로를 그대로 기입하면 돼서 어려움이 없습니다. t2 = BashOperator( task_id='what_time..
-
AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (3) R 연동하기etc. 2020. 7. 1. 02:47
2020/07/01 - [etc.] - AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (2) Miniconda 활용 AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (2) Miniconda 활용 2020/07/01 - [etc.] - AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (1) EC2 인스턴스 생성 AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (1) EC2 인스턴스 생성 그동안 Anaconda를 통해 로컬에서 사용.. datarami.tistory.com Jupyter Notebook 설치가 완료된 후, 간단한 방법으로 R을 연동합니다. conda install -c r r-irkernel IRkernel 패키..
-
AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (2) Miniconda 활용etc. 2020. 7. 1. 02:35
2020/07/01 - [etc.] - AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (1) EC2 인스턴스 생성 AWS 서버를 활용한 Jupyter Notebook + R 세팅하기 (1) EC2 인스턴스 생성 그동안 Anaconda를 통해 로컬에서 사용했던 Jupyter Notebook을 어디서든 접속하고 싶다는 의욕(?)이 갑작스럽게 샘솟았습니다. 다양한 자료들을 참고하여 최근 버전에서 최대한 간단한 방법으로 세팅� datarami.tistory.com 이전 글에서 서버 접속까지 완료한 후, 본격적으로 Jupyter Notebook 세팅을 시작합니다. 보통 Anaconda를 이용해 설치하는 경우가 많았는데요, 서치를 하다 무거운 Anaconda 대신, conda와 python이 ..