분류 전체보기 1188

[boto3] S3 특정 prefix 아래 모든 객체 가져오기

개요 Python에서 boto3을 이용해 S3 버킷에 저장된 객체 목록을 가져올 때는 list_object, list_object_v2 함수를 사용한다. 이 두 함수는 최대 1000개의 객체를 반환한다. 따라서 1000개 이상의 객체가 저장된 prefix에 대해 list_object를 요청해도 모든 객체를 반환받지 못한다. AWS에서 제공하는 Paginator를 사용해 문제를 해결해 보자. Paginator 사용 AWS operation 중 전체 결과 집합을 얻기 위해 후속 요청이 필요한 경우, 이전 요청이 중단된 곳에서 작업을 지속하기 위해 후속 요청을 보내는 프로세스를 pagination이라고 한다. Paginator는 API 작업의 전체 결과 집합에 대해 반복하는 프로세스에 대한 추상화 역할을 한다..

AWS 2023.05.23

[Superset] INTERNAL SERVER ERROR - missing_datasource

현상 2023.02.25 - [Superset] Chart 생성에서 살펴보았던 것처럼 Chart 페이지에서 새로운 Chart를 생성하려고 한다. Create a new chart 페이지에서 사용할 Dataset과 Chart 유형을 선택하고 CREATE NEW CHART 버튼을 클릭했더니, 아래와 같이 INTERNAL SERVER ERROR가 발생하면서 선택한 Dataset이 해제되는 현상이 발생했다. 원인 로그를 보면 아래와 같은데…… 어떤 부분이 원인인지는 잘 모르겠다. 2023-05-07 06:43:09,828:ERROR:root:DAO datasource query source type is not supported Traceback (most recent call last): File "/usr/..

Apache Superset 2023.05.22

[Airflow] @task_group으로 TaskGroup 정의

개요 2023.05.20 - [Airflow] TaskGroup에서 TaskGroup의 개념을 알아보고, 사용방법을 정리했다. 이 글에서는 TaskFlow API로, 즉 @task_group을 이용해 TaskGroup을 정의하는 방법을 정리한다. 예시 dag @task_group를 사용하지 않고 정의한 아래 dag를 데코레이터를 이용해 다시 작성한다. import datetime from airflow import DAG from airflow.utils.task_group import TaskGroup from airflow.operators.bash import BashOperator from airflow.operators.empty import EmptyOperator dag = DAG( dag_..

Apache Airflow 2023.05.21

[Airflow] TaskGroup

TaskGroups TaskGroups은 Graph view에서 Task를 계층적인 그룹으로 구성할 때 사용한다. 반복적인 패턴을 만들고 시각적인 혼란을 줄이는데 유용하다. Task 실행 순서 등에는 영향을 미치지 않으면 단순 UI 그룹 개념이다. 이 글에서는 사용 방법을 간단히 정리한다. TaskFlow API를 사용하지 않는 방법으로 소개한다. 예시 dag 먼저 TaskGroup을 사용하지 않은 dag를 살펴본다. import datetime from airflow import DAG from airflow.operators.bash import BashOperator from airflow.operators.empty import EmptyOperator dag = DAG( dag_id="test_..

Apache Airflow 2023.05.20

[Airflow] @task를 이용한 Task 반복 생성

개요 2023.04.12 - [Airflow] Task 반복 생성에서 Operator 생성자를 이용해 task를 반복 생성하는 방법을 알아보고, 2023.04.23 - [Airflow] @task를 이용한 Task 선언에서 TaskFlow API를 이용해 task을 생성하는 방법을 알아보았다. 그렇다면 TaskFlow API를 이용해 task를 반복 생성해야 할 때는 어떻게 해야 할까? 방법을 정리한다. 예시) 생성자 사용 DAG 아래의 생성자를 사용한 dag를 TaskFlow API를 사용해 재정의해본다. from datetime import datetime, timedelta from time import sleep from airflow import DAG from airflow.operators...

Apache Airflow 2023.05.19

[MySQL] 이전 행, 다음 행 조회 (LAG/LEAD)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 2023.05.17 - [MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 LAG, LEAD 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NUL..

Database 2023.05.18

[MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE/NTH_VALUE)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 추출 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NULL, department varchar(50) NOT NULL, hours int NOT NULL, PRI..

Database 2023.05.17

[MySQL] 순위 함수 (RANK)

개요 MySQL 8.0부터는 Window 함수를 지원하면서 보다 편리하게 순위를 매길 수 있게 되었다. 순위 함수는 Window 함수 중 비집계 함수이며 OVER 절과 함께 사용해야 한다. MySQL에서 지원하는 순위함수는 RANK, DENSE_RANK, PERCENT_RANK, ROW_NUMBER 정도가 있다. 예시 데이터를 이용해 순위 함수의 사용 방법을 정리한다. 예시 데이터 아래의 사원 번호(empno), 사원 이름(ename), 직업(job), 급여(sal) 데이터로 구성된 테이블을 예시로 사용한다. DDL 더보기 CREATE TABLE emp ( empno int, ename varchar(30), job varchar(30), sal int ) INSERT INTO emp VALUES (79..

Database 2023.05.16

[MySQL] 집계 함수와 OVER 절

개요 2022.06.10 - [MySQL] MAX, MIN, COUNT, DISTINCT와 2023.05.14 - [MySQL] 윈도우 함수 - OVER 글에서 집계 함수와 윈도우 함수에 대해서 간단히 알아보았다. 이 글에서는 집계 함수와 OVER 절을 함께 사용하는 예시에 대해 알아보려고 한다. MySQL을 기준으로 확인해본다. 집계 함수 MySQL에서 제공하는 집계 함수는 다음과 같다. (참고 : 12.19.1 Aggregate Function Descriptions) 이름 설명 AVG() 인수의 평균값을 반환 BIT_AND() 반환 비트 AND BIT_OR() 반환 비트 OR BIT_XOR() 비트별 XOR 반환 COUNT() 반환된 행 수를 반환합니다. COUNT(DISTINCT) 다양한 값의 수..

Database 2023.05.15

[MySQL] 윈도우 함수 - OVER

윈도우 함수 (Window Function) 행과 행 간의 관계를 정의하기 위해 제공되는 함수이다. 데이터베이스를 다룰 때는 GROUPY BY와 COUNT, SUM과 같은 집계 함수를 많이 사용하는데, 윈도우 함수도 GROUP BY와 비슷하게 데이터를 그룹화하여 순위, 합계, 평균 등을 구할 수 있다. 다만 집계된 결과만 보여주는 GROUP BY와 다르게 기존 데이터에 집계된 데이터를 추가하여 보여준다. 즉, GROUP BY는 결과 데이터의 행 수가 줄어드는 반면 윈도우 함수를 사용하면 결과 데이터 행 수가 줄어들지 않는다. MySQL의 경우 8.0부터 윈도우 함수를 지원한다. 이 글에서는 간단히 윈도우 함수의 구조와 사용 예시를 정리한다. 구조 윈도우 함수는 아래와 같은 구조로 사용한다. FUNCTIO..

Database 2023.05.14