본문 바로가기

전체 글

(37)
모란역에서 김포공항 제주도 가는데 걸리는 시간 목표다음엔 한 시간 더 자기 위해 기록을 남겨보기 요약- 공항버스를 탈거라면 예약하자 - 모란역에서 탄 공항버스는 55분만에 김포공항 도착 - 체크인 오래 걸릴 줄 알았으나 즉시발급 - 체크인 후 검색대를 통과하고 느릿느릿 제일끝 탑승구 가는시간 단 20분 - 일찍 와버려서 대기시간 1시간 45분 ㅠ? 해외여행 갈때처럼 오래 걸릴까봐 서둘렀는데 그럴필요 없었다 기록4시 기상 준비해둔 짐을 싸고 공항버스 타러 이동 모란역 5번출구 바로 뒤편에 공항버스 정류소가 있다.김포공항행 4시35분버스를 탔다. 보이는 사람을 다 태우면 시간이 안지나도 가는 것 같다. 공항버스는 미리 예약할 수 있다. 몰랐는데, 자리가 부족하지 않아서 다행이다. 5시 30분에 김포공항에 도착했다. 체크인 하는 곳이 가까이 있다. 제주항..
elasticsearch 저장 Query DSL(domain specific language) - filter context : 문서와 일치하는가 질의, 정확한 검색, 캐시됨 -- bool의 filter와 must_not -- constant_score의 filter -- filter aggregation -- // term, range - query context : 문서와 얼마나 잘 일치하는가 + score 계산, 유사 검색 -- query 파라미터 (must, should, query, bool) function_score : 가산점을 수정, 누적할 수 있다. ex) 최근 등록한 상품에 더 높은 점수 multi_match : 여러 필드에 가점 ex) 제목 + 태그 등 동시 검색 - 필드별로 가산점비율 조정 가능 ex) ["fie..
athena test table 적당히 테스트값을 입력하고 함수를 실행해볼 테이블을 만든다 select cast(splited_str as int) as number_column from unnest(split('1,2,3,4', ',')) s(splited_str)
remove accents in athena query 연관검색어 생성 로직을 만들면서 athena와 mysql을 섞어썼는데, 과정에서 생각하지 못한 에러가 발생했다. mysql varchar에서 영어 accent를 구분하지 않아서, athena에서 가져온 값과 어긋나는 것이었다. 연관검색어를 추천할때 알파벳에 accent가 붙어 있는지 없는지는 중요하지 않았기 때문에 accent는 없애기로 했다. accent를 없애면서 normalize라는 것을 알게됐는데, 이것은 한글을 초성,중성,종성으로 분리하는데에도 써먹을 수 있었다. SELECT NORMALIZE(REGEXP_REPLACE(NORMALIZE('á, é, í, ó, ú, ü, ñ', NFD), '[\u0300-\u036f]', ''), NFC)
[athena] split string into array string to array SELECT regexp_split('abcd', '') array to string SELECT array_join(regexp_split('abcd', ''), ' ')
[python] boto3 athena 실행 boto3 아테나 클라이언트에서 start_query_execution를 실행하면, 쿼리를 시작하고 끝나지 않아도 바로 response가 되돌아온다. QueryExecutionId로 쿼리 진행상태를 확인하고 다음 과정을 이어간다. 아래 함수는 CREATE TABLE, DROP TABLE을 할때 쓸 수 있는 함수이다. (SELECT 등은 고려되지 않음) - Rate exceeded : 너무 많은 요청을 했을때 메시지이므로 쉬어간다. - Could not find results : DROP TABLE을 실행 - Query has not yet finished : 쿼리가 끝나지 않았으므로 기다린다. import boto3 client = boto3.client('athena') def athena_query(..
[airflow] argument 전달 1. 직접 trigger할때 dag_run 입력 airflow ui를 통해서 인자를 전달할 수 있다. json 으로 입력해야 하며, opreator에 provide_context=True로 옵션을 주면 함수에 전달된다. def print_test0(**context): dag_run: DagRun = context['dag_run'] print(dag_run.conf[name]) t0 = PythonOperator( task_id='print_test0', python_callable=print_test0, execution_timeout=timedelta(minutes=2), provide_context=True, dag=dag ) 2. default 값 입력 def print_test1(*op_arg..
[ATHENA Query] url parameter 타입 체크하기 할일 get request에서 정수가 들어있어야 하는 부분 Valid체크 필요한 함수 TRY_CAST: varchar -> integer로 타입변환 URL_EXTRACT_PARAMETER: parameter에서 필요한 값을 추출 CONCAT: query_string에 물음표(?)를 붙여줘야 URL_EXTRACT_PARAMETER가 작동한다 SELECT * FROM "디비"."테이블" WHERE year = '1993' AND month = '02' AND day = '05' AND uri = 'localhost:유알엘' AND TRY_CAST ( URL_EXTRACT_PARAMETER(CONCAT('?', URL_DECODE(query_string)), 'integer가 들어있어야 하는 필드') AS I..