From f3c4b0c61f8963480e615e7da5aceff32a07f2e7 Mon Sep 17 00:00:00 2001 From: Aleksei Smirnov Date: Sun, 22 Oct 2023 19:52:50 +0300 Subject: [PATCH] Add support for Apache.Arrow.Types.TimestampType to DataFrame --- .../DataFrame.Arrow.cs | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) 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}"); }