Search in sources :

Example 1 with Column

use of com.teradata.tpcds.column.Column in project presto by prestodb.

the class TpcdsMetadata method getTableMetadata.

private static ConnectorTableMetadata getTableMetadata(String schemaName, Table tpcdsTable) {
    ImmutableList.Builder<ColumnMetadata> columns = ImmutableList.builder();
    for (Column column : tpcdsTable.getColumns()) {
        columns.add(new ColumnMetadata(column.getName(), getPrestoType(column.getType())));
    }
    SchemaTableName tableName = new SchemaTableName(schemaName, tpcdsTable.getName());
    return new ConnectorTableMetadata(tableName, columns.build());
}
Also used : ColumnMetadata(com.facebook.presto.spi.ColumnMetadata) Column(com.teradata.tpcds.column.Column) ImmutableList(com.google.common.collect.ImmutableList) SchemaTableName(com.facebook.presto.spi.SchemaTableName) ConnectorTableMetadata(com.facebook.presto.spi.ConnectorTableMetadata)

Example 2 with Column

use of com.teradata.tpcds.column.Column in project presto by prestodb.

the class TpcdsRecordSetProvider method getRecordSet.

private RecordSet getRecordSet(Table table, List<? extends ColumnHandle> columns, double scaleFactor, int partNumber, int totalParts, boolean noSexism) {
    ImmutableList.Builder<Column> builder = ImmutableList.builder();
    for (ColumnHandle column : columns) {
        String columnName = ((TpcdsColumnHandle) column).getColumnName();
        builder.add(table.getColumn(columnName));
    }
    Session session = Session.getDefaultSession().withScale(scaleFactor).withParallelism(totalParts).withChunkNumber(partNumber + 1).withTable(table).withNoSexism(noSexism);
    Results results = constructResults(table, session);
    return new TpcdsRecordSet(results, builder.build());
}
Also used : ColumnHandle(com.facebook.presto.spi.ColumnHandle) Column(com.teradata.tpcds.column.Column) Results(com.teradata.tpcds.Results) Results.constructResults(com.teradata.tpcds.Results.constructResults) ImmutableList(com.google.common.collect.ImmutableList) Session(com.teradata.tpcds.Session) ConnectorSession(com.facebook.presto.spi.ConnectorSession)

Example 3 with Column

use of com.teradata.tpcds.column.Column in project presto by prestodb.

the class TableStatisticsRecorder method recordStatistics.

public TableStatisticsData recordStatistics(Table table, double scaleFactor) {
    Session session = Session.getDefaultSession().withScale(scaleFactor).withParallelism(1).withNoSexism(false);
    List<Column> columns = ImmutableList.copyOf(table.getColumns());
    RecordCursor recordCursor = new TpcdsRecordSet(Results.constructResults(table, session), columns).cursor();
    List<ColumnStatisticsRecorder> statisticsRecorders = createStatisticsRecorders(columns);
    long rowCount = 0;
    while (recordCursor.advanceNextPosition()) {
        rowCount++;
        for (int columnId = 0; columnId < columns.size(); columnId++) {
            Comparable<?> value = getPrestoValue(recordCursor, columns, columnId);
            statisticsRecorders.get(columnId).record(value);
        }
    }
    Map<String, ColumnStatisticsData> columnSampleStatistics = IntStream.range(0, columns.size()).boxed().collect(toImmutableMap(i -> columns.get(i).getName(), i -> statisticsRecorders.get(i).getRecording()));
    return new TableStatisticsData(rowCount, columnSampleStatistics);
}
Also used : IntStream(java.util.stream.IntStream) Session(com.teradata.tpcds.Session) TpcdsRecordSet(com.facebook.presto.tpcds.TpcdsRecordSet) Results(com.teradata.tpcds.Results) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) String.format(java.lang.String.format) RecordCursor(com.facebook.presto.spi.RecordCursor) List(java.util.List) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) ImmutableList(com.google.common.collect.ImmutableList) Column(com.teradata.tpcds.column.Column) Map(java.util.Map) ColumnType(com.teradata.tpcds.column.ColumnType) Table(com.teradata.tpcds.Table) RecordCursor(com.facebook.presto.spi.RecordCursor) TpcdsRecordSet(com.facebook.presto.tpcds.TpcdsRecordSet) Column(com.teradata.tpcds.column.Column) Session(com.teradata.tpcds.Session)

Example 4 with Column

use of com.teradata.tpcds.column.Column in project presto by prestodb.

the class TableStatisticsRecorder method getPrestoValue.

private Comparable<?> getPrestoValue(RecordCursor recordCursor, List<Column> columns, int columnId) {
    if (recordCursor.isNull(columnId)) {
        return null;
    }
    Column column = columns.get(columnId);
    ColumnType.Base baseType = column.getType().getBase();
    switch(baseType) {
        case IDENTIFIER:
        case INTEGER:
        case DATE:
        case TIME:
        case DECIMAL:
            return recordCursor.getLong(columnId);
        case VARCHAR:
        case CHAR:
            return recordCursor.getSlice(columnId).toStringAscii();
    }
    throw new UnsupportedOperationException(format("Unsupported TPCDS base type [%s]", baseType));
}
Also used : ColumnType(com.teradata.tpcds.column.ColumnType) Column(com.teradata.tpcds.column.Column)

Aggregations

Column (com.teradata.tpcds.column.Column)4 ImmutableList (com.google.common.collect.ImmutableList)3 Results (com.teradata.tpcds.Results)2 Session (com.teradata.tpcds.Session)2 ColumnType (com.teradata.tpcds.column.ColumnType)2 ColumnHandle (com.facebook.presto.spi.ColumnHandle)1 ColumnMetadata (com.facebook.presto.spi.ColumnMetadata)1 ConnectorSession (com.facebook.presto.spi.ConnectorSession)1 ConnectorTableMetadata (com.facebook.presto.spi.ConnectorTableMetadata)1 RecordCursor (com.facebook.presto.spi.RecordCursor)1 SchemaTableName (com.facebook.presto.spi.SchemaTableName)1 TpcdsRecordSet (com.facebook.presto.tpcds.TpcdsRecordSet)1 ImmutableList.toImmutableList (com.google.common.collect.ImmutableList.toImmutableList)1 ImmutableMap.toImmutableMap (com.google.common.collect.ImmutableMap.toImmutableMap)1 Results.constructResults (com.teradata.tpcds.Results.constructResults)1 Table (com.teradata.tpcds.Table)1 String.format (java.lang.String.format)1 List (java.util.List)1 Map (java.util.Map)1 IntStream (java.util.stream.IntStream)1