ClickHouse tips #10: Null behavior with LowCardinality columns

Does it work? What's actually inserted?
Alejandro del Amo
Data Engineer
Jul 21, 2021
  min read

If you have LowCardinality(String) column, inserting a NULL value will work fine. It will just treat it like you just have inserted an empty string (‘’). Let’s see an example.

Let’s insert some values now.

And now let’s see what has been inserted. As you can see, even though we inserted a NULL value, internally it’s saved as an empty string.

Bonus: can you create LowCardinality(Nullable(String)) columns?

Yes, you can.

Using {% code-line %}LowCardinality(Nullable(String)){% code-line-end %} instead of {% code-line %}Nullable(String){% code-line-end %}, apart of the benefits that it can bring {% code-line %}LowCardinality{% code-line-end %} if the conditions are right, also allows you to order by that column. See an example here:

Ready to build fast APIs, faster?

Sign up for a Tinybird Build Plan. It's free forever, with no credit card required.
Start Building
No credit card needed