Table.FuzzyNestedJoin

Sintaxis

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

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). Los resultados se devuelven en una nueva columna denominada newColumnName.

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

El elemento joinKind opcional especifica el tipo de combinación que se va a realizar. De forma predeterminada, si no se especifica un elemento joinKind, se realiza una combinación externa izquierda. 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.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]
)

Salida

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