NovAsia

A blank field must not turn into zero during import

Unknown, not applicable and confirmed zero are different data states; an import pipeline should preserve that distinction instead of manufacturing false precision.

This article reflects the named expert’s practical perspective. See NovAsia’s editorial policy for how material is prepared and reviewed.

Zero is persuasive because it looks complete. A fee of zero, a distance of zero or a price of zero appears to be an explicit fact. That is exactly why a data import must not use zero as a convenient substitute for “we did not receive a value.”

The error can happen quietly. A source file contains an empty cell. The receiving system expects a number and applies a default. The card renders cleanly. A filter accepts the value. A calculation uses it. By the time the buyer sees the result, several parts of the product may be behaving consistently around a number that was never supplied in the first place.

Missing, zero and not applicable are separate states

These three answers may all be awkward for a numeric component, but they do not mean the same thing.

A confirmed zero says the amount or quantity is genuinely none. Missing says the value is not currently known or has not been confirmed. Not applicable says the field does not belong to this type of property or transaction at all.

For a buyer, the distinction can change the decision. A documented zero building fee is materially different from an unknown fee. A field that does not apply should not be displayed as a financial benefit. An unavailable price should not appear to mean the property is free.

The internal representation can vary, but the distinction needs to survive from source to interface. Once a blank becomes numeric zero, later components cannot reliably reconstruct the original meaning.

One false zero can contaminate several features

A wrong value rarely stays isolated. If the field is a price, ascending sort may place the property first. If it is a recurring cost, a budget calculation may understate ownership expense. If it is a distance, a location filter may produce an absurd match. If it is an area value, derived figures can become meaningless.

This is why import logic deserves more attention than a one-off correction on a public page. An editor can fix one suspicious zero manually, but the next import will recreate the same defect if the transformation rule remains unchanged.

The repair therefore starts with the semantic transition: where did “no value supplied” become “value equals zero”? That point may sit in column mapping, parsing, defaults or later normalisation. The public symptom is only the last stage.

I would not solve the problem by banning all zeros either. Real zero values exist. The product needs to know whether the source actually supplied zero and whether zero is valid for that field. Replacing one simplistic rule with another does not improve data quality.

The interface must be able to live with incomplete data

A surprising amount of bad data begins with a design that refuses to show uncertainty. Every card wants a number. Every table cell must be filled. Every sort expects a comparable value. The data pipeline then feels pressure to manufacture something so the component remains visually complete.

Property data does not deserve that treatment. Unknown values are normal. A price can be on request. A service charge may still need confirmation. An area figure may require clarification about what it includes. Availability can be pending.

A good interface treats those as legitimate states, not as broken records. “Price to be confirmed” can be much more useful than a misleading zero. A blank-looking hole in the database may be inconvenient for the team; a false number is dangerous for the buyer.

This also improves downstream behaviour. Filters can make an explicit decision about unknown values instead of accidentally treating them as the smallest number. Calculators can refuse to produce a false total. Comparisons can show which field still needs evidence.

Type validation asks whether a value can be stored as a number. That is necessary, but not enough. When a suspicious zero appears, the team also needs to understand its path.

Was zero present in the source? Was the cell blank? Did a mapping fail? Did an importer apply a default? Was the number calculated from another field? Those questions turn debugging from guesswork into evidence.

I avoid exposing a full technical lineage record to every buyer. Internally, however, enough provenance should exist to identify where meaning changed. Publicly, the buyer only needs the honest state: confirmed zero, unknown, not applicable or another clearly defined condition.

This is particularly important in systems that repeatedly import partner or project data. A small semantic error can scale quickly. The more automated the pipeline becomes, the more important it is to preserve meaning at each conversion step.

Incomplete truth is better than complete fiction

Teams naturally prefer complete datasets. Complete tables are easier to design, filter and report on. But completeness achieved by inventing values is not quality.

A zero should have evidence just like any other important number. If the source did not provide that evidence, the system should retain the uncertainty until a real value arrives. That may make the interface slightly less tidy, but it keeps the buyer’s decision grounded in what is actually known.

For me, this is one of the clearest tests of a reliable data product. It does not merely move values from one system to another. It preserves what those values mean. A blank field can be frustrating, but at least it tells us the answer is still open. A false zero closes the question with the wrong answer.