LOOKUP 명령어

LOOKUP 명령어

lookup 명령어는 lookup 인덱스(차원 테이블)의 값을 추가하거나 대체해 검색 데이터를 보강(엔리치)해요. 차원 테이블의 값으로 인덱스의 필드를 확장할 수 있어요.

출처: 문서

본문

lookup 명령어는 lookup 인덱스(차원 테이블)의 값을 추가하거나 대체해 검색 데이터를 보강(엔리치)해요. 차원 테이블의 값으로 인덱스의 필드를 확장할 수 있고, lookup 조건이 일치하면 값을 추가하거나 대체해요. join 명령어와 비교하면 lookup은 정적 데이터셋으로 소스 데이터를 보강하는 데 더 적합해요.

구문 (Syntax)

lookup 명령어의 구문은 다음과 같아요:

lookup <lookupIndex> (<lookupMappingField> [as <sourceMappingField>])... [(replace | append | output) (<inputField> [as <outputField>])...]

다음은 lookup 명령어 구문의 예시예요:

source = table1 | lookup table2 id
source = table1 | lookup table2 id, name
source = table1 | lookup table2 id as cid, name
source = table1 | lookup table2 id as cid, name replace dept as department
source = table1 | lookup table2 id as cid, name replace dept as department, city as location
source = table1 | lookup table2 id as cid, name append dept as department
source = table1 | lookup table2 id as cid, name append dept as department, city as location
source = table1 | lookup table2 id as cid, name output dept as department
source = table1 | lookup table2 id as cid, name output dept as department, city as location

매개변수 (Parameters)

lookup 명령어는 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
<lookupIndex> 필수 lookup 인덱스(차원 테이블)의 이름이에요.
<lookupMappingField> 필수 일치에 사용되는 lookup 인덱스의 키예요. 오른쪽 테이블의 join 키와 비슷해요. 여러 필드는 쉼표로 구분된 목록으로 지정해요.
<sourceMappingField> 선택 일치에 사용되는 소스 데이터(왼쪽)의 키예요. 왼쪽 테이블의 join 키와 비슷해요. 기본값은 lookupMappingField예요.
<inputField> 선택 일치된 값이 결과(출력)에 적용되는 lookup 인덱스의 필드예요. 여러 필드는 쉼표로 구분된 목록으로 지정해요. 지정하지 않으면 lookup 인덱스에서 lookupMappingField를 제외한 모든 필드가 결과에 적용돼요.
<outputField> 선택 일치된 값이 배치되는 결과(출력)의 필드 이름이에요. 여러 필드는 쉼표로 구분된 목록으로 지정해요. outputField가 소스 쿼리의 기존 필드를 지정하면 그 값이 inputField의 일치된 값으로 대체되거나 추가돼요. outputField에 지정된 필드가 기존 필드가 아닌 경우, replace를 사용하면 결과에 새 필드가 추가되고, append를 사용하면 작업이 실패해요.
(replace | append | output) 선택 일치된 값이 출력에 어떻게 적용되는지 지정해요. replace는 기존 값을 lookup 인덱스의 일치된 값으로 덮어써요. append는 결과의 누락된 값만 lookup 인덱스의 일치된 값으로 채워요. output은 replace의 동의어예요 (SPL 호환을 위해 제공). 기본값은 replace예요.

예제 1: 기존 값 대체하기

다음 쿼리는 replace 전략과 함께 lookup 명령어를 사용해 기존 값을 덮어써요:

source = worker
  | LOOKUP work_information uid AS id REPLACE department
  | fields id, name, occupation, country, salary, department

쿼리는 다음과 같은 결과를 반환해요:

id name occupation country salary department
1000 Jake Engineer England 100000 IT
1001 Hello Artist USA 70000 null
1002 John Doctor Canada 120000 DATA
1003 David Doctor null 120000 HR
1004 David null Canada 0 null
1005 Jane Scientist Canada 90000 DATA

예제 2: 누락된 값 추가하기

다음 쿼리는 append 전략과 함께 lookup 명령어를 사용해 누락된 값만 추가해요:

source = worker
  | LOOKUP work_information uid AS id APPEND department
  | fields id, name, occupation, country, salary, department

예제 3: 입력 필드 지정하지 않기

다음 쿼리는 inputField를 지정하지 않고 lookup 명령어를 사용해 lookup 인덱스의 모든 필드를 결과에 추가해요:

  source = worker
  | LOOKUP work_information uid AS id, name
  | fields id, name, occupation, country, salary, department

쿼리는 다음과 같은 결과를 반환해요:

id name country salary department occupation
1000 Jake England 100000 IT Engineer
1001 Hello USA 70000 null null
1002 John Canada 120000 DATA Scientist
1003 David null 120000 HR Doctor
1004 David Canada 0 null null
1005 Jane Canada 90000 DATA Engineer

예제 4: 일치된 값을 새 필드에 추가하기

다음 쿼리는 outputField로 지정된 새 필드에 일치된 값을 배치해요:

  source = worker
  | LOOKUP work_information name REPLACE occupation AS new_col
  | fields id, name, occupation, country, salary, new_col

쿼리는 다음과 같은 결과를 반환해요:

id name occupation country salary new_col
1003 David Doctor null 120000 Doctor
1004 David null Canada 0 Doctor
1001 Hello Artist USA 70000 null
1000 Jake Engineer England 100000 Engineer
1005 Jane Scientist Canada 90000 Engineer
1002 John Doctor Canada 120000 Scientist

예제 5: OUTPUT 키워드 사용하기

OUTPUT 키워드는 REPLACE의 동의어예요. 다음 쿼리는 OUTPUT을 사용해 기존 값을 덮어쓰는 방법을 보여줘요:

source = worker
  | LOOKUP work_information uid AS id OUTPUT department
  | fields id, name, occupation, country, salary, department

이 쿼리는 예제 1(REPLACE 사용)과 동일한 결과를 생성해요:

id name occupation country salary department
1000 Jake Engineer England 100000 IT
1001 Hello Artist USA 70000 null
1002 John Doctor Canada 120000 DATA
1003 David Doctor null 120000 HR
1004 David null Canada 0 null
1005 Jane Scientist Canada 90000 DATA

더 알아보기 (Learn more)