Jul 21, 2021

ClickHouse tips #10: Null behavior with LowCardinality columns

Does it work? What's actually inserted?
Alejandro del Amo
Data Engineer

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 LowCardinality(Nullable(String)) instead of Nullable(String), apart of the benefits that it can bring LowCardinality if the conditions are right, also allows you to order by that column. See an example here:

Do you like this post?

Related posts

ClickHouse tips #7: Forward and backfilling null values
Add data from CSVs with different column orders
The era of JSON data analytics
Improving the data ingestion experience: better error feedback
ClickHouse tips #9: Filling gaps in time-series on ClickHouse
New feature: add column to a Data Source
May 25, 2021
A big performance boost, adding columns and more
May 31, 2021
Changelog #18: High-frequency ingestion, handling NDJSON files and more product enhancements
Feb 01, 2022
Summer Edition – What our team is reading
ClickHouse Tips #12: Apply Functions to Columns with a Single Call
Sep 29, 2021

Build fast data products, faster.

Try Tinybird and bring your data sources together and enable engineers to build with data in minutes. No credit card required, free to get started.
Need more? Contact sales for Enterprise support.