Clickhouse has an ability to limit scope of IN/JOIN constructions while querying clustered tables: you could either use local tables or pass result set to querying server and do IN/JOIN there depending on your sharding scheme.
It will be nice to have same functionality for uniq* family of functions. The idea is: If you know that particular column contains only specific range of values on each shard of you cluster you could use local version of uniq functions avoiding final aggregation phase (actually replacing it with summing of values received from different shards).