Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

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:

Subscribe to our newsletter

Musings on transformations, tables and everything in between.