public DataView(IHostEnvironment env, ArrayDataViewBuilder builder, int rowCount) { Contracts.AssertValue(env, "env"); _host = env.Register("ArrayDataView"); _host.AssertValue(builder); _host.Assert(rowCount >= 0); _host.Assert(builder._names.Count == builder._columns.Count); _columns = builder._columns.ToArray(); var schemaCols = new Schema.Column[_columns.Length]; for (int i = 0; i < schemaCols.Length; i++) { var meta = new Schema.Metadata.Builder(); if (builder._getSlotNames.TryGetValue(builder._names[i], out var slotNamesGetter)) { meta.AddSlotNames(_columns[i].Type.VectorSize, slotNamesGetter); } if (builder._getKeyValues.TryGetValue(builder._names[i], out var keyValueGetter)) { meta.AddKeyValues(_columns[i].Type.KeyCount, TextType.Instance, keyValueGetter); } schemaCols[i] = new Schema.Column(builder._names[i], _columns[i].Type, meta.GetMetadata()); } _schema = new Schema(schemaCols); _rowCount = rowCount; }
private void AddMetadata(int iinfo, Schema.Metadata.Builder builder) { builder.Add(InputSchema[_parent.ColumnPairs[iinfo].input].Metadata, name => name == MetadataUtils.Kinds.SlotNames); ValueGetter <VBuffer <ReadOnlyMemory <char> > > getter = (ref VBuffer <ReadOnlyMemory <char> > dst) => { GetKeyValues(iinfo, ref dst); }; builder.AddKeyValues(CharsCount, TextType.Instance, getter); }