4 votos

¿Cómo obtener una lista de atributos en FME cuando no hay registros en la tabla?

¿Cómo obtener una lista de atributos en FME cuando no hay registros en la tabla? Intento usar un PythonCaller pero cuando no hay registros, FME pasa por encima de esta tabla. En PythonCaller Yo escribo:

import fmeobjects
def FeatureProcessor(feature):
    print feature.getAllAttributeNames()

¿Es posible obtener atributos cuando no hay ningún registro?

7voto

jennz0r Puntos 48

Esto posiblemente haga lo que usted quiere.

Después de su lector oracle, ponga una fábrica NullAttributeReplacer. Conecta el lector a esa fábrica. También pon una fábrica Creator y conéctala a la fábrica NullAttributeReplacer. Reemplaza todos los NULLs por 0.

Para que los atributos que puedan venir de la tabla no sean reemplazados por NULLs, deshabilita la conexión entre ésta y el NullAttributeReplacer. Todavía tiene que estar en su lugar para que el NULL replacer sabe qué atributos a utilizar.

Esto garantiza que al menos una sola característica pasa con todos los atributos y debe ser descubrible por pythons getAllAttributeNames. Esa característica puede entonces ser desechada.

enter image description here enter image description here

Editar

Para FME2014 usando el NullAttributeMapper Necesitarás asegurarte de que estás usando Atributos Seleccionados y los que quieres que aparezcan están seleccionados.

Para la primera condición, asegúrese de que Missing está seleccionado.

El valor Map To: puede ser cualquier cosa que no sea Missing. enter image description here

1voto

JasonInVegas Puntos 565

Un enfoque alternativo es utilizar fmeObjects.FMEUniversalReader() como se indica a continuación:

Primero diríjalo al espacio de trabajo invocando .open() e incluyendo el nombre del conjunto de datos. A continuación, utilice readSchema(), que devuelve un resultado con aspecto de característica para cada elemento del espacio de trabajo.

(Es impar, pero se obtiene una característica que representa el esquema de la featureclass).

Por último, realiza un bucle a través de readSchema() y analiza los nombres de los atributos de cada nuevo elemento del espacio de trabajo. Usted explicó que desea una "lista" por lo que la salida de ellos en XML u otro contexto parece apropiado.

A veces, las respuestas más simples son las más efectivas... por favor, prueba FMEUniversalReader.readSchema().

0voto

Erik Öjebo Puntos 6937

FME 2014 NullAttributeMapper

Para los atributos especificados, comprueba el valor del atributo en la característica de entrada y, si es uno de los valores especificados, realiza la acción especificada por el parámetro Map To. Los valores que pueden coincidir son:

Empty – The attribute exists and has an empty string as its value.
Null – The attribute exists and has a value of null.
Missing (Selected Attributes Only) – The attribute does not exist. This choice does not apply if the Map parameter is set to All Attributes. We can only know that an attribute is missing if it has been explicitly specified through the Selected Attributes parameter.

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/nullattributemapper.htm

Ejemplo: http://fme-memorandum-takashi.blogspot.com/2014/01/nullattributemapper-use-case-assign.html

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