전체 글 36

[책 리뷰] 데이터 과학자 원칙

- 제목: 데이터 과학자 원칙 - 저자: 권정민, 권시현, 김영민, 김진환, 박준석, 변성윤, 이정원, 이진형, 이제현 - 출판사: 골든래빗 - 출반사 책 설명: “데이터 과학자는 뭐하는 사람일까? 지금처럼 하면 되는 것일까? 나도 선배 데이터 과학자들처럼 성장할 수 있을까? 3년 10년 후에도 생존할 수 있을까? 데이터 분석 환경이 이다지도 척박한데 어떻게 데이터 분석을 한단 말인가? 팀워크는, 팀빌딩은 도대체 어떻게 해야 하는 걸까?” 데이터 과학자로 살아가면서 하루에도 천 번을 되묻는 물음에 아마존, IDT, 빅쏠, 우아한형제들, 코드스테이츠, 쏘카, 삼성전자, 11번가, 페블러스 전현직 데이터 과학자 9명이 답합니다. 데이터 과학자, 데이터 엔지니어, 데이터 분석가뿐만 아니라 데이터를 활용하는 비..

Activities/리뷰 2023.12.16

[Airflow] dag 스케쥴 관련 date 정의 알아보기 (start_date, execution_date, schedule_interval)

개요 Apache Airflow는 데이터 파이프라인 관리와 작업 스케줄링을 위한 오픈 소스 플랫폼으로, 데이터 엔지니어링 및 데이터 과학 작업에서 널리 사용됩니다. 저도 올해 처음으로 해당 플랫폼을 사용하여 데이터 ETL 작업을 처리했습니다. 작업 중에 가장 헷갈렸던 여러 기준의 date 들을 한번 자세히 정리해보겠습니다. 태스크 스케줄링의 중요성 Apache Airflow는 작업 스케줄링 및 자동화를 위한 강력한 도구입니다. 사용자는 작업의 실행 시간, 간격 및 의존성을 정의하고, Airflow는 해당 작업을 예약된 시간에 실행하거나 재시도할 수 있습니다. Airflow에서 작업은 Directed Acyclic Graph (DAG)로 구성됩니다. DAG는 여러 작업(Task)으로 구성된 워크플로우를 나..

2023년 상반기 회고

회고의 목적 올해부터는 나의 생활, 공부, 커리어를 주제로 매년 목표를 세우고 반기마다 회고하기로 다짐했습니다. 연초에 목표를 공유하지는 않았지만, 이번 기회에 올해의 목표가 무엇이었는지 되돌아보며, 잘 지켜지고 있는지, 목표를 향해 방향을 맞게 설정하였는지, 어떤 점에서 어려움을 겪었는지 생각해 보고자 합니다. 그리고, 앞으로 남은 6개월의 방향을 다시 잘 잡는 데 목적을 두고 있습니다. 올해의 목표 (였던 것) 올해의 목표는 아래 표와 같이 설정했습니다. 아래는 대표적인 내용만 적었지만, 구체적인 실천 방안도 함께 세웠습니다. 생활 분야와 관련된 내용은 1순위인 건강 관련 내용만 언급하도록 하겠습니다. 우선순위 / 분야 생활 개인적인 공부 커리어 1 건강하기 - 운동, 식단, 영양제 영어 - 뉴스프레..

Activities/회고 2023.07.16

Elasticsearch 문서 업데이트 (document update)

이미 인덱싱되어 있는 문서의 데이터를 변경할 경우에는 Update 요청을 사용합니다. Update 요청으로 어떻게 지정된 스크립트를 사용하여 문서를 업데이트하는지 예제와 함께 주의할 점도 알아봅시다! Update Request 는 다음과 같이 보낼 수 있습니다. POST //_update/ Update 실행 시 문서의 버전이 증가합니다. 스크립트와 함께 문서 업데이트가 가능한데, 이때 스크립트는 문서를 업데이트하거나 삭제하거나 수정을 건너뛸 수도 있습니다. 문서 일부분만 전달하여 기존 문서와 병합할 수도 있습니다. 굳이 전체 문서 내용을 전달할 필요가 없어 기본 인덱싱 파이프라인과 다르게 수행되어야 하는 등 다른 파이프라인으로 업데이트 되는 내용에 대하여 부분 업데이트가 가능합니다. 인덱스에서 문서를 가..

[Basic] Elasticsearch 문서 인덱싱 - Index, Delete, Update, Bulk

이번 글에서는 지난 글에서 직접 구축했던 인덱스에 도큐먼트를 인덱싱하고, 삭제하고, 업데이트 하는 방법을 알아보고자 합니다. 지난 글을 읽지 않았어도, 인덱스 생성에 관해 매핑, 분석, 설정 등 기본적인 지식을 알고 있다면, 본 글을 쉽게 이해하실 수 있습니다! Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 도큐먼트를 인덱싱 할 대상 인덱스는 다음과 같이 정의하였습니다. PUT /sample-user-index { "mappings": { "properties": { "age": { "type": "integer", }, "level": { "type": "keyword" }, "name": { "type": "text",..

[Basic] Elasticsearch 간단한 인덱스 구성하기 실습 - Mapping, Analysis, Similarity, Setting

지난 글들에서 간단하게 살펴본 내용을 바탕으로 오늘은 직접 샘플 인덱스를 구축해보려고 합니다. 간단한 필드 구성을 가진 인덱스를 생성하면서, 언급했던 일부 인덱스 모듈 내용을 추가해봅시다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. Mapping 유저에 관련된 필드 "age", "level", "name"를 가진 "sample-user-index"를 생성합니다. 각각의 필드에 대해 유형을 정의할 수 있습니다. integer 유형은 말 그대로 32비트 정수를 의미합니다. keyword 와 text 유형은 둘다 텍스트에 관한 유형이지만, 전자는 term level search, 후자는 full-text search를 지원한..

[Python] Iterable 과 Iterator의 차이

개요 최근 빅쿼리를 사용하여 슬랙봇을 개발할 일이 있었습니다. 빅쿼리 테이블에서 쿼리한 결과를 보기 좋게 편집하여 슬랙을 보내는 배치 서비스를 개발하는 중에 헷갈렸던 파이썬 개념이 있어 정리해 보려고 합니다. *해당 글은 다음 기준으로 작성되었습니다. python~=3.10 google-cloud-bigquery~=3.9.0 빅쿼리 패키지에서 쿼리 결과를 객체로 받아 사용하는 여러 가지 방법이 있습니다. 그중에서도 bigquery.Client.query().result()라는 함수를 사용하여 리턴되는 bigquery.table.rowiterator 객체를 바로 사용하려고 했었으나, for문 실행 중에 ‘iterator has already started'라는 오류가 발생하였습니다. 😭 파이썬의 기본 개념..

Coder/Python 2023.05.07

[글또] 글또 8기 중간 회고와 더 나은 글쓰기를 위한 액션 아이템

인트로 글또 8기가 시작한 지 벌써 3개월이 되어갑니다. 지난주, 글또를 운영하시는 변성윤님의 ‘기술 블로그 운영에 어려움을 겪는 분들에게 전하는 이야기’ 발표를 들었습니다. 일요일의 바쁜 일정 중 가장 마지막이어서 집중을 잘하지 못했음에도 불구하고 제게 와닿는 이야기들이 많았습니다. 예를 들면, 나는 왜 글을 잘 못 쓸까 하는 자책감이요. ㅎㅎ 오늘은 발표에서 인상 깊게 들은 부분을 기억하며 나의 지난 글과 글쓰기 습관을 돌아보고 스스로 선정한 액션 아이템의 결과를 공유하고자 합니다. 지난 글또 활동 회고 우선 지난 글또 활동 중 쓴 글을 돌아보자면, 4개의 글을 쓰고 1번의 패스를 사용했습니다. 4개의 글 중 1개의 글은 맨 처음 작성한 글또 다짐 글이었습니다. 나머지 3개의 글은 기술 & 언어 주제..

Activities/회고 2023.04.23

[Basic] Elasticsearch 인덱스(Index) 구성하기 (2)

오늘은 지난 글에 이어서, 인덱스를 구성하기 위한 요소들에 대해 알아봅시다. 지난 글에서는 인덱스 샤드 수, 레플리카 수 등 일반적인 설정을 정의할 수 있는 Settings와 각 필드의 속성과 전체적인 스키마를 정의하는 Mappings에 관해 알아봤습니다. 오늘은 나머지 2가지, 문자열 필드의 분석기 등을 설정하는 Analysis와 검색 시의 유사도를 정의하는 Similarity에 대해 추가로 알아보겠습니다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 분석(Analysis) 인덱스 분석 모듈은 문자열 필드를 개별 용어(term)로 변환하는 데 사용할 수 있는 분석기를 구성하도록 하는 레지스트리 역할을 합니다. 텍스트 분..

[Basic] Elasticsearch 인덱스(Index) 구성하기 (1)

검색 엔진을 구축하기 위해서 가장 먼저 필요한 것은 무엇일까요? 검색 대상이 되는 도큐먼트(Document)가 들어갈 수 있는 DB 같은 공간을 만들어야겠죠? 이번 글의 목표는 도큐먼트의 집합인 인덱스(Index)를 구성하는 요소를 이해하고, 예제를 통해 직접 인덱스를 정의하면서 ES에서 사용하는 기본적인 CRUD 방식에 익숙해지는 것 입니다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 인덱스 구성 요소 인덱스 모듈은 인덱스별로 생성되는 모듈로 인덱스와 관련된 모든 측면을 제어합니다. 일반적으로 인덱스를 정의할 때 사용되는 세부 모듈은 간략하게 다음과 같습니다. - 인덱스 샤드 수, 레플리카 수 등 일반적인 설정을 정의..