Consider these two datasets:
d1 = Transpose@Dataset[<|"a" -> Range[5]|>];
d2 = Transpose@Dataset[<|"b" -> Range[5, 1, -1]|>];
{d1, d2}

What's the simplest way to concatenate them "horizontally" and get the following?

Is there a way without explicitly extracting the contents of the datasets, i.e. resorting to Normal?
I would have expected Join[d1, d2, 2] to work, but it doesn't. Dataset@Join[Normal@d1, Normal@d2, 2] works but it's complicated. Transpose@Join[Transpose[d1], Transpose[d2]] is also complicated. For plain old matrices (lists of lists) I'd just use ArrayFlatten, which doesn't work on Datasets.
I have the same question for the case where the rows are labelled too:
d1 = Dataset[<|"x" -> <|"a" -> 1|>, "y" -> <|"a" -> 2|>, "z" -> <|"a" -> 3|>|>];
d2 = Dataset[<|"x" -> <|"b" -> 4|>, "y" -> <|"b" -> 5|>, "z" -> <|"b" -> 6|>|>];
{d1, d2}

Assume an identical number of rows and identical row labels between d1 and d2.

Join[d1, d2, 2]does not work given thatJoinotherwise does. Have you filed a report? – Mr.Wizard May 20 '15 at 08:02Association:brick ::Dataset:building. The functionality is sophisticated, for example, I wrote 1-line recursive Trie constructorQueryto index (reconstruct) a variable-depth file system tree. – alancalvitti May 26 '15 at 21:48