AWS 16
-
-
세 가지의 테이블을 JOIN 하여 사용한다. 여기에서 session_timestamp, user_session_channel 두 개의 테이블은 sessionId 가 같은 수로 존재하지만 session_transaction 테이블에는 sessionId가 덜 존재한다. 그래서 두 테이블은 Inner JOIN 하고, session_transaction 테이블은 LEFT JOIN한다. 없는 sessionId는 NULL값으로 채워지게 된다. 매칭이 안되는 sessionId가 있는지 알아본다. 두 개의 방향을 모두 검사해야 한다. FROM schema.table1 A JOIN schema.table2 B ON A.primary = B.primary LEFT JOIN schema.table3 C ON A.primar..
-
-
Boolean 값에서 항상 True False 값만 있는 것이 아니라 Null값도 존재할 수 있다. Flag is True = Flag is not False 만약 Flag에 Null 값이 없고 오직 True, False로만 이루어져 있다면 이 식이 맞지만 Null값이 존재할 경우 not False가 반드시 True라고 할 수 없다. flag가 식에 해당되면 1을 더하는 문장을 실행한다. CASE WHEN flag = True THEN 1 END 여기에 COUNT() true_cnt1으로 출력한다. NULL의 비교와 연산은 항상 IS, IS NOT으로 수행한다. 만약에 =, !=, 로 수행하면 잘못된 결과가 나온다.
-
-
adhoc 이라는 폴더는 DB 사용자가 실험을 하거나 새로운 테이블을 만들어 보거나 하는 폴더이다. temp 폴더와 쓰임새가 비슷하다. 이 adhoc이라는 폴더에 새로운 테이블을 만들어서 데이터 레코드를 카피해 보겠다. 만약 테이블이 이미 존재한다면 DROP 하는 명령어를 사용한다. 그리고 새롭게 테이블을 만든다. FROM은 이미 존재하는 테이블 뿐만 아니라 동적인 범위를 정할 수 있다. session_timestamp A, user_session_channel B를 조인한 테이블에서 B의 모든 내용과 A의 ts를 합쳐서 seoann_session_summary로 만들었다. adhoc.seoann_session_summary 에서 ts와 userid가 함께 존재하기 때문에 간단히 mau를 찾을 수 있다...
-
가장 많이 사용된 채널을 찾는다. raw_data 스키마에서 user_session_channel 테이블 안에 가장 많이 사용된 채널을 찾는다. 여기서 많이 사용되었다는 기준은 세션이 만들어진 수, 유저의 아이디 수 두가지로 찾을 수 있다. 모호한 기준이 주어지면 정확히 하기 위한 질문을 해야 한다. AS count라는 새로운 Column을 만들어낸다. 유저 아이디는 기본키가 아니기 때문에 여러개 있을 수 있다. 세션을 많이 만들었다면 수를 세었을 때 가장 많은 수의 Record가 있을 것이다. 월별 사용자 수를 위해 join을 사용하여 두개의 테이블을 inner join 한다. session_timestamp 는 A, user_session_channel은 B 세션 아이디를 기준으로 두 개의 테이블을 ..
-
Serving Model에서 define inference를 구현한다. handle 요청 정보를 받아 적절한 응답을 반환 - 정의된 양식으로 데이터의 입력이 왔는지 확인 - 입력값에 대한 전처리 및 모델에 입력할 수 있는 형태로 변환 - 모델추론 - 모델 반환값 후처리 - 결과 반환 model.py에 핸들러 부분이 있다. 기본적인 핸들러는 있지만 밑에 스켈레톤 코드를 작성해 보려고 한다. 핸들러의 이 부분은 데이터 인풋 값 model_input을 전처리 하고, 전처리 후의 데이터를 inference하고 나온 output 데이터를 후처리기에 넣어서 반환한다. initialize 데이터 처리나 모델, configuration을 초기화 한다. - Configuration 등 초기화 - (Optional) 신경..
-
깃 클론해서 파일을 다운 받는다. 필요한 라이브러리들도 다운 받는다. 아마존 ec2의 무료 프리티어가 용량이 작기 때문에 많은 파일을 다운 받으면 연결이 끊긴다. 재 연결하고, 연결이 안되는 부분을 고친다. 다운 받는 파일 중에 문제가 있는 것이 있어서 개별적으로 다운 받았다. 다운 받은 후 파일을 실행하면 모델이 깃으로부터 raw data를 다운받고 데이터 학습을 시도하고 저장되게 된다. 두개의 새로운 파일이 생겼다. 이 부분에서 로그 기록에 대한 저장이 실행된다. 실제로 실행이 되는지 모델을 불러와서 데이터를 처리해보았다. Serialization은 가능했다. 문장의 긍정, 부정을 판단하여 그것을 저장했다. de-serialization에서는 문제가 발생할 수 있기 때문에 이 부분을 고쳐줘야 한다.
-
API 아키텍쳐 AWS EC2와 Python Flask 기반으로 모델 학습 및 추론을 요청/응답하는 API 서버 개발 Interface - 사용자가 소프트웨어 제어를 위해 인터페이스를 정해진 메뉴얼로 활용 ex) 마우스, 키보드, 모니터, 프린터.. - 적절한 입력으로 적절한 출력 제공 API Application Programming Interface - 기계와 기계, 소프트웨어와 소프트웨어 간의 커뮤니케이션을 위한 인터페이스 머신러닝, 딥러닝의 RESTful API REST 아키텍쳐를 따라 구현한 API 독립적인 HTTP로 구성된 요청과 반환으로 이루어진 설계 데이터 값을 담아 요청하고, 결과를 json형태로 반환 요청 메시지로 어떤 내용이 있는지 표현 가능 API는 Trained Model File..