Null Attributes

Null attributes are a very important part of FME’s attribute handling. Not every dataset has null values, and not every format supports them; but when they do exist it is important for FME to handle them correctly.

What is a Null Value?

In general, a null attribute value is the equivalent of nothing. However, it’s important to be precise in our terminology because there are many ways to represent nothing:

  • An attribute has a particular state that indicates nothingness (null)
  • An attribute has a particular value that indicates nothingness (for example, -999)
  • An attribute exists but has no value (empty)
  • An attribute doesn’t exist (missing)
  • A numeric attribute is NaN (Not a Number)
  • A numeric attribute has a value of zero

In fact, Safe Software’s developers identified fifteen (15) different ways for “nothing” to be represented in spatial and tabular data.

Professor Lynn Guistic says…
In case you are wondering, yes, our developers were the subject of many jokes for having spent six months "working on nothing"!

So when we talk about null, it has a particular meaning. For us, null is a specific state that is deliberately set to signify that the information does not exist. It tells us that the lack of information is not a mistake, as a missing or empty value might be.

Because there are so many different methods, this section will discuss ways to handle "nothing" attribute values, but with a particular emphasis on Null values.

How does FME Represent Nothing?

FME’s internal engine has its own state to represent null. However, when presented to the user, a null value is usually represented as <null>.

For example, this feature in the Logger has <null> for the ParkName attribute:

Similarly, the FME Data Inspector will depict nulls as <null>:

Notice how we have a wide range of "nothing" values here. The ParkName is a true <null>, the RefParkId has a value of -9999, and Washrooms is <missing> (meaning the attribute doesn't exist).

Professor Lynn Guistic says…
<missing> is an interesting concept. You might be asking, "how do we know when an attribute is missing"? But a better question is "how do we know that the attribute should exist"?

We know it should exist because it appears in the schema defined in a reader. For example, in the above screenshot, Washrooms appears in the schema, but for some reason certain features do not have that attribute. That makes the attribute <missing>.

results matching ""

    No results matching ""