전체 글
-
[Airflow] BigQueryExecuteQueryOperator 파티션 테이블 생성공부/데이터 2022. 5. 4. 21:04
아래와 같이 데이터가 있다고 가정합니다. select * from ( select date('2022-05-04') as dt, 1 as num union all select date('2022-05-04') as dt, 2 as num ) as t 위 쿼리 결과를 기준으로 dt를 day기준으로 파티션을 잡는다면 아래와 같이 진행할 수 있습니다. BigQueryExecuteQueryOperator( task_id="task_id", sql="test.sql", use_legacy_sql=False, time_partitioning={'type': 'DAY', 'field': 'dt'}, destination_dataset_table='프로젝트.데이터셋.테이블', write_disposition=Write..
-
퍼널 분석(Funnel Analysis)이란?공부/데이터 2022. 4. 24. 23:46
퍼널 분석(Funnel Analysis)이란? 퍼널 분석이란 퍼널은 깔때기라는 의미를 가지고 있습니다. 사용자들이 다양한 경로로 사이트에 들어오고 나가는 시점까지 특정 구간에 대한 데이터를 분석하여 나가는 시점과 이유를 밝힐 때 사용하는 분석 기법입니다. 깔때기 입구에서 아래로 내려갈수록 사용자가 진입하여 사이트를 보는 시간이 늘어난다고 볼 수 있는데 시간이 늘수록 이탈하는 사용자들은 많아집니다. 여기서 사용자들이 나가는 시점은 동일하지 않고 일정 부분에 몰려있을 수도 있는데 이러한 부분이 어디인지 집중적으로 관찰한다면 왜 사용자들이 거기서 나가는지에 대한 단서를 찾을 수 있습니다. 위에서 언급한 것과 같이 사용자들이 나가는 행위, 이탈하는 비율을 이탈률이라 하고 이 이탈률이 높은 시점을 찾고 분석하는 ..
-
[Python] requests 모듈 retry 추가하기언어/파이썬 & 장고 2022. 4. 24. 22:57
requests 모듈은 https://brownbears.tistory.com/198 와 같이 간단하게 사용할 순 있지만 retry 옵션은 존재하지 않습니다. 아래는 반복문, try-except문으로 retry 기능을 추가하는 것이 아닌 requests 모듈에서 제공하는 기능으로 retry와 알아두면 유용한 기능을 설명합니다. Session와 HTTPAdapter 클래스를 사용하여 retry 간단하게 구현하기 구현에 앞서 흔히 사용하는 requests 구조를 먼저 파악해 봅니다. requests 모듈은 보통 아래와 같이 사용합니다. import request requests.get('http://www.naver.com') # 또는 requests.request('get', 'http://www.nave..
-
[Git] 쉘 스크립트 권한 추가해서 푸시하기저장소/git 2022. 4. 13. 19:48
로컬에서 git에 배포 → 서버에서 해당 브랜치 내려받기 이후 쉘 스크립트의 권한을 서버 내에서 직접 변경하게 되면 git은 이를 파일 변경으로 판단하게 됩니다. 따라서 로컬에서 쉘 스크립트를 git에 배포할 때, 아래와 같이 권한을 업데이트 해줘야 합니다. 권한 확인 git ls-tree HEAD 현재 디렉토리에 위치한 파일들의 퍼미션을 확인할 수 있습니다. 가장 왼쪽에 숫자로 표시가 되는데 해당 숫자에서 뒤의 3자리가 644면 실행 권한이 없는 상태라고 볼 수 있습니다. 권한 추가 # git update-index --chmod=+x 쉘스크립트 파일 git update-index --chmod=+x run.sh 권한 제거 # git update-index --chmod=-x 쉘스크립트 파일 git u..
-
[Git] Branch 전략 - merge, rebase, squash란저장소/git 2022. 2. 27. 16:52
git에서 브랜치를 합치는 전략으로 merge, rebase, squash가 있습니다. merge merge는 가장 간단한 병합 방법으로 크게 2가지의 방식이 많이 사용됩니다. Fast-forward develop 브랜치에서 test-child라는 브랜치를 생성했다고 가정합니다. test-child 브랜치에서 작업을 하고 서버에 푸시까지 완료가 됐다면 아래와 같이 develop 브랜치보다 커밋 포인터가 한칸 위로 올라가있는 것을 볼 수 있습니다. * commit af320b4bc8b555b23e1340db4604958992be9836 (HEAD -> test-child, origin/test-child) | Author: brownbear | Date: Sun Feb 27 15:23:40 2022 +09..
-
[Bigquery] 시간, 숫자, 날짜 생성하기DB/Bigquery 2022. 2. 20. 17:17
PostgreSQL의 시간, 숫자, 날짜 생성하기와 마찬가지로 bigquery에서도 동일한 함수가 존재합니다. postgresql과 차이점은 오버로딩 개념으로 동일한 함수명으로 여러 타입을 받아서 처리했다면 bigquery는 각 타입마다 함수명이 다릅니다. generate_array(start, end [, step]) int타입의 숫자를 입력하여 생성할 때 사용하는 함수입니다. SELECT GENERATE_ARRAY(1, 5) AS example_array; +-----------------+ | example_array | +-----------------+ | [1, 2, 3, 4, 5] | +-----------------+ SELECT GENERATE_ARRAY(0, 10, 3) AS examp..
-
[PostgreSQL] 시간, 숫자, 날짜 생성하기 (generate_series)DB/PostgreSQL 2022. 2. 20. 16:40
파이썬과 같은 프로그래밍 언어에서 1~10까지의 수를 생성하거나 2022-01-01 ~ 2022-01-10 까지의 날짜를 생성하는 것은 반복문을 통해 쉽게 만들 수 있습니다. postgresql에서도 generate_series 함수를 사용하면 이러한 문제를 쉽게 해결할 수 있습니다. generate_series(start, stop, [step 또는 interval)) 3번째 인자는 입력된 타입이 int인지 timestamp인지에 따라서 step 이거나 inteval을 줄 수 있습니다. SELECT * FROM generate_series(2,4); generate_series ----------------- 2 3 4 (3 rows) SELECT * FROM generate_series(5,1,-2)..
-
[Airflow] TriggerDagRunOperator execution_delta, execution_date_fn 사용하기공부/데이터 2022. 2. 20. 01:14
TriggerDagRunOperator는 여기에서 설명이 되어 있습니다. TriggerDagRunOperator를 사용하기 위해선 참조할 dag의 schedule interval과 동일해야 합니다. 만약 참조할 dag와 다른 schedule interval을 사용할 경우 execution_delta 와 execution_date_fn 둘 중 1개를 사용해야 합니다. execution_delta 옵션은 datetime 모듈의 timedelta 클래스를 사용하는 옵션이고 execution_date_fn 은 함수를 입력하여 함수식을 작성하는 옵션입니다. 예시 참조할 dag의 속성이 아래와 같이 설정되어 있다고 가정합니다. DAG( schedule_interval="0 * * * *", dag_id="paren..
-
[Python] pre-commit, black, flake8 적용하기언어/파이썬 & 장고 2022. 2. 6. 15:36
git hook을 사용하여 커밋하기 전에 code style chek, formmatter, test 등등과 같은 사용자가 원하는 동작을 처리할 수 있습니다. 사용자가 추가한 단계에서 실패가 되면 커밋은 이뤄지지 않기 때문에 프로젝트의 품질을 올릴 수 있는 좋은 도구입니다. 여기서는 pre-commit을 사용하여 flake8로 코드 스타일을 체크하고 black으로 자동으로 코드 포매팅을 하도록 설정하도록 합니다. 아래는 변경된 파일부터 pre-commit, commit 의 과정을 설명하는 예시입니다. pre-commit 설치 $ pip install pre-commit # 또는 $ brew install pre-commit $ pre-commit --v pre-commit 2.17.0 설정 pre-com..
-
[Git] 체리픽 (Cherry-pick)저장소/git 2022. 2. 5. 19:49
git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다. rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다. cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다. 커밋 체리픽 아래와 같이 있다고 가정할 때, feature/#1 브랜치의 커밋 중 34b4cab 와 13f03ab 를 현재 master 브랜치에서 적용한다고 하면 다음과 같이 진행할 수 있습니다. # git cherry-pick {커밋 해시} git cherry-pick 34b4c..