다음을 통해 공유


Table.FuzzyNestedJoin

통사론

Table.FuzzyNestedJoin(table1 as table, key1 as any, table2 as table, key2 as any, newColumnName as text, optional joinKind as nullable number, optional joinOptions as nullable record) as table

소개

key1(table1) 및 key2(table2)에서 선택한 키 열 값의 유사 일치를 기반으로 table1 행을 table2 행과 조인합니다. 결과는 newColumnName이라는 새 열로 반환됩니다.

퍼지 매칭은 텍스트의 동일성이 아닌 유사성을 기준으로 비교하는 방법입니다.

선택적인 joinKind은 수행할 조인의 종류를 지정합니다. 기본적으로 joinKind가 지정되지 않은 경우에는, 왼쪽 외부 조인이 수행됩니다. 옵션은 다음과 같습니다.

키 열 비교 방법을 지정하기 위해 선택 사항으로 joinOptions 집합을 포함할 수 있습니다. 옵션은 다음과 같습니다.

  • ConcurrentRequests: 유사 항목 일치에 사용할 병렬 스레드 수를 지정하는 1에서 8 사이의 숫자입니다. 기본값은 1입니다.
  • Culture: 문화권별 규칙에 따라 일치하는 레코드를 허용합니다. 유효한 문화 이름 중 하나일 수 있습니다. 예를 들어 "`ja-JP`"의 Culture 옵션은 일본 문화 설정에 따라 레코드를 매칭합니다. 기본값은 "Invariant English 문화"에 맞춰 일치하는 ""입니다.
  • 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"와 일치합니다. 변환 테이블의 모든 해당 텍스트에 대해 변환이 적용됩니다. 위의 변환 표에서 "포도는 달콤합니다"도 "건포도는 달콤합니다"와 일치합니다.

예제 1

[FirstName]을 기반으로 하는 두 테이블의 왼쪽 내부 유사 항목 조인

사용량

Table.FuzzyNestedJoin(
    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"},
    "NestedTable",
    JoinKind.LeftOuter,
    [IgnoreCase = true, IgnoreSpace = false]
)

출력

Table.FromRecords({
    [
        CustomerID = 1,
        FirstName1 = "Bob",
        Phone = "555-1234",
        NestedTable = Table.FromRecords({
            [
                CustomerStateID = 1,
                FirstName2 = "Bob",
                State = "TX"
            ],
            [
                CustomerStateID = 2,
                FirstName2 = "bOB",
                State = "CA"
            ]
        })
    ],
    [
        CustomerID = 2,
        FirstName1 = "Robert",
        Phone = "555-4567",
        NestedTable = Table.FromRecords({})
    ]
})