1 votos

Utilizar FME para eliminar las columnas con todos los valores perdidos

Tengo una tabla con más de 100 columnas, de las cuales muchas no tienen valores (o faltan valores) en cada línea. En FME, me gustaría eliminar toda la columna de la tabla en el caso de que no se encuentren valores en dicha columna.

Ejemplo: | Columna 1 Columna 2 Columna 3 | -------- | -------------- |-------------- | | Primera entrada | falta valor | Primera entrada | Falta valor | Segunda entrada: valor omitido. Segunda entrada: valor omitido.

En este caso, me gustaría eliminar la columna 2, pero mantener las columnas 1 y 3.

0voto

MobileCushion Puntos 217

Por lo tanto, hay varios lugares en los que podría querer eliminar el atributo.

Si desea eliminarlo del propio espacio de trabajo, deberá hacerlo manualmente, por ejemplo con un AttributeManager. No puedes hacerlo automáticamente, o cuando se ejecuta, porque FME no actualizará el espacio de trabajo.

enter image description here

Así que ocultarlo en el espacio de trabajo de arriba es una tarea manual.

Si quieres eliminar el atributo de los propios datos, es bastante fácil. De hecho, si el valor ya está establecido en <Missing> entonces FME considerará que ha desaparecido. Si es otro valor, puedes usar un transformador NullAttributeMapper para manejarlo:

enter image description here

Por lo tanto, si el valor es literalmente "valor omitido", como en los datos anteriores, este transformador lo convierte en un verdadero valor omitido al estilo de FME.

Seguirá viéndolo en la tabla de vista previa visual (etiquetada como <Missing> ) pero no en la ventana de información de características:

enter image description here

Pero, por supuesto, eso no es particularmente útil si quieres que se elimine también de cualquier dato de salida. Eso requiere un poco más de esfuerzo.

En primer lugar, añadimos un transformador SchemaScanner (he eliminado partes de la imagen para mayor claridad):

enter image description here

Básicamente se trata de crear el esquema (estructura de datos) que queremos escribir. He dicho que ignoremos los atributos que empiezan por csv_ o fme_ o multi_. También he dicho que ignorar cualquier vacío (falta) atributos.

Ahora quiero escribir los datos; en mi caso, vuelvo a CSV:

enter image description here

Observe que ambas salidas de SchemaScanner están conectadas y que le he dicho que obtenga el esquema de la función de esquema (y de ningún otro sitio).

En la pestaña Atributos de usuario, está configurado como Dinámico y he eliminado TODAS las definiciones de atributos:

enter image description here

Ejecute el espacio de trabajo, y esto es lo que obtengo:

Column 1|Column 3
First entry | First entry
Second entry | Second entry

Espero que no sea demasiado confuso. Básicamente, depende de dónde desea eliminar los atributos. Si es de los datos de salida, entonces usted necesita utilizar un esquema dinámico.

Respondí a una pregunta similar durante una retransmisión en directo. Puede encontrar la grabación aquí . La diferencia es que allí el usuario quería distribuir sus datos en múltiples salidas, lo cual es una complicación que no creo que necesites. Pero sigue la misma caída de campos vacíos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X