Description Usage Arguments Details Value Combinar con NormalizarTexto Examples
View source: R/14-Surrogate-Key-Pipeline.R
Encuentra el surrogate key aplicando fuzzy matching y memoization.
1 2 3 4 5 6 7 8 | EncontrarSurrogateFuzzyMemo(
tablaDim,
tablaFuente,
nombreDimJoin,
nombreDimClave,
nombreFuenteJoin,
maxChars
)
|
tablaDim |
una versión recortada de la tabla dimensional, con el campo de join y el surrogate key. Si el campo de join es texto, entonces lo mejor es normalizarlo. |
tablaFuente |
una versión recortada de la tabla fuente, con el campo de join. Si el campo de join es texto, entonces lo mejor es normalizarlo. |
nombreDimJoin |
el nombre de la columna en la tabla dimensional usada para combinar las tablas. |
nombreDimClave |
el nombre de la columna en la tabla dimensional que contiene el surrogate key. |
nombreFuenteJoin |
el nombre de la columna en la fuente de datos usada para combinar las tablas |
maxChars |
el máximo número de caracteres permitido, en que un texto de la fuente difiere del texto limpio en la tabla de dimensión.
Por ejemplo, "Frodo" difiere de "frodo" en 1 caracter. Si |
Primero se realiza un Left Join de la columna join de la fuente de datos, con la columna join de la dimensión. Idealmente, ambas columnas debería pasar por una normalización de texto, para mejorar la probabilidad de encontrar un match correcto.
Si hay match exactos, se reservan en una tabla que contiene el valor original y el surrogate key correspondiente (exact matches). Luego, se realiza un anti-join entre las mismas tablas. Si existen valores sin un match, se inicia el proceso de memoization.
Para cada valor sin match exacto:
¿Dato en memo?
SI: Agregar surrogate key a exact matches
NO: Pasar a 2.
Calcular stringdist
sobre los valores de la columna join en la dimensión.
Escoger mejor match.
Agregar surrogate key de mejor match exact matches.
Alimentar memo con el nuevo match.
un vector de surrogate keys. Si un dato en el origen no encuentra un match apropiado (strigrdist > maxChars), devuelve NA
.
Normalizar la columna de combinación de la tabla dimensional, junto con la columna de combinación de la tabla fuente, y luego aplicar el fuzzy matching con memoization para mejores resultados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | library(dplyr)
# Suponer que se extrae de un archivo fuente
columnaSucia <- c("lUnes ","MARTES.","Miércoles","Hueves","viernes","sabado","Domingo", "Lunes", "martes","Miércoles", "Hueves ","Fiernes,","Sábado","Domingo")
dimTable <-
data.frame(dias = c("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo")) %>%
dplyr::mutate(Key = dplyr::row_number())
# Normalizar texto
columnaSucia <- NormalizarTexto(columnaSucia)
dimTable <- dimTable %>%
dplyr::mutate(diasClean = NormalizarTexto(dias)$Limpio)
# Fuzzy matching
SK <-
EncontrarSurrogateFuzzyMemo(
tablaFuente = data.frame(dias = columnaSucia$Limpio)
,tablaDim = dimTable
,nombreDimJoin = "diasClean"
,nombreDimClave = "Key"
,nombreFuenteJoin = "dias"
,maxChars = 3)
# Agregar surrogate key al source table
data <-
data.frame(diasSrcNorm = columnaSucia$Limpio,
diasSrcOrig = columnaSucia$Sucio,
ID = SK) %>%
left_join(dimTable, by = c("ID" = "Key"))
data
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.