[MySQL] JSON_TABLE(), JSON_ARRAY()MySQL은 JSON 데이터 타입을 지원하면서 더 강력하고 유연한 JSON 처리를 제공하고 있다.특히 JSON_TABLE 함수는 JSON 데이터를 SQL 테이블처럼 다룰 수 있는 매우 유용한 기능이다. JSON_TABLE과 JSON_ARRAY 함수의 사용법과 예제를 통해 어떻게 JSON 데이터를 더 쉽게 다룰 수 있는지 알아보자.JSON_ARRAY여러 값을 JSON 배열로 생성할 때 사용된다. 이 값은 인자로 들어온 값을 JSON 배열 형식으로 반환한다. 사용법JSON_ARRRAY([val1,[, val2, ...]]) 예시SELECT JSON_ARRAY(1, 'apple', true, NULL);위 쿼리의 결과는 다음과 같은 JSON 배열을 ..
[MySQL] 데이터를 구분자로 Split 하기개요DB 테이블에 컬럼이 다음과 같은 형식으로 되어있는 데이터가 있었는데 구분자를 분리해서 개수가 몇개인지 카운트를 하고싶었다.test_columnsappleapple, bananabanana, pineapplepineapple MySQL에서 특정 문자를 기준으로 split 하는 함수에는 SUBSTRING_INDEX() 함수가 있는데,이 함수는 인덱스에 해당하는 라인만 뽑기 때문에 데이터가 많을 경우 원하는 결과를 얻기 위해선 프로시저를 사용해야 했다..😥 SELECT 문으로 데이터 하나 뽑자고 프로시저를 사용하는 건 너무 과한 것 같아 다른 방법을 알아보기로 했다. JSON_TABLE열심히 서칭한 결과 JSON_TABLE()이라는 아주 좋은 방법이 있었다..
[MySQL] INTERVALINTERVALINTERVAL은 주로 날짜 또는 시간 데이터와 함께 사용되며, 다양한 시간 단위를 더하거나 빼는 역할을 한다.MySQL에서는 특정 날짜 필드에 연산을 수행할 때 매우 간단하게 사용할 수 있도록 지원하고 있다. 날짜 또는 시간에 값을 더하거나 빼기-- 특정 날짜에 값을 더함DATE_ADD(날짜, INTERVAL 값 단위)-- 특정 날짜에서 값을 뺌DATE_SUB(날짜, INTERVAL 값 단위)예를 들어, 다음과 같이 고객의 주문이 완료된 날짜에 3일을 더해 예상 배송일을 계산할 수 있다.SELECT DATE_ADD(order_date, INTERVAL 3 DAY) AS expected_deliveryFROM orders;또한 다음과 같이 주문일이 30일 이상 ..
[MySQL] EXISTSEXISTSEXISTS는 MySQL에서 서브쿼리의 결과가 존재하는지 여부를 확인하는데 사용하는 조건문이다. 주로 특정 조건에 맞는 데이터가 존재하는지 여부를 확인할 때 사용하며, 참 또는 거짓의 값을 반환한다.EXISTS는 보통 SELECT문과 함께 사용되며, 데이터의 유무에 따라 로직을 결정하는 데 유용하다. 기본 구조SELECT 칼럼명FROM 테이블명WHERE EXISTS ( 서브쿼리);위 구조에서 EXISTS 안의 서브쿼리가 실행되며, 서브쿼리의 결과에 한 개 이상의 레코드가 존재하면 참을 반환하고, 그렇지 않으면 거짓을 반환한다. 작동 방식EXISTS는 서브쿼리가 반환하는 데이터를 확인하지 않는다. 대신, 서브쿼리가 최소한 한 개의 행이라도 반환하면 TRUE를 반환..
[MySQL] PERCENT_RANK() PERCENT_RANK()데이터 내에서 특정 값의 상대적인 순위를 백분률로 반환한다.0과 1사이의 값을 반환하며, 값이 0이면 가장 낮은 순위, 1이면 가장 높은 순위를 의미한다.PERCENT_RANK() OVER ([PARTITION BY partition_expression] ORDER BY order_expression) 동작 원리PERCENT_RANK()는 각 행의 순위를 기준으로 계산된다.$$PERCENTRANK()=\frac{Rank-1}{TotalRows-1}$$ 여기서 RANK는 해당 행의 순위이며, Total Rows는 전체 행의 수이다.ex) 데이터가 10개인 경우 PERCENT_RANK()는 각 행의 순위를 0부터 1까지 나눈 값을 반환한다...
SQL에서 조인은 데이터베이스에서 여러 테이블을 결합해 데이터를 조회할 때 매우 유용한 도구다.MySQL에서의 조인의 기본 개념과 사용법에 대해 알아보고자 한다. JOIN조인(Join)은 두 개 이상의 테이블을 결합해 하나의 결과 집합을 만드는 SQL 연산이다.조인은 주로 테이블 간의 관계를 정의하고, 그 관계에 기반해 데이터를 조회할 때 사용된다. MySQL에서 자주 사용되는 조인은 크게 네 가지로 나눌 수 있다.INNER JOIN일치하는 데이터만 필요할 때LEFT JOIN왼쪽 테이블의 모든 데이터를 포함할 때RIGHT JOIN오른쪽 테이블의 모든 데이터를 포함할 때FULL OUTER JOIN두 테이블의 모든 데이터를 포함할 때 INNER JOININNER JOIN은 두 테이블간의 교집합을 반환한다.즉..
[MySQL] SQL 변수 선언 및 사용MySQL에서 변수를 사용하는 것은 데이터베이스 내에서 반복 작업을 자동화하거나, 복잡한 쿼리를 간결하게 만드는 데 매우 유용하다. MySQL에는 주로 세 가지 종류의 변수가 있다. 1. 사용자 정의 변수 (User-Defined Variables)사용자 정의 변수는 세션 내에서만 존재하며, 주로 SELECT, INSERT, UPDATE 쿼리 내에서 사용된다.변수 이름 앞에는 항상 '@' 기호를 붙인다. 선언 및 사용법사용자 정의 변수는 별도의 선언 없이 바로 값을 할당하여 사용할 수 있다.-- 변수 @myVar에 100을 할당SET @myVar = 100;-- 변수 @myVar의 값을 출력SELECT @myVar;아래 예제는 'employees' 테이블에서 가장 ..
[Excel] VLOOKUP VLOOKUP함수는 엑셀에서 특정 값을 검색하고, 같은 행에 있는 다른 값을 반환하는 데 사용된다.데이터베이스와 같은 큰 데이터 세트에서 특정 항목을 빠르게 찾고 관련된 정보를 얻는 데 매우 유용하다. VLOOKUP 함수의 기본 구조VLOOKUP 함수의 기본 구문은 다음과 같다.=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])lookup_value검색할 값table_array검색 할 데이터 범위col_index_num검색된 값이 있는 행에서 반환할 열 번호range_lookup일치 유형을 지정 (TRUE-근사값 일치, FALSE-정확한 일치) 예를 들어 다음과 같은 제품 목록이 있다고 가정해보자. ABC1제..
[Airflow] Flower worker auto scale Flower는 Celery 클러스터를 모니터링하고 관리하기 위한 웹 기반 도구다. Flower는 Celery 이벤트를 이용하여 작업 진행 상황 및 내역등을 실시간으로 모니터링 할 수 있으며,웹을 통해 작업자 인스턴스 종료 및 다시 시작 등의 remote 컨트롤이 가능하다. Worker auto scale플라워에서 다음과 같은 설정을 조정할 수 있는 칸을 확인할 수 있다.Airflow 공식 문서에서의 work_autoscale에 대한 설명은 다음과 같다. work_autoscale부하에 따라 풀 크기를 동적으로 조정하는 데 사용되는 최대 및 최소 풀 프로세스 수이다.항상 최소 프로세스를 유지하지만, 필요한 경우 최대로 늘린다.max_concu..
[MySQL] DB 테이블 row 수 확인 전체 테이블 별 row count를 구하기 위해선 다음과 같은 Query를 사용할 수 있다.SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'DBNAME' ORDER BY table_name;
[Airflow] Docker compose Airflow에서 Cli 사용하기 docker compose는 컨테이너 환경에 Airflow를 띄우기 때문에 컨테이너 내부에 cli 명령어를 사용해야한다. 명령어를 사용하는 방법은 다음과 같다. docker compose run airflow-cli 명령어가 길기때문에 다음과 같이 alias로 등록해두고 사용하면 편하다. alias airflow='docker compose run airflow-cli' >> ~/.bashrc source ~/.bashrc
[etc] MapReduce 맵리듀스(MapReduce)는 대규모 데이터 집합을 처리하는 데 사용되는 프로그래밍 모델이다. 대규모 컴퓨팅 클러스터에서 병렬 처리를 수행하여, 데이터를 처리하고 분석하는 데 유용하다. 맵 리듀스는 일반적으로 맵, 리듀스 두 단계로 구성된다. 맵(Map) 단계 입력 데이터를 가져와서 여러 작은 부분으로 나눈 후에, 각 부분에 대해 지정된 함수(맵 함수)를 적용하여 중간 결과를 생성한다. 이 단계에서 입력 데이터를 키-값 쌍 형식으로 매핑한다. 예를 들어 아래와 같은 입력 데이터가 있다고 가정해보자. Hello world Hello there Hello world 위의 입력 데이터에서는 다음과 같은 키-값 쌍이 생성된다. ("Hello", 1),("World", 1) ("Hel..