Table.FuzzyJoin
Table.FuzzyJoin(table1 as table, key1 as any, table2 as table, key2 as any, optional joinKind as nullable number, optional joinOptions as nullable record) as table
key1
(table1
) 및 key2
(table2
)에서 선택한 키 열 값의 유사 일치를 기반으로 table1
행을 table2
행과 조인합니다.
모호 일치는 텍스트의 동일성보다 유사성을 기반으로 한 비교 방법입니다.
기본적으로 내부 조인이 수행되지만 조인 유형을 지정하기 위해 선택적 joinKind
포함될 수 있습니다. 옵션은 다음과 같습니다.
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
키 열을 비교하는 방법을 지정하기 위해 선택적 joinOptions
집합을 포함할 수 있습니다. 옵션은 다음과 같습니다.
-
ConcurrentRequests
: 유사 항목 일치에 사용할 병렬 스레드 수를 지정하는 1에서 8 사이의 숫자입니다. 기본값은 1입니다. -
Culture
: 문화권별 규칙에 따라 일치하는 레코드를 허용합니다. 유효한 문화 이름일 수 있습니다. 예를 들어, "Culture" 옵션에 "ja-JP"을 선택하면 일본 문화에 따라 레코드를 검색합니다. 기본값은 "", 이며 이는 불변 영어 문화에 따라 일치합니다. -
IgnoreCase
: 대/소문자를 구분하지 않는 키 일치를 허용하는 논리적(true/false) 값입니다. 예를 들어 true인 경우 "포도"는 "포도"와 일치합니다. 기본값은 true입니다. -
IgnoreSpace
: 일치하는 항목을 찾기 위해 텍스트 부분을 결합할 수 있는 논리적(true/false) 값입니다. 예를 들어 true인 경우 "Gra pes"는 "Grapes"와 일치합니다. 기본값은 true입니다. -
NumberOfMatches
: 모든 입력 행에 대해 반환할 수 있는 일치하는 행의 최대 수를 지정하는 정수입니다. 예를 들어 값 1은 각 입력 행에 대해 일치하는 행을 하나 이상 반환합니다. 이 옵션을 제공하지 않으면 일치하는 모든 행이 반환됩니다. -
SimilarityColumnName
: 입력 값과 해당 입력의 대표 값 사이의 유사성을 보여 주는 열의 이름입니다. 기본값은 null이며, 이 경우 유사성에 대한 새 열이 추가되지 않습니다. -
Threshold
: 두 값이 일치하는 유사성 점수를 지정하는 0.00에서 1.00 사이의 숫자입니다. 예를 들어 "Grapes" 및 "Graes"("p"가 누락됨)는 이 옵션이 0.90 미만으로 설정된 경우에만 일치합니다. 임계값 1.00은 정확한 일치만 허용합니다. (애매하게 "정확한 일치"는 대/소문자, 단어 순서 및 문장 부호와 같은 차이를 무시할 수 있습니다.) 기본 설정 값은 0.80입니다. -
TransformationTable
: 사용자 지정 값 매핑에 따라 일치하는 레코드를 허용하는 테이블입니다. "From" 및 "To" 열을 포함해야 합니다. 예를 들어 변환 테이블에 "Grapes"가 포함된 "From" 열과 "Raisins"가 포함된 "To" 열이 제공되면 "Grapes"가 "Raisins"와 일치합니다. 변환 테이블의 모든 텍스트 발생에 변환이 적용됩니다. 위의 변환 표에서 "포도는 달콤합니다"도 "건포도는 달콤합니다"와 일치합니다.
[FirstName]을 기반으로 하는 두 테이블의 왼쪽 내부 유사 항목 조인
사용량
Table.FuzzyJoin(
Table.FromRecords(
{
[CustomerID = 1, FirstName1 = "Bob", Phone = "555-1234"],
[CustomerID = 2, FirstName1 = "Robert", Phone = "555-4567"]
},
type table [CustomerID = nullable number, FirstName1 = nullable text, Phone = nullable text]
),
{"FirstName1"},
Table.FromRecords(
{
[CustomerStateID = 1, FirstName2 = "Bob", State = "TX"],
[CustomerStateID = 2, FirstName2 = "bOB", State = "CA"]
},
type table [CustomerStateID = nullable number, FirstName2 = nullable text, State = nullable text]
),
{"FirstName2"},
JoinKind.LeftOuter,
[IgnoreCase = true, IgnoreSpace = false]
)
출력
Table.FromRecords({
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 1,
FirstName2 = "Bob",
State = "TX"
],
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
CustomerStateID = 2,
FirstName2 = "bOB",
State = "CA"
],
[
CustomerID = 2,
FirstName1 = "Robert",
Phone = "555-4567",
CustomerStateID = null,
FirstName2 = null,
State = null
]
})