2024/08 22

[Python] Datetime - isoformat

개요최근 Airflow 2.5.1 버전에서 2.8.2 버전으로 업그레이드 테스트를 진행하고 있는데, Airflow의 Dag run context의 execution_date 값의 문자열 형식이 다음과 같이 바뀐 것 같다. 스케쥴에 의한 트리거매뉴얼 트리거2.5.12024-07-31T00:00:00+00:002023-05-10T01:51:17.686430+00:002.8.22024-07-31 00:00:00+00:002023-05-10 01:51:17.686430+00:00execution_date 값의 문자열 데이터를 파싱 하는 부분이 있어서... 변경된 형식을 기존 형식으로 변경하고 싶다.확인해 보니 기존 형식이 ISO 8601 형식인 것 같다. python에서 datetime 값을 ISO 8601 형..

Apache Airflow 2024.08.30

[MySQL/JDBC] User does not have access to metadata required to determine stored procedure parameter types.

현상JDBC를 통해 MySQL에서 사용 중인 프로시저 정보를 확인하려고 하면 아래와 같은 메시지와 함께 실패하는 경우가 있다.User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types.대충 보면 권한 문제처럼 보이는데…… 문제를 해결해보자.   원인에러 메시지..

Database 2024.08.29

[Python] redis - pub/sub 구현하기

개요2024.07.30-[Redis] Pub/Sub 개념, 2024.07.31-[Redis] Pub/Sub - 테스트에서 Pub/Sub 개념을 알아보고 간단히 테스트해 봤는데, 이번 글에서는 Python을 이용해 redis Pub/Sub 기능 구현해보려고 한다. + Python redis 라이브러리의 기본적인 사용법은 2023.06.03-[Python] redis 사용하기를 참고한다.  SubscribePython redis 라이브러리는 채널을 구독하고 새 메세지를 수신할 수 있도록 하는 pubsub 객체를 제공한다.import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)pubpub = r.pubsub()pubpub.s..

Python 2024.08.28

[MySQL] DIV - 나눈 몫 계산

개요프로그램에서 동작하고 있는 쿼리를 분석하다 모르는 예약어가 있어 정리해 둔다.  DIVx DIV y DIV는 두 수를 나눴을 때 그 몫을 반환하는 함수이다.(보통 데이터베이스 상에서 사칙연산과 관련된 함수를 쓸 때 괄호 안에 매개변수를 전달해 왔어서 몰랐다…….)두 수를 나눈 실수형 데이터를 반환하는 나눗셈(/) 연산자와 달리, DIV는 두 수를 나눈 몫에 해당하는 정수형 데이터를 얻을 수 있다.   테스트나눗셈 연산자와 DIV의 실행 결과를 비교한다. - 나누어 떨어지는 수SELECT 10 / 5 , 10 DIV 5 실행 결과| 10 / 5 | 10 DIV 5 || ------ | -------- || 2.0000 | 2 |  - 나누어 떨어지지 않는 수SELECT 11 / 5 ..

Database 2024.08.27

[Redis] List 다루기

개요2023.06.01-[Redis] redis-cli로 데이터 읽고 쓰기에서 set, get 명령으로 문자열 데이터를 읽고 쓰는 방법을 살펴보았었다. 이번 글에서는 Redis에서 List를 다루는 방법을 정리해 본다.  ListRedis는 리스트 형태의 데이터 타입을 지원한다.LPUSH, RPUSH 명령으로 데이터를 추가하고 LPOP, RPOP 명령으로 데이터를 꺼낸다. 데이터를 조회할 때는 LRANGE, LLEN 명령을 사용한다.  명령어LPUSHkey의 리스트 왼쪽에 원소를 추가한다.LPUSH key element-- 예시LPUSH mylist 0다음과 같이 mylist라는 키에 값이 1인 원소를 가진 리스트가 있다고 하자.이 리스트에 LPUSH로 0을 추가하면 다음과 같은 상태가 된다.mylist..

Database 2024.08.26

[Airflow] weight_rule - Task 우선순위 결정

개요Airflow에서 많은 Dag, 많은 Task를 실행할 때 서로 다른 Dag 간의 Task 간의 실행 순서를 결정하기 위해 우선순위를 가질 수 있다. 이번 글에서는 Airflow가 Task의 실행 순서를 결정하는 규칙에 대해서 먼저 알아본다.  priority_weightAirflow는 Executor에서의 task 실행 순서를 결정하기 위해 priority_weight과 weight_rule이라는 두 가지 개념을 사용한다.그중 priority_weight은 Executor의 큐에서의 우선순위를 정의한다. 기본값은 1이며, 각 task는 weight_rule에 의해 계산된 유효한 priority_weight에 따라 실행 순서, 우선순위가 결정된다.Task의 priority_weight 값이 높을 수록..

Apache Airflow 2024.08.23

[Excel] 테이블 INNER JOIN하기

개요2024.02.08-[Excel] 파워 쿼리 - 테이블 교차 조인 수행하기에서 Excel을 이용해 Cross Join은 수행해 보았는데, 정작 Inner Join 수행 방법을 몰라서…… 이 글에서 정리해 둔다.   테스트 데이터아래와 같이 두 개 표가 존재한다고 하자. 두 개 테이블을 Logic 컬럼을 기준으로 Join 해보자.   표 생성ctrl + t를 눌러 두 개 테이블을 표로 생성한다.  Query 생성생성한 표의 데이터를 Power Query에서 다를 수 있도록 쿼리를 생성한다.생성한 표를 선택한 상태에서 상단 메뉴의 데이터 > 데이터 가져오기 및 변환 > '테이블/범위에서' 버튼을 클릭한다.쿼리를 구분할 수 있도록 적당한 이름을 지정하고 상단 메뉴에서 홈 > 닫기 및 로드 > 닫기 및 다음..

기타 2024.08.22

[Redis] Pub/Sub - 테스트

개요2024.07.30-[Redis] Pub/Sub 개념에서 Publish, Subscriber 개념에 대해 적어두었었다. 이 글에서는 redis-cli를 사용해 직접 테스트를 해보자. 테스트를 하기 위해서는 먼저 Redis가 있어야 한다. 2023.05.30-[Redis] 개념 및 설치/실행을 참고하여 설치한다.또한 Publisher, Subscriber가 필요하므로 redis-cli를 각각 다른 세션에서 실행하여 테스트한다.   관련 명령어Publish, Subscribe와 관련된 명령어는 다음과 같다. 명령어설명subscribe  채널을 구독하여 메시지를 수신받는다.한 번에 여러 채널을 구독할 수 있다.publish 메시지를 채널에 송신한다.pubsub서버에 등록된 채널이나 패턴을 조회한다.psu..

Database 2024.08.21

[Redis] Pub/Sub 개념

개요이전에 2023.05.30-[Redis] 개념 및 설치/실행, 2023.06.01-[Redis] redis-cli로 데이터 읽고 쓰기 등으로 Redis에 대한 간략한 개념이나 데이터를 읽고 쓰는 방법에 대해 적어두었었는데, 최근 다시 Redis를 사용한 개발을 수행하게 되었다.관련하여 Pub, Sub라는 개념을 접하게 되어 적어둔다.  Pub/SubPub, Sub란 Publish, Subscribe의 줄임말로 Message Queue를 통해 데이터를 교환하는 방법 중 하나이다.Publish, Subscribe는 특정 주제(Topic)에 대해 구독한 수신자 모두에게 메시지를 발행하는 통신 방법이다. 즉, 하나의 클라이언트가 특정 Topic에 메시지를 Publish 하면, 해당 Topic에 연결되어 있는..

Database 2024.08.20

[Python] 동적으로 변수에 접근하기

개요특정 변수의 값에 따라 변수를 동적으로 접근하고 싶다. 예로 들어, 아래와 같이 API를 호출할 때 사용하기 위한 APICaller라는 클래스가 있다고 하자.class APICaller(): def __init__(self): self.t10_url = "http://127.0.0.1:10000" self.t20_url = "http://127.0.0.1:20000"APICaller는 API 요청할 서버의 타입 별로 url 값을 갖고 있다. 즉, t10_url은 t10이라는 서버 타입의 url이고, t20_url은 t20이라는 서버 타입의 url이다. 이때, 조건문을 사용하지 않고 API를 보낼 서버 타입을 의미하는 server_type 변수 값에 따라 APICaller..

Python 2024.08.19
1 2 3