toSequence
Converts this DataFrame into a Sequence of T instances, where T is the type argument of this DataFrame.
Use it only when the type argument of this DataFrame is known to be a data class. On a DataFrame<*>, such as the result of dataFrameOf or of reading a file, this function throws an exception, because there is no data class to create. With the compiler plugin, the same happens even right after toDataFrame on a list of data class instances: the plugin gives the result a generated type argument, which is not a data class. In these cases, use toSequenceOf, or cast the DataFrame to a data class first.
The columns are matched and converted when this function is called, so the exceptions listed below are thrown right away. The T instances are created only when the sequence is iterated, one per row that is read, and each iteration creates them again.
The sequence has one T instance per row, in the order of the rows.
T has to be a data class. An interface does not work, even one marked with DataSchema. A generic data class works too, for example, Pair<String, Int>. Each instance is created by the primary constructor of T. Each constructor parameter gets the value of the column with the same name, or with the name given in ColumnName. Names are case-sensitive. The order of the columns does not matter, and columns that match no parameter are ignored. A parameter with a default value gets this value when there is no column for it.
When a column type differs from the parameter type, the values are converted the same way as in convertTo, for example, from Int to Long. A ColumnGroup becomes a nested data class, and a FrameColumn becomes a List of data class instances, or a DataFrame. A frame that goes into a DataFrame<S> parameter is converted to the schema of S the same way as in convertTo, and its other columns stay. A frame that goes into a DataFrame<*> parameter is passed as it is.
An exception is thrown when:
T is not a data class;
there is no column for a constructor parameter without a default value;
a column has
nullvalues, but its parameter is not nullable;a value cannot be converted to the parameter type;
a frame cannot be converted to the schema of its
DataFrame<S>parameter, for example, because a column ofSis missing.
For more information: See toSequence on the documentation website.
See also:
toDataFrame— the reverse operation: creates aDataFramefrom a list of objects.convertTo— changes theDataFrameto match the schema of T and returns a DataFrame instead.
Example
data class Input(val a: Int, val b: Int)
val df = dataFrameOf("a", "b")(1, 2, 3, 4)
// Only the first row becomes an `Input`
df.cast<Input>().toSequence().first() // Input(a=1, b=2)Return
Type Parameters
The type argument of this DataFrame. It has to be a data class.