Leer en inglés

Compartir a través de


Table.FuzzyJoin

Sintaxis

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

Acerca de

Combina las filas de table1 con las de table2 basándose en una coincidencia aproximada de los valores de las columnas de clave que selecciona key1 (para table1) y key2 (para table2).

La coincidencia aproximada es una comparación que se basa en la similitud del texto en lugar de en su igualdad.

De forma predeterminada, se realiza una combinación interna, pero se puede incluir un elemento joinKind opcional para especificar el tipo de combinación. Entre las opciones se incluyen:

Se puede incluir un conjunto opcional de joinOptions para especificar cómo se compararán las columnas de clave. Entre las opciones se incluyen:

  • ConcurrentRequests: número comprendido entre 1 y 8 que especifica el número de subprocesos paralelos que se van a utilizar para la coincidencia aproximada. El valor predeterminado es 1.
  • Culture: permite crear coincidencias de registros a partir de reglas específicas de la referencia cultural. Puede ser cualquier nombre de referencia cultural válido. Por ejemplo, la opción "ja-JP" del valor Culture crea coincidencias con los registros con base en la referencia cultural japonesa. El valor predeterminado es "", que crea coincidencias con base en la referencia cultural inglesa invariable.
  • IgnoreCase: valor lógico ("true" o "false") que permite la coincidencia de claves sin distinción entre mayúsculas y minúsculas. Por ejemplo, si es "true", "Uvas" coincide con "uvas". El valor predeterminado es true.
  • IgnoreSpace: valor lógico ("true" o "false") que permite combinar elementos de texto para buscar coincidencias. Por ejemplo, si es "true", "U-vas" coincide con "Uvas". El valor predeterminado es true.
  • NumberOfMatches: número entero que especifica el número máximo de filas coincidentes que se pueden devolver por cada fila de entrada. Por ejemplo, un valor de 1 devolverá como máximo una fila coincidente para cada fila de entrada. Si no se proporciona esta opción, se devolverán todas las filas coincidentes.
  • SimilarityColumnName: nombre de la columna que muestra la similitud entre un valor de entrada y el valor representante de esa entrada. El valor predeterminado es NULL, en cuyo caso no se agregará una columna nueva para similitudes.
  • Threshold: número comprendido entre 0,00 y 1,00 que especifica la puntuación de similitud en la que coincidirán dos valores. Por ejemplo, "Uvas" y "Uas" (sin la "v") solo coincidirán si esta opción se establece con un valor inferior a 0,90. Un umbral de 1,00 solo permite coincidencias exactas. (Tenga en cuenta que una "coincidencia exacta" aproximada podría omitir diferencias como mayúsculas y minúsculas, el orden de palabras y los signos de puntuación). El valor predeterminado es 0,80.
  • TransformationTable: tabla que permite crear coincidencias de registros con base en asignaciones de valores personalizadas. Debe incluir las columnas "From" y "To". Por ejemplo, "Uvas" coincide con "Pasas" si se proporciona una tabla de transformación en la que la columna "From" contiene "Uvas" y la columna "To" contiene "Pasas". Tenga en cuenta que la transformación se aplicará a todas las repeticiones del texto en la tabla de transformación. Con la tabla de transformación anterior, "las uvas son dulces" también coincidirá con "las pasas son dulces".

Ejemplo 1

Combinación interna izquierda aproximada de dos tablas basada en [FirstName].

Uso

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]
)

Salida

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
    ]
})