Exemplo n.º 1
0
 private IReadOnlyList <IArrowArray> InitializeFields()
 {
     IArrowArray[] result = new IArrowArray[Data.Children.Length];
     for (int i = 0; i < Data.Children.Length; i++)
     {
         result[i] = ArrowArrayFactory.BuildArray(Data.Children[i]);
     }
     return(result);
 }
Exemplo n.º 2
0
        public Array Slice(int offset, int length)
        {
            if (offset > Length)
            {
                throw new ArgumentException($"Offset {offset} cannot be greater than Length {Length} for Array.Slice");
            }

            length  = Math.Min(Data.Length - offset, length);
            offset += Data.Offset;

            ArrayData newData = Data.Slice(offset, length);

            return(ArrowArrayFactory.BuildArray(newData) as Array);
        }
Exemplo n.º 3
0
        public DictionaryArray(ArrayData data) : base(data)
        {
            data.EnsureBufferCount(2);
            data.EnsureDataType(ArrowTypeId.Dictionary);

            if (data.Dictionary == null)
            {
                throw new ArgumentException($"{nameof(data.Dictionary)} must not be null");
            }

            var dicType = (DictionaryType)data.DataType;

            data.Dictionary.EnsureDataType(dicType.ValueType.TypeId);

            var indicesData = new ArrayData(dicType.IndexType, data.Length, data.NullCount, data.Offset, data.Buffers, data.Children);

            Indices    = ArrowArrayFactory.BuildArray(indicesData);
            Dictionary = ArrowArrayFactory.BuildArray(data.Dictionary);
        }
        internal static IArrowArray Concatenate(IReadOnlyList <IArrowArray> arrowArrayList, MemoryAllocator allocator = default)
        {
            if (arrowArrayList == null || arrowArrayList.Count == 0)
            {
                return(null);
            }

            if (arrowArrayList.Count == 1)
            {
                return(arrowArrayList[0]);
            }

            var arrayDataList = new List <ArrayData>(arrowArrayList.Count);

            foreach (IArrowArray array in arrowArrayList)
            {
                arrayDataList.Add(array.Data);
            }

            return(ArrowArrayFactory.BuildArray(ArrayDataConcatenator.Concatenate(arrayDataList, allocator)));
        }
Exemplo n.º 5
0
 public ListArray(ArrayData data)
     : this(data, ArrowArrayFactory.BuildArray(data.Children[0]))
 {
 }