En anteriores artículos vimos cómo leer y escribir en Excel y en este articulo comprobaremos lo fácil que es separar valores de una columna con KNIME.Nuestro objetivo es separar la columna de fecha en tres campos nuevos y lo vamos a conseguir, o no, utilizando los nodos Cell Splitter y Cell Splitter By Position. Partiremos de este otro articulo anterior donde leíamos y escribíamos en otro excel, aunque puedes adaptarlo a tu Workflow.
Especificaciones del entorno
Origen de datos
Nuestro origen de datos será el siguiente excel (recuerda que puedes descargarte este excel y el workflow con el ejemplo al final del articulo)
Diferencias entre nodos Splitter
Para poder separar una columna en varias lo puedes realizar con dos nodos diferentes; Cell Splitter y Cell Splitter By Position siendo este ultimo el más sencillo y rápido aunque dependerá de tus necesidades.
- Cell Splitter By Position: separa columnas en base a las posiciones que le indiques, puedes crear desde 1 columna a X, en función de cómo lo configures. Con este nodo no le puedes indicar un delimitador.
- Cell Splitter: este nodo es el más completo, puedes definir un delimitador y cual será su salida además de separar el nombre de la columna, etc…
Lo que te hará decantarte entre un nodo u otro será si necesitas indicarle un deliminator o si por el contrario conoces las posiciones exactas que necesitas y que nunca cambiaran en el tiempo.
Cell Splitter
- Busca y arrastra a tu Workflow el nodo Cell Splitter ubicado dentro de la categoria Manipulation > Column > Split & Combine
- Engancha tu origen al nodo Cell Splitter y este nodo a tu destino.
- Haz doble clic sobre e nodo Cell Splitter para configurarlo.
Configuración Cell Splitter
- Column to split: especifica que columna es la que quieres separar e indicale si debe borrar la columna original después de separarla.
- Setting: indica tu delimitador, en nuestro caso la columna contiene el valor 2020-01-01 por lo que el delimitador es el guión. También tienes otras opciones por si tienes que usar caracteres de escape o si cada parte esta entrecomillada.
- Output: aquí debes indicarle si el resultado será en forma de nuevas columnas, de lista o de un conjunto entre otras opciones.
Una de las opciones más interesantes es la opción Split input column name… si la activas, también separa el nombre de la columna y se lo asignara a las nuevas columnas. Por ejemplo, si nuestra columna se llamase Año-Mes-Dia el resultado seria el siguiente:
Si el nombre de tu columna no contiene el nombre de las nuevas columnas no tendrás otra opción que usar el nodo Column Rename después de separar las columnas.
Cell Splitter By Position
Este nodo es mucho más sencillo de utilizar, pero con menos opciones, además veremos que en nuestro ejemplo de columna Fecha (2020-01-01) no obtendremos el resultado esperado. Vamos a ver como funciona y el motivo de que no nos sea útil en este caso:
- Busca y arrastra a tu Workflow el nodo Cell Splitter By Position ubicado dentro de la categoria Manipulation > Column > Split & Combine
- Engancha tu origen al nodo Cell Splitter By Position y este nodo a tu destino.
- Haz doble clic sobre e nodo Cell Splitter By Position para configurarlo.
Configuración Cell Splitter By Position
- Splits: aquí debemos indicarle cómo se va separar la columna en base a un indice y el nombre de las nuevas columnas. Este indice debe ser siempre incremental.
- Target Column: nombre de la columna a separar.
Si recuerdas, nuestra columna tiene valores del tipo 2020-01-01, si le indicamos el indice 4,7 estamos provocando crear tres nuevas columnas. La primera de ellas tendrá 4 caracteres y las otras dos 3 caracteres (7-4=3).
Si escribiésemos el indice 4,5,7,8 el resultado seria 5 columnas. La primera con 4 caracteres, la segunda con 1 (5-4), la tercera con dos (7-5), la cuarta con uno (8-7) y la quinta con el resto de caracteres.
Conclusión
Esto es solo un ejemplo del funcionamiento de estos dos nodos. En el caso de nuestra columna parece claro que la mejor opción seria utilizar el nodo Cell Splitter para utilizar la opción del delimitador. Además en caso de que tu columna sea una fecha, más adelante veremos otro articulo detallando como utilizar el nodo Extract Date&Time Fields.
Descargate este Workflow, modifica las rutas del excel de origen y destino y pruébalo tu mismo.