|
No, I'm still not understanding. Here's my thinking: Scenario #1: If the tuples are the same shape (type, size), it's fine [
(string, int, date)
(string, int, date)
(string, int, date)
]
transposed: [
(string, string, string)
(int, int, int)
(date, date, date)
]
Both input and output have tables with consistent shapes (type, size)Scenario #2: Assuming its legal, if the tuples are differently shaped (by datatype), its weird (but that was true of your original table anyways), but you can still do a valid transposition to produce a valid table [
(string, int, date)
(int, date, string)
]
transposed: [
(string, int)
(int, date)
(date, string)
]
It was weird to begin with, and it's similarly weird to end with. I can't imagine the output not being a legal table by any rule that does not also disallow the input.Scenario #3: Similarly to scenario 2, If your tuples are differently shaped (by size), you can still do a transposition [
(string, int)
(string, int, date)
]
transposed: [
(string, string)
(int, int)
(date)
]
and like Scenario #2, the output is as illegal as the inputIn the latter two cases, I don't know what you'd want to do with the transposition (or even its input), but I don't see anything stopping the operation itself from being reasonable/consistent/valid. Is there another scenario I'm failing to imagine? |
In the row-oriented view: each row of a datatable is a tuple of the same shape (size and order of types as every other row) -- just like a database table. So, if the shape is (string, int, date) for row #1, its that shape for every row.
In the column-oriented view, each column is a homogenous array: every element in the column has the same type.
> [ (string, int, date) (string, int, date) (string, int, date) ]
Sure, this is a fine starting table; in row-oriented, its shape (the shape of every row) is (string, int, date). In column-oriented view, the table as a whole can be viewed as a tuple of shape (string[3], int[3], date[3]) because it has three rows. Cool.
> transposed:
> [ (string, string, string) (int, int, int) (date, date, date) ]
Right, this is no longer a datatable. The first row has shape (string, string, string). So, if its a table, the other two rows must also have shape (string, string, string); but instead, each has a different shape.