データ接続と統合Pipeline Builder TransformsKNN ジョイン

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

KNN ジョイン

対応環境: バッチ

左データセットの各行に対して、距離測定に基づいて右データセットから最も近い K 行を返します。

トランスフォームカテゴリ: ジョイン

引数

  • 左側で選択する列の条件 - 左側の入力スキーマ内のすべての列がこの条件に一致するかどうかをテストします。一致する場合、その列は出力に選択されます。
    ColumnPredicate
  • 右側で選択する列の条件 - 右側の入力スキーマ内のすべての列がこの条件に一致するかどうかをテストします。一致する場合、その列は出力に選択されます。
    ColumnPredicate
  • 距離測定の式 - 左右のデータセット間の列に対する距離測定の式。たとえば、レーベンシュタイン距離。
    Expression<Numeric>
  • K 最近傍 - 返す最近傍の行数。たとえば、k=2 の場合、出力行数は倍増し、最も近い 2 行が右側から結合されます。
    Literal<Integer>
  • 左データセット - ジョインに使用する左側のデータセット。
    Table
  • ランク列名 - 距離のランクを格納する列の名前。
    Literal<String>
  • 右データセット - ジョインに使用する右側のデータセット。
    Table
  • オプション 右側の列のプレフィックス - 右側のすべての列に追加するプレフィックス。
    Literal<String>

例 1: 基本ケース

引数の値:

  • 左側で選択する列の条件:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • 右側で選択する列の条件:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • 距離測定の式:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K 最近傍: 2
  • 左データセット: ri.foundry.main.dataset.left
  • ランク列名: rank
  • 右データセット: ri.foundry.main.dataset.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: 基本ケース

引数の値:

  • 左側で選択する列の条件:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • 右側で選択する列の条件:
    columnNameIsIn(
     columnNames: [home_airport],
    )
  • 距離測定の式:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: airline,
    ),
    )
  • K 最近傍: 2
  • 左データセット: ri.foundry.main.dataset.left
  • ランク列名: rank
  • 右データセット: ri.foundry.main.dataset.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 を返す場合、これは最遠の距離と見なされます。 引数の値:

  • 左側で選択する列の条件:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • 右側で選択する列の条件:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • 距離測定の式:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K 最近傍: 2
  • 左データセット: ri.foundry.main.dataset.left
  • ランク列名: rank
  • 右データセット: ri.foundry.main.dataset.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: 基本ケース

引数の値:

  • 左側で選択する列の条件:
    columnNameIsIn(
     columnNames: [tail_number, airline],
    )
  • 右側で選択する列の条件:
    columnNameIsIn(
     columnNames: [fuzzy_airline, home_airport],
    )
  • 距離測定の式:
    alias(
     alias: distance,
     expression:
    levenshteinDistance(
     ignoreCase: true,
     left: airline,
     right: fuzzy_airline,
    ),
    )
  • K 最近傍: 2
  • 左データセット: ri.foundry.main.dataset.left
  • ランク列名: rank
  • 右データセット: ri.foundry.main.dataset.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