Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

KNN 조인

항목값
화면 이름KNN join
식별자complexKnnJoinV1
지원 실행 방식Batch
범주조인 (Join)

왼쪽의 각 행에 대해 거리 척도상 가장 가까운 오른쪽 행 k개를 반환합니다.

입력 인자

이름지정 여부자료형의미와 조건
Condition for columns to select on the left필수ColumnPredicate왼쪽 스키마의 각 열을 검사하여 조건에 맞는 열만 출력으로 선택합니다.
Condition for columns to select on the right필수ColumnPredicate오른쪽 스키마의 각 열을 검사하여 조건에 맞는 열만 출력으로 선택합니다.
Distance measure expression필수Expression<Numeric>양쪽 데이터셋의 열 사이 거리를 계산할 표현식입니다. 예를 들어 Levenshtein 거리를 사용할 수 있습니다.
K nearest필수Literal<Integer>반환할 가장 가까운 행 수입니다. k=2이면 오른쪽의 두 행을 조인하여 출력 행 수가 적어도 두 배가 됩니다. 동점이 있으면 더 많은 행을 반환할 수 있습니다.
Left dataset필수Table조인에 사용할 왼쪽 데이터셋입니다.
Rank column name필수Literal<String>거리 순위를 기록할 열 이름입니다.
Right dataset필수Table조인에 사용할 오른쪽 데이터셋입니다.
Prefix for columns from right선택Literal<String>오른쪽의 모든 열에 붙일 접두사입니다.

입출력 예시

예시 1: 기본 동작

인자 값:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • Distance measure expression:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K nearest: 2
  • Left dataset: ri.foundry.main.dataset.left
  • Rank column name: rank
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

입력:

ri.foundry.main.dataset.left

tail_numberairlinemilesfactor
XB-123foundry air1242
MT-222new airline11235
PA-452new air2122

ri.foundry.main.dataset.right

fuzzy_airlinehome_airport
airLHR
new airlineCPH
new planeJFK
old airIAD

출력:

rankdistancetail_numberairlinefuzzy_airlinehome_airport
13PA-452new airold airIAD
24PA-452new airairLHR
24PA-452new airnew airlineCPH
24PA-452new airnew planeJFK
10MT-222new airlinenew airlineCPH
24MT-222new airlinenew planeJFK
15XB-123foundry airold airIAD
28XB-123foundry airairLHR

예시 2: 기본 동작

인자 값:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [home_airport],
    )
  • Distance measure expression:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: airline,
    ),
    )
  • K nearest: 2
  • Left dataset: ri.foundry.main.dataset.left
  • Rank column name: rank
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

입력:

ri.foundry.main.dataset.left

tail_numberairlinemilesfactor
XB-123foundry air1242
MT-222new airline11235
PA-452new air2122

ri.foundry.main.dataset.right

airlinehome_airport
airLHR
new airlineCPH
new planeJFK
old airIAD

출력:

rankdistancetail_numberairlinehome_airport
13PA-452new airIAD
24PA-452new airLHR
24PA-452new airCPH
24PA-452new airJFK
10MT-222new airlineCPH
24MT-222new airlineJFK
15XB-123foundry airIAD
28XB-123foundry airLHR

예시 3: 기본 동작

거리 표현식이 null을 반환하면 가장 먼 거리로 취급합니다.

인자 값:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • Distance measure expression:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K nearest: 2
  • Left dataset: ri.foundry.main.dataset.left
  • Rank column name: rank
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

입력:

ri.foundry.main.dataset.left

tail_numberairlinemilesfactor
XB-123foundry air1242
MT-222new airline11235
PA-452new air2122

ri.foundry.main.dataset.right

fuzzy_airlinehome_airport
airLHR
nullCPH
new planeJFK
old airIAD

출력:

rankdistancetail_numberairlinefuzzy_airlinehome_airport
13PA-452new airold airIAD
24PA-452new airairLHR
24PA-452new airnew planeJFK
14MT-222new airlinenew planeJFK
27MT-222new airlineold airIAD
15XB-123foundry airold airIAD
28XB-123foundry airairLHR

예시 4: 기본 동작

인자 값:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • Distance measure expression:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K nearest: 2
  • Left dataset: ri.foundry.main.dataset.left
  • Rank column name: rank
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: right_

입력:

ri.foundry.main.dataset.left

tail_numberairlinemilesfactor
XB-123foundry air1242
MT-222new airline11235
PA-452new air2122

ri.foundry.main.dataset.right

fuzzy_airlinehome_airport
airLHR
new airlineCPH
new planeJFK
old airIAD

출력:

rankdistancetail_numberairlineright_fuzzy_airlineright_home_airport
13PA-452new airold airIAD
24PA-452new airairLHR
24PA-452new airnew airlineCPH
24PA-452new airnew planeJFK
10MT-222new airlinenew airlineCPH
24MT-222new airlinenew planeJFK
15XB-123foundry airold airIAD
28XB-123foundry airairLHR