목록Skillset (56)
Yours Ever, Data Chronicles
Admin이 특정 role에게 권한을 줄 때 사용할 수 있는 여러 명령어에 대해 알아보자. 1. 신규 Role 생성하기--예시: de_user 생성create user de_user password 'password'; 위 쿼리를 날려 'de_user' 라는 신규 role 을 생성할 수 있다.참고로, 보통 패스워드는 영어 대문자, 소문자, 특수문자, 숫자를 포함하여 생성한다.이제 밑에서 이 'de_user' 라는 role에게 권한을 부여해보자. 2. Role에게 "특정 스키마 내" 테이블 권한 부여하기 이미 스키마 내에 생성되어 있는 테이블에 대해 select(조회), insert(삽입), update(업데이트), delete(전체삭제), truncate(테이블 틀 유지하되 내용만 삭제) 권한은 다음 쿼..

GA4에서 event_timestamp는 연-월-일-시에 대한 시간 데이터를 unix time형태로 제공한다.이를 연-월-일-시로 바꿔서 보기 위해선 다음 사이트에서 변환이 가능하다. Epoch Converter Epoch ConverterConvert Unix Timestamps (and many other date formats) to regular dates.www.epochconverter.com 근데 우리는 하나의 시간만 변환할 것은 아니므로 쿼리를 통해 epoch 를 timestamp로 변환해야 한다.timestamp 'epoch' + event_timestamp * interval '1 second' 보통은 위와 같이 하면 timestamp 형태로 변환된다.그러나 이런 에러가 뜰 것이다. 그..

회사에서 데이터 배치를 할 때 Airflow를 사용하고 있는데, 일일이 이 배치가 잘 돌아갔는지를 체크하는 것이 번거로울 때가 많습니다.이 때, Slack과 Airflow를 함께 연결하여 Airflow의 배치 결과를 Slack에 알림이 올 수 있도록 설정하는 방법을 알아봅시다. Slack에 채널 생성하기우선 Slack 내에서 알림을 받고자 하는 채널을 만듭니다. 저는 "dw-배치확인" 이라는 채널에서 알림을 받고자 합니다. 채널을 생성한 후 채널의 '정보'에 들어가면 위와 같이 하단에 "채널 ID"가 표시됩니다. 이 ID를 복사합니다. 또한 해당 채널에 AirflowBot을 추가해줍니다. 채널 내 '통합'에 들어가 '앱 추가' 버튼을 눌러 추가해줍시다. Airflow Dag에 Slack 채널 ID를 삽입..

안녕하세요 Everly입니다 :)저는 회사에서 업무를 할 때나, 개인적으로 업무관리/독서록/일기/여행일정 등등 다양한 용도로 Notion(노션)을 사용하고 있는데요.노션을 쓰면서 '자동화 버튼'을 활용하면 좀 더 편하게 테스크를 관리할 수 있겠더라구요! 그래서 요 자동화 버튼을 어떻게 활용하면 좋을지를 오늘 설명드리고자 합니다. 우선 저는 회사에서 Weekly Task를 노션을 통해서 관리하고 있는데,매주 월요일마다 이번 주에 해야 할 일을 적는 게 꽤 귀찮은 일이더라구요. 매주 적는 내용도 비슷한데, 양식을 만들어 두면 좀 더 편하게 내용을 정리할 수 있지 않을까 싶었어요. 아래는 제가 만든 샘플 페이지인데, '🍑 Everly 위클리 생성' 이라는 버튼을 누르면 아래 보드에 위클리 페이지가 하나씩 생..
오늘은 Redshift에서 프로시저를 만드는 쿼리문에 대해 소개한다.프로시저(procedure)란, DB에서 일어나는 일련의 작업을 정리한 절차를 쿼리로 작성하여 관계형 데이터베이스(RDBS) 시스템에 정리한 것을 이야기한다. 그래서 '프로시저를 돌린다' 라는 것은 프로시저를 call 하여 어떤 동작을 일괄적으로 처리하는 것을 의미한다. 굉장히 편리한 기능! 나는 AWS Redshift를 사용하고 있어 이에 따른 프로시저문을 쓰는데, postgresql에도 동일하게 적용되니 참고하자.또한 DB를 다루는 툴로는 DBeaver를 사용하고 있다. DBeaver에서 프로시저를 만들 때의 절차는 다음과 같다. 1. script에 프로시저문을 입력한 후, 전체선택 (ctrl+A) → alt+X 눌러 프로시저문 저장..

저번 포스팅에서는 네이버 쇼핑 페이지에서 '샤인머스캣'을 검색한 후, 해당 페이지에 있는 판매자 정보를 크롤링해보았다. 하지만 저번에 했던 방법에서 보완할 부분이 있었는데, 그것은 바로 전체 페이지에 나온 상품이 전부 크롤링되지 않는다는 점이었다. 위 이미지는 내가 크롤링하려고 하는 화면이다. 자세히 보면, 검색 결과를 "40개씩 보기"로 필터링을 해 두었기에 한 화면에 상품이 40개씩 나오지만 저번 포스팅에서 만든 코드를 돌려 보면 5개의 상품만이 뽑혔다.
저번 포스팅까지는 네이버 쇼핑 검색결과를 Selenium, Beautifulsoup 라는 파이썬 패키지를 활용하여 크롤링하였다. 이렇게 크롤링한 결과도 꽤 괜찮았지만, 여기엔 3가지 문제가 있었다. 첫번째, 중간에 안 긁어지는 부분이 있다. ➡️ 검색결과 로딩이 느려 안 긁어와지는 부분은, 페이지를 맨 끝까지 내리는 방법으로(관련 포스팅) 해결하였다. 그러나 이 외에도 검색결과를 많이 수집하는 경우(검색 결과 페이지를 5페이지 이상) 중간에 안 긁히는 부분이 발견되었다. 두번째, 이미지를 긁어오기 어렵다. 마지막으로, 많은 양을 크롤링하는 경우 시간이 많이 걸린다. 그래서 이번 장에서는 네이버 개발자센터에서 제공하는 네이버 API를 활용하는 방법을 포스팅한다. 앞서 이야기한 3가지 방법을 이 방법으론 전..

데이터 엔지니어링에서 자동화 배치를 만들기 위해 Airflow를 자주 사용한다. 하나의 배치를 DAG이라 하는데, 배치를 만들면 당연히 자동적으로 수행하게 만들어야 한다. 이번 포스팅에선 dag을 자동적으로 실행하기 위해 스케쥴을 거는 방법을 살펴보자. 보통 DAG에 스케쥴을 거는 데에는 다음의 코드를 사용한다. 어떤 의미인지 하나씩 알아보자. with DAG(dag_id=DAG_ID, default_args=args, start_date=datetime(2021, 1, 1, 0, 0, 0), schedule_interval="0 0 * * *", catchup=False ) as dag: start_date: DAG의 시작 지점 execution_date: 해당 Task가 실행하고자 하는 Time wi..

저번 포스팅에서는 Python selenium, beautifulsoup를 활용하여 네이버 쇼핑에서 '샤인머스캣'을 검색한 결과 중 제목을 뽑아오는 데에 성공했다. 이번 포스팅에서는 판매자, 가격, 등록일, 상품 URL 정보를 뽑아보자! 이번에 사용하는 방법도 아까 전에 사용한 방법과 크게 다르지 않다. 크롬 개발자모드로 들어가 html을 보면서 beautifulsoup(bs) 를 활용해 값을 하나씩 쏙쏙 뽑아오면 된다. 먼저 전체 상품 40개(1페이지에 있는 상품이 40개이므로)에 대한 정보를 담은 'goods_list'를 만든다. 이는 이전 포스팅에서도 나왔지만 전체상품 정보가 있는 html 클래스 이름이 li.basicList_item__0T9JD 이므로 사용해주었다. soup = Beautiful..

최근 파이썬으로 크롤링할 일이 생겼는데, 여러 방법을 동원하며 얻은 새로운 정보들이 있어서 이를 정리할 겸, 공유 목적으로 포스팅해보고자 한다 :) 내가 크롤링한 페이지는 네이버 쇼핑 검색 결과 페이지인데, 얻고자 한 결과물은 다음과 같은 엑셀 파일이었다. 네이버 쇼핑 페이지에 '샤인머스캣'을 치고, "리뷰 많은순"으로 정렬해서 나온 값을 뽑았다. 내가 원하는 정보는 이런 값들이었다. 상품명 판매처에서 올린 이미지 판매처 판매처 판매가 상품 URL 그리고 다음과 같은 시행착오를 거쳤다. 먼저 파이썬 Selenium, BeautifulSoup를 활용하여 자동화된 크롬 창을 띄워놓고 긁어오는 방식을 사용 장점: 가장 간단하고 많이 알려진 방식 단점: 정보가 중간에 안 긁어지는 케이스가 있다. (그 이유는 포..