MY FIRST DBT - (1) Bigquery 연결해보기 + 폴더 구조에 대한 가벼운 이해
딥상어동의 딥한 프로그래밍/엔지니어링2024. 11. 10. 20:43MY FIRST DBT - (1) Bigquery 연결해보기 + 폴더 구조에 대한 가벼운 이해

들어가며데이터 업무하다 보면 마주하는 케이스 (1) A님 갑자기 제 배치가 안돌아요- 아 alpha_omega 테이블 참조하셨죠? 그거 오늘부터 alpha_beta로 적재됩니다~(2) 뭐야 휴지는 없어도 휴지심은 있어야 되는데? (갑작스러운 null 출현) dbt공홈 문서를 보다보면 유독 자주 등장하는 단어가 있다. “software engineering” 한발 더 나아가서data analysts should adapt similar practices and tools to software developoers 이렇게 까지..! 얘기를 한다. 물론, 분석하기도 바쁜 상황이지만.. dbt를 사용하면Version Control - Analytic code는 반드시 버전 관리를 해야 함, 비즈니스 요구 ..

Airflow DAG 개념 톺아보기 (설치/실행 과정 포함)
딥상어동의 딥한 프로그래밍/엔지니어링2024. 10. 13. 17:18Airflow DAG 개념 톺아보기 (설치/실행 과정 포함)

들어가며최근 들어, 팀 내에서도 그리고 글또에서도 새로운 환경에서 ETL 파이프라인을 구축해 볼 기회가 생김에 따라 Airflow를 이전보다는 조금 더 깊게 알아야 할 필요성이 생겼다. 이에 따라, Airflow를 공부하며 관련된 내용들을 정리해보는 중인데, 오늘은 나와 같은 초보자의 관점에서 Airflow를 테스트 환경을 구성하고 DAG을 만들고 실행하는 과정에서 몇 가지 기본적인 개념들을 다루어보고자 한다.DAG란?Airflow is a platform that lets you build and run workflows. A workflow is represented as a DAG (a Directed Acyclic Graph), and contains individual pieces ..

우당탕탕 슬랙 메시지 저장기(2) - 게시글과 쓰레드 조회하기
딥상어동의 딥한 프로그래밍/엔지니어링2023. 5. 21. 23:56우당탕탕 슬랙 메시지 저장기(2) - 게시글과 쓰레드 조회하기

슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비웁니다. 이에 따라 추후 백업 및 활용 용도로 메시지를 저장하는 프로젝트를 진행했었습니다. https://gibles-deepmind.tistory.com/entry/%EC%9A%B0%EB%8B%B9%ED%83%95%ED%83%95-%EC%8A%AC%EB%9E%99-%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%A0%80%EC%9E%A5%EA%B8%B01-%EC%8A%AC%EB%9E%99-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%84%8C-%EB%88%84%EA%B5%AC%EB%83%90 우당탕탕 슬랙 메시지 저장기(1) - 슬랙 메시지 넌 누구냐? 슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비..

우당탕탕 슬랙 메시지 저장기(1) - 슬랙 메시지 넌 누구냐?
딥상어동의 딥한 프로그래밍/엔지니어링2023. 5. 7. 23:39우당탕탕 슬랙 메시지 저장기(1) - 슬랙 메시지 넌 누구냐?

슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비웁니다. 이에 따라 추후 백업 및 활용 용도로 메시지를 저장하는 프로젝트를 진행했었습니다. ※음슴체주의※ - 슬랙에서 데이터를 저장하는 방법은 크게 두 가지가 있음 - 하나는 설정 및 관리 → 워크 스페이스 설정 → 데이터 가져오기/내보내기 → 데이터 내보내기 - 다른 하나는 API를 이용하는 방법. https://api.slack.com/methods/conversations.history - API를 이용해 슬랙 데이터를 저장하는 방법에 대해 시리즈 글로 남길 예정. (본 글은 성윤님께서 진행하신 genie 프로젝트를 기반으로 작성하였습니다.) https://github.com/geultto/genie GitHub - geultto/g..

[Grab] 수백만건의 주문을 저장하고 처리하는 노하우 (feat. DynamoDB)
딥상어동의 딥한 프로그래밍/해외기술블로그번역2023. 4. 9. 04:56[Grab] 수백만건의 주문을 저장하고 처리하는 노하우 (feat. DynamoDB)

들어가며 - Grab은 스마트폰 기반의 동남아시아 승차 공유 서비스이다(- 위키 백과 -). - 지금은 그랩페이, 익스프래스, 프레쉬... 등 다양한 사업 분야 진출해 있는 소위 말하는 "슈퍼앱"이다. - 지금은 처분했지만 한동안 그랩의 "주주"였다. - 그래서, 조금은 뜬금없지만 언젠가 재진입할 날을 고대하며, 그랩의 테크 블로그 글 들에 대해 번역해보려 한다. Grab Food - 오늘 번역하려고 하는 글을 Grab의 여러 서비스들 중 Grab Food를 대상으로 한다. https://www.grab.com/global/ko/food/ Grab Food | 동남아시아에서 간편한 음식 배달을 원하시면 다운로드하세요 동남아시아에서 여러분의 입맛을 사로잡을 음식을 GrabFood를 통해 모두 주문하세요. ..

데이터 마트에서는 뭘 파나요?(feat. OLTP, OLAP)
딥상어동의 딥한 프로그래밍/엔지니어링2023. 3. 26. 04:28데이터 마트에서는 뭘 파나요?(feat. OLTP, OLAP)

자~데이터 담으러 가자(feat.안내상님, 송곳) - 들뜬 마음으로 마트에 방문한 A씨. - 어라? 그런데 구매하려고 했던 바나나가 없다. - 바나나 다 팔렸나요? 질문을 남긴 안씨. 직원C씨는 알아 보고 오겠다는 말을 남긴채.. 다시 돌아오지 않았다. - 왜 직원은 돌아 오지 않았을까? 1. 화장실이 급해서 2. 갑자기 관둠 고민에 빠진 직원 - 정답은 둘다 아니다. - C씨는 A씨의 질문을 받자 말자 곧장 마트 창고로 달려갔다. - 창고에도 남은 바나나가 없었다. - 하지만, C씨는 일전에 있는 재고를 없다고 하여 혼난 적이 있다 - 또 혼나기 싫었던 C씨 확실히 확인하기 위해 사내 데이터 베이스에 먼저 접속했다. 상품 상태 테이블 발주일자 상품명 발주물량 상태 업데이트일자 2023-03-10 Sup..

API를 글로 배웠어요 (feat. REST)
딥상어동의 딥한 프로그래밍/개발도구(git등)2023. 2. 9. 23:50API를 글로 배웠어요 (feat. REST)

Interface 인터페이스란? 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면. 즉 사용자가 기기를 쉽게 동작시키는데, 도움을 주는 시스템 - 위키백과 인터페이스의 정의는 "접점"/"경계면"이다. 그리고, 그 접점/경계면을 통해 정보나 신호를 주고 받는다. 대표적인 인터페이스의 예시로 컴퓨터 본체 뒷면을 들 수 있다. HDMI 포트는 HDMI 케이블을 연결하여 정보를 모니터로 송출하는 인터페이스다. 모니터는 HDMI 포트라는 인터페이스를 통해 본체와 상호작용(본체의 정보를 수신하여 출력)한다. 이처럼 인터페이스는 두 가지 기능을 한다. 1. 두 대상이 만날 수 있는 접점을 제공한다. 2. 두 대상이 상호작용(=정보교환) 할 수 있도록 한다. 그런데, 한 가지 중..

[Bigquery] 지난 며칠 간 Python과 연동하여 사용한 소감
딥상어동의 딥한 프로그래밍/엔지니어링2023. 1. 18. 00:56[Bigquery] 지난 며칠 간 Python과 연동하여 사용한 소감

지난 며칠 간 빅쿼리를 파이썬과 연동해서 사용하였다. pip install google-cloud-bigquery 파이썬과 연동해서 사용하기 위해서는 Client 객체를 사용해야 한다. 공식 Documnet에서 Client 인스턴스에서 사용할 수 있는 method 목록을 확인할 수 있다. https://cloud.google.com/python/docs/reference/bigquery/latest/google.cloud.bigquery.client.Client#google_cloud_bigquery_client_Client_query Class Client (3.4.0) | Python client library | Google Cloud Send feedback Class Client (3.4.0) ..

[도커] 컨테이너 삭제
딥상어동의 딥한 프로그래밍/엔지니어링2022. 12. 8. 22:51[도커] 컨테이너 삭제

핵심내용 도커 컨테이너를 정리하는 방법에 대해서 다루고자 한다. 일단 정지용 도커 컨테이너를 삭제하기 전에 우선, 도커를 먼저 정지해야 한다. 왜냐하면, stop후 삭제하는 과정을 통해 삭제하는데 필요한 충분한 시간을 벌 수 있기 때문이다. (다만, 정지를 하지 않고도 삭제를 강제할 수 있기는 하다.) 그래서, 컨테이너를 삭제하기 전에 도커를 먼저 정지해야 한다. 1. 하나의 컨테이너를 정지하는 경우 docker stop [OPTIONS] CONTAINER [CONTAINER...] 컨테이너 아이디나, 혹은 이름을 넣어준다. 2. 여러개의 컨테이너를 정지하는 경우 docker stop container1 container2 컨테이너 이름이나 아이디를 띄어쓰기로 입력해준다. 3. 특정 이미지와 연관된 모든..

[Type hint] spark.DataFrame VS pd.DataFrame
딥상어동의 딥한 프로그래밍/Spark2022. 10. 6. 23:29[Type hint] spark.DataFrame VS pd.DataFrame

핵심내용 pyspark의 데이터프레임과 pandas 데이터프레임의 type hint를 비교해봅니다. type hint 비교 아래와 같이 라이브러리를 생성해줍니다. from pyspark.sql import * from pyspark.sql.types import * from pyspark.sql.functions import * import pandas as pd 그리고, pandas의 DataFrame과 pyspark의 DataFrame의 type을 비교해봅시다. print(type(spark.sql("select 1"))) print(type(pd.DataFrame([]))) 시작은 다르지만, 끝은 모두 DataFrame으로 동일합니다. 여기서 주목할점은 다음과 같은 라이브러리 임포트 형식인데요. f..

image