diff --git a/src/Microsoft.Data.Analysis/DataFrame.Arrow.cs b/src/Microsoft.Data.Analysis/DataFrame.Arrow.cs index 2d67b9ee78..7a0aae7cbf 100644 --- a/src/Microsoft.Data.Analysis/DataFrame.Arrow.cs +++ b/src/Microsoft.Data.Analysis/DataFrame.Arrow.cs @@ -102,11 +102,25 @@ private static void AppendDataFrameColumnFromArrowArray(Field field, IArrowArray } break; case ArrowTypeId.Date64: - Date64Array arrowDate64Array = (Date64Array)arrowArray; - dataFrameColumn = new DateTimeDataFrameColumn(fieldName, arrowDate64Array.Data.Length); - for (int i = 0; i < arrowDate64Array.Data.Length; i++) { - dataFrameColumn[i] = arrowDate64Array.GetDateTime(i); + Date64Array arrowDate64Array = (Date64Array)arrowArray; + var dataTimeDataFrameColumn = new DateTimeDataFrameColumn(fieldName, arrowDate64Array.Data.Length); + for (int i = 0; i < arrowDate64Array.Data.Length; i++) + { + dataTimeDataFrameColumn[i] = arrowDate64Array.GetDateTime(i); + } + dataFrameColumn = dataTimeDataFrameColumn; + } + break; + case ArrowTypeId.Timestamp: + { + TimestampArray arrowTimeStampArray = (TimestampArray)arrowArray; + var dataTimeDataFrameColumn = new DateTimeDataFrameColumn(fieldName, arrowTimeStampArray.Data.Length); + for (int i = 0; i < arrowTimeStampArray.Data.Length; i++) + { + dataTimeDataFrameColumn[i] = arrowTimeStampArray.GetTimestamp(i)?.DateTime; + } + dataFrameColumn = dataTimeDataFrameColumn; } break; case ArrowTypeId.Decimal128: @@ -122,7 +136,7 @@ private static void AppendDataFrameColumnFromArrowArray(Field field, IArrowArray case ArrowTypeId.Null: case ArrowTypeId.Time32: case ArrowTypeId.Time64: - case ArrowTypeId.Timestamp: + default: throw new NotImplementedException($"{fieldType.Name}"); }