Trucos y Consejos

test3
Consejos y trucos útiles sobre FME
Descubre todo el potencial del transformador SchemaScanner

El transformador SchemaScanner fue incorporado en la versión de FME 2022, por lo tanto, es uno de los transformadores más recientes añadidos a la lista de los más de 500 disponibles en FME, si descubres todo su potencial se convertirá en uno de tus favoritos. 

 

¿Cómo funciona?

El transformador SchemaScanner crea un atributo de tipo lista con los tipos de datos correspondientes a los features que analiza. Esto permite manipular fácilmente el esquema de nuestros conjuntos de datos, por lo que posibles casos de uso serían:

 

  • Escribir dinámicamente diferentes archivos sin conocer el esquema previamente
  • Asegurar que un writer dinámico reciba el esquema correcto
  • Modificar el esquema antes de que llegue al writer

 

Ahora que tenemos una idea general del SchemaScanner, vamos a ver un posible caso de uso. Para ello vamos a partir de una geodatabase y un GeoJSON cuyo esquema de datos desconocemos, y queremos convertirlos en varios archivos GeoParquet agrupados por el nombre del Feature Type. Lo primero que debemos hacer es añadir los dos readers para leer los datos de entrada: una Geodatabase y un GeoJSON y conectarlos al SchemaScanner.

 

SchemaScanner

 

Antes de ejecutar esta primera parte del flujo, es necesario comprobar los parámetros del SchemaScanner. 

¿Cómo se configuran los parámetros del SchemaScanner?

  1. El primer parámetro que debemos de tener en cuenta es activar la opción de Agrupar Por Grupos y seleccionar el atributo fme_feature_type para poder generar tantos esquemas como Feature Types entrada haya. 

     

    SchemaScanner

     

     

  2. Dentro de los parámetros de General, es necesario tener en cuenta dos parámetros: Generar Esquema Antes de Features de Datos e Ignorar Atributos que Contengan.
    En el parámetro Generar Esquema Antes de Datos establecemos el valor Sí, con la finalidad de que el feature de esquema se genere antes que los datos. Esto es importante, ya que el esquema debe de llegar al writer antes de que lleguen los features que lo van a utilizar. El segundo parámetro que debemos considerar es Ignorar Atributos que Contengan, que nos va a permitir descartar atributos que no necesitemos en el writer utilizando una expresión regular, como pueden ser los atributos de formato. En nuestro ejemplo vamos a escribir la siguiente expresión regular: ^multi|^fme|^json|^filegdb.

     

    SchemaScanner

     

     

  3. En los parámetros de Tipos de Datos dejamos la configuración de parámetros Numérico y Cadena de Texto con el valor que viene por defecto, es decir con los parámetros de Tipos Estándar. De esta manera FME creará un tipo de dato como fme_buffer o fme_real sin un acho explícito. En el parámetro Atributos No Encontrados/Nulos/Vacíos, para no ignorar los atributos que contengan features nulos establecemos el valor Utilizar Tipo de Datos Por Defecto.

     

    SchemaScanner

     

     

  4. El siguiente conjunto de parámetros al que debemos prestar atención son los Tratamientos de Fechas. Dado que nuestros datos de entrada no contienen ningún atributo con fechas, podemos dejar la configuración en su valor por defecto, es decir, No Detectar Fechas. En el caso de que los datos de entrada sí contengan fechas, debemos establecer el formato adecuado para que FME pueda asignarlo como un tipo de datos fecha.

     

    SchemaScanner

     

     

  5. Por último, es necesario definir el nombre de atributo de salida del esquema. Para nuestro ejemplo podemos utilizar el nombre por defecto: fme_feature_type_name.

     

El SchemaScanner ya está preparado para ejecutarse. Como resulta se deberían obtener tantos atributos de esquema como Feature Types tengamos en los reader.

El resultado

El objetivo final es escribir dinámicamente datos en formato GeoParquet. Por tanto, añadimos un writer con formato GeoParquet y seleccionamos como definición del Feature Type la opción dinámica. Una vez añadido al espacio de trabajo, conectamos los puertos de salida Output y el Schema del SchemaScanner al writer dinámico. 

 

SchemaScanner

 

Antes de ejecutar el flujo completo es necesario configurar los parámetros del Feature Type del writer. En la ventana de parámetros debemos de establecer el Nombre del Feature Type con el atributo fme_feature_type porque queremos generar un archivo de GeoParquet por cada Feature Type. Al ser un writer dinámico tenemos que revisar los parámetros establecidos en Definición de Esquema Dinámico. En el parámetro Orígenes del Esquema debemos establecer "Esquema a Partir de Feature de Esquema" y en Nombre de Definición de Esquema el atributo fme_feature_type_name si lo hubieras establecido con el nombre del atributo de esquema por defecto.

 

SchemaScanner

 

Ya tenemos todos listo para ejecutar nuestro flujo. Si lo ejecutamos y comprobamos los archivos creados deberíamos tener tantos archivos GeoParquet como Feature Types tengamos en los reader. 

 

SchemaScanner

 

Con el espacio de trabajo que hemos creados no tenemos que preocuparnos por el esquema de entrada de los datos o si el nombre de los Feature Type de entrada cambian.

Puedes descubrir más trucos y consejos sobre cómo trabajar con esquemas dinámicos en el curso de Uso avanzado de FME Form. Consulta las próximas fechas en nuestro calendario de formación.

Contacto

Francisco Girón Gesteira

Francisco Girón Gesteira

+34 911 391 240