In defense of the post: In cases where you want flexibility & rapid experimentation, accessible JSON columns give that capability whilst still respecting the table structure of the SQL DB.

When the structure ossifies, converting the structure into its tabular representation makes sense.

------

Every single other comment here shitting on the choices made act as if their commits have always been perfect first try, with no need for modifications or improvements.

When the demands of your target customers constantly shift & have not yet been ossified, the optimizations made early in its process more often than not bite back hard & painful.

Thanks for giving the post a fair shot!

In our case it's more than that: the data is dynamically changing, constantly, across tenants, across their data streams and across time.

What we're talking about here is basically dynamically creating a table structure from semi-structured data. It's not about "we don't know what the right columns are", it's about "there are no universally right columns, but there are some better and some worse ones within the bounded confines of some finite amount of data".