Data miner/Development log
-
[SQL] SUB QUERYData miner/Development log 2023. 4. 6. 16:11
서브 쿼리의 종류 - 서브쿼리는 QUERY OF QUERY 로 메인 쿼리의 각 부분 파트에 또 다른 쿼리문이 있는 형태다. 별도로 괄호로 묶은 쿼리 블록으로 표현된다. SQL 옵티마이저는 서브쿼리를 참조하는 메인 쿼리 블록을 포함하여, 쿼리 블록 단위로 쿼리 최적화를 수행한다. 1) SELECT 문에 SUB QUERY가 있는 경우 - 스칼라 서브쿼리라고 불림 - 하나의 레코드 당 하나의 값을 반환하는 서브 쿼리 - 주의할 점 : 데이터 양이 많으면, 실행속도가 느려짐 2) FROM 문에 SUB QUERY가 있는 경우 - 테이블 처럼 사용됨. 인라인뷰 서브쿼리라고 불림 ex) SELECT c.고객번호, c.고객명 FROM 고객테이블 c, (SELECT 고객번호, avg(거래금액) 평균거래 ,min(거래금액..
-
[SQL] JOIN TUNING / NL JOINData miner/Development log 2023. 4. 3. 15:39
JOIN 은 SQL에서 가장 많이 활용되는 기본 명령어이다. 두 테이블을 공통값을 활용하여 병합하여 볼 수 있기 때문이다. JOIN의 테이블 병합 방식에 따라 INNER / OUTER (LEFT, RIGHT, ALL) / CROSS / Self JOIN 4가지 종류로 나뉜다. - INNER JOIN (두 테이블의 교집합 / 공통값이 매칭되는 경우에만 조회) - LEFT JOIN (왼쪽 테이블 기준 데이터 조회) - RIGHT JOIN (오른쪽 테이블 기준 데이터 조회) - FULL JOIN (양쪽 테이블 기준 데이터 조회, LEFT/RIHGT JOIN의 성질을 모두 다 가지고 있음) - CROSS JOIN (두 테이블의 행을 결합하는 명령어, A의 n행과 B의 m행을 n*m으로 결합) - SELF JOI..
-
[parquet] 파일 나눠서 저장하기Data miner/Development log 2023. 3. 25. 19:55
parquet은 hadoop에서 열 우선으로 열의 연속 요속가 메모리에 나란히 저장되는 데이터 포맷형태다. csv파일이 행 중심 데이터 저장 포맷형태로, sample 중심이라면 parquet은 피처(열) 중심이라고 볼 수 있다. 대용량 데이터를 처리하는데 있어서 하나의 대용량 데이터 파일을 여러개의 parquet의 파일로 나눌 때 사용하는 함수는 다음과 같다. #split the data import dask.dataframe as dd train = dd.read_parquet('./나누고자하는 파일 경로 입력/train.parquet') train.repartition(6).to_parquet('./나눈 파일 저장하고자 하는 경로 입력/split/') # 나누고자 하는 파일 개수, N 숫자 repar..
-
[torch] torch.einsum 함수 이해하기Data miner/Development log 2022. 11. 15. 21:39
torch.einsum함수는 Transformer 논문에서 query의 값과 query에 position embedding값을 연계시키는 부분에서 사용되었다. 이에 대해서 한 번 정리하고 가는 것이 좋을 것 같아 포스팅을 하게 되었다. relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) 공식문서에 따르면, einsum() 함수는 input operands의 곱을 합하는 방식이며, Einstein 합 방식에 기반하여 output matrix 차원을 만드는 방식이다. 아래의 그림과 같이 operands에 속하는 텐서들의 차원이 순서대로 첫번째 요소에 대응하며, '->' 이후는 연산 이후의 out..
-
[Spark] [python] Spark ApplicationData miner/Development log 2021. 3. 5. 16:04
Spark Application SparkSession Spark Application 을 가동하기 위해서 가장 먼저 생성해야 하는 것 builder 메서드를 사용하면 안전하게 생성 가능 SparkSession 실행 후 스파크 코드 실행 가능/ 저수준 API 실행 가능 SparkContext 스파크 클러스터에 대한 연결을 나타냄 SparkSession 생성시 getOrCreate를 통해 직접 초기화 from os.path import join, abspath import collections from pyspark import StorageLevel from pyspark.sql import Row from pyspark.sql import SparkSession from pyspark.sql.funct..
-
[Spark] [python] 구조적 API 기본 연산Data miner/Development log 2021. 3. 1. 17:32
구조적 API 기본 연산 1) 스키마 DataFrame의 컬럼명과 데이터 타입을 결정 DataFrame의 컬럼명과 데이터 타입을 정의. 데이터를 추출(Extract), 변환(Transform), 적재(Load)를 수행하는 작업에 스파크를 사용한다면, 스파크를 정의해야 한다. 정의하지 않을 경우, 스키마 추론 과정에서 스키마를 임의로 결정할 수 있다. 스키마는 여러 개의 StructField 타입 필드로 구성된 StructType 객체 StructType(컬럼의 이름, 데이터 타입, 컬럼의 값이 null값일 수 있는지 지정 True/False 및 메타데이터 지정) example_of_Schema = StructType([StructType(StructField("Specific_Column_name", S..
-
[Spark] 아파치 스파크 개념 정리중Data miner/Development log 2021. 2. 17. 18:32
스파크는 컴퓨터 클러스터에서 작업을 조율하는 프레임워크. 클러스터의 데이터 처리 작업을 관리 및 조율. 데이터프레임의 추상화를 통해 대용량의 데이터 처리 가능. 스트림처리, 그래프처리, SQL, 머신러닝 기능 제공 스파크 애플리케이션은 드라이버 프로세스(driver process) 와 익스큐터 프로세스(Executors)로 구성 드라이버 프로세스는 스파크 애플리케이션의 중심 본체로서, main()함수 실행 및 SparkContext를 생성함 익스큐터 프로세스는 드라이버 프로세스가 할당한 작업을 수행. 드라이버가 할당한 코드 실행/ 진행 상황을 다시 드라이버 노드에 보고 스파크 스트리밍 : 다양한 데이터 소스에서 유입되는 실시간 스트리밍 데이터를 처리하는 프레임워크 장애가 발생하면 연산 결과를 자동으로 복..
-
[python] [pandas] 특정 칼럼에 속한 unique한 값의 개수 구하기Data miner/Development log 2021. 1. 22. 16:16
domain, count vk.com 3 twitter.com 2 facebook.com 1 google.com 1 위와 같은 데이터프레임이 있다고 하자. 각 도메인에 속하는 unique한 ID값의 개수가 궁금하다. 'vk.com'의 도메인에 속하는 구분가능한 ID의 개수는 3개다. ID, domain 123, 'vk.com' 123, 'vk.com' 123, 'twitter.com' 456, 'vk.com' 456, 'facebook.com' 456, 'vk.com' 456, 'google.com' 789, 'twitter.com' 789, 'vk.com' 다음의 코드를 사용하면 된다. nunique() 함수를 사용한다. df.groupby('domain')['ID'].nunique()