All great points by Gian. I will also point out that data locality matters too. Depending on how you are ingesting the data, you should use range partitioning (automatic if you are using SQL based ingest).
https://imply.io/blog/multi-dimensional-range-partitioning
While I have not directly verified this, range partitioning would make the dictionary compression (that Gian linked), even more effective. Because the dimensions with similar values are going to land in the same segment and the compression algorithm does much better when the values are similar.
Dictionary compression is going to be available in 25.0 which is just around the corner.