@Override public ConfigPhysicalTable build(ResourceDictionaries dictionaries, DataSourceMetadataService metadataService) { return new StrictPhysicalTable( getName(), getTimeGrain(), buildColumns(dictionaries.getDimensionDictionary()), getLogicalToPhysicalNames(), metadataService, getExpectedStartDate(), getExpectedEndDate() ); } }
@Override public ConfigPhysicalTable build(ResourceDictionaries dictionaries, DataSourceMetadataService metadataService) { return new SqlPhysicalTable( getName(), getTimeGrain(), buildColumns(dictionaries.getDimensionDictionary()), getLogicalToPhysicalNames(), new EternalAvailability(DataSourceName.of(getName().asName()), metadataService), schemaName, timestampColumn ); }
@Override public ConfigPhysicalTable build( ResourceDictionaries dictionaries, DataSourceMetadataService metadataService ) { return new PermissivePhysicalTable( getName(), getTimeGrain(), buildColumns(dictionaries.getDimensionDictionary()), getLogicalToPhysicalNames(), metadataService ); } }
TestPhysicalTableDefinitionUtils.buildShapeTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.SHAPES) logicalTableTableDefinitions.put( TestLogicalTableName.PETS, TestPhysicalTableDefinitionUtils.buildPetTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.PETS) logicalTableTableDefinitions.put( TestLogicalTableName.MONTHLY, TestPhysicalTableDefinitionUtils.buildMonthlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.MONTHLY) logicalTableTableDefinitions.put( TestLogicalTableName.HOURLY, TestPhysicalTableDefinitionUtils.buildHourlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.HOURLY) logicalTableTableDefinitions.put( TestLogicalTableName.HOURLY_MONTHLY, TestPhysicalTableDefinitionUtils.buildHourlyMonthlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.HOURLY_MONTHLY)
/** * Load a new physical table into the dictionary and return the loaded physical table. * * @param definition A config object for the physical table * @param metricNames The Set of metric names on the table * @param dictionaries The resource dictionaries for reading and storing resource data * * @return The physical table created * * @deprecated use buildPhysicalTableWithDependency instead, which also supports building table with dependencies */ @Deprecated protected PhysicalTable loadPhysicalTable( PhysicalTableDefinition definition, Set<FieldName> metricNames, ResourceDictionaries dictionaries ) { LOG.debug( "Building table {} with deprecated loadPhysicalTable method, use buildPhysicalTableWithDependency " + "instead", definition.getName().asName() ); return definition.build(dictionaries, getDataSourceMetadataService()); }
/** * Build hourly monthly table definitions. * * @param testDimensions Dimensions to load in the tables * @param metricNames The field name of metrics to build with * * @return the hourly monthly table definitions */ public static LinkedHashSet<PhysicalTableDefinition> buildHourlyMonthlyTableDefinitions( TestDimensions testDimensions, Set<FieldName> metricNames ) { return Stream.concat( buildHourlyTableDefinitions(testDimensions, metricNames).stream(), buildMonthlyTableDefinitions(testDimensions, metricNames).stream() ).collect(Collectors.toCollection(LinkedHashSet::new)); }
/** * Helper method for sub-classes to convert dimension configs into dimension columns and create metric columns. * * @param dimensionDictionary Dictionary for dimension name to dimension columns * * @return all columns including dimension columns and metric columns */ protected Set<Column> buildColumns(DimensionDictionary dimensionDictionary) { return Stream.concat( // Load the dimension columns getDimensionConfigs().stream() .map(DimensionConfig::getApiName) .map(dimensionDictionary::findByApiName) .map(DimensionColumn::new), // And the metric columns getMetricNames().stream() .map(FieldName::asName) .map(MetricColumn::new) ).collect(Collectors.toCollection(LinkedHashSet::new)); } }
/** * Build the pet table definitions. * * @param testDimensions Dimensions to build the tables with * @param metricNames The field name of metrics to build with * * @return the pet table definitions */ public static LinkedHashSet<PhysicalTableDefinition> buildPetTableDefinitions( TestDimensions testDimensions, Set<FieldName> metricNames ) { return Utils.asLinkedHashSet( new ConcretePhysicalTableDefinition( ALL_PETS, DAY.buildZonedTimeGrain(DateTimeZone.UTC), metricNames, testDimensions.getDimensionConfigurationsByApiName(BREED, SEX, SPECIES) ) ); }
public TableLoader getTableLoader() { return new TestTableLoader(new TestDataSourceMetadataService()); }
/** * Load several logical tables into the logicalDictionary, each with their own scoped metric dictionary. * <p> * Note: This builds the logical tables as well. * * @param nameGroupMap A map of logical table name to table group information * @param validGrains The accepted grains for the logical table * @param tableDictionary The logical table dictionary to be populated * @param scopedMetrics A mapping from table name to the scoped MetricDictionary to use for that table */ public void loadLogicalTablesWithGranularities( Map<String, TableGroup> nameGroupMap, Set<? extends Granularity> validGrains, LogicalTableDictionary tableDictionary, Map<String, MetricDictionary> scopedMetrics ) { for (Map.Entry<String, TableGroup> entry : nameGroupMap.entrySet()) { String logicalTableName = entry.getKey(); TableGroup group = entry.getValue(); loadLogicalTableWithGranularities( logicalTableName, group, validGrains, tableDictionary, scopedMetrics.get(logicalTableName) ); } }
/** * Constructor for sub-class to call. * * @param name Table name of the physical table * @param timeGrain Zoned time grain of the table * @param metricNames The Set of metric names on the table * @param dimensionConfigs Set of dimensions on the table as dimension configs * @param expectedStartDate The expected start date of the datasource the constructed table will represent. Null * indicates there is NO expected start date * @param expectedEndDate The expected end date of the datasource the constructed table will represent. Null * indicates there is NO expected end date */ protected PhysicalTableDefinition( TableName name, ZonedTimeGrain timeGrain, Set<FieldName> metricNames, Set<? extends DimensionConfig> dimensionConfigs, DateTime expectedStartDate, DateTime expectedEndDate ) { this.name = name; this.timeGrain = timeGrain; this.metricNames = ImmutableSet.copyOf(metricNames); this.dimensionConfigs = ImmutableSet.copyOf(dimensionConfigs); this.logicalToPhysicalNames = Collections.unmodifiableMap(buildLogicalToPhysicalNames(dimensionConfigs)); this.expectedStartDate = expectedStartDate; this.expectedEndDate = expectedEndDate; }
/** * Build a map from physical table name to its table definition. * * @param physicalTableDefinitions Definitions to build the map from * * @return the map of physical table name to its table definition */ private Map<String, PhysicalTableDefinition> buildPhysicalTableDefinitionDictionary( Set<PhysicalTableDefinition> physicalTableDefinitions ) { return physicalTableDefinitions.stream() .collect(Collectors.toMap(definition -> definition.getName().asName(), Function.identity())); }
.collect(Collectors.toSet()); return buildDimensionSpanningTableGroup( currentTableGroupTableNames, tableDefinitions,
/** * Load the Dimensions, Metrics, and Tables. */ public void load() { dimensionLoader.loadDimensionDictionary(dictionaries.getDimensionDictionary()); // metric loader might dependent on dimension dictionary, so load dimension first metricLoader.loadMetricDictionary(dictionaries.getMetricDictionary(), dictionaries.getDimensionDictionary()); tableLoader.loadTableDictionary(dictionaries); LOG.info("Initialized ConfigurationLoader"); LOG.info(dictionaries.toString()); }
TestPhysicalTableDefinitionUtils.buildShapeTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.SHAPES) logicalTableTableDefinitions.put( TestLogicalTableName.PETS, TestPhysicalTableDefinitionUtils.buildPetTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.PETS) logicalTableTableDefinitions.put( TestLogicalTableName.MONTHLY, TestPhysicalTableDefinitionUtils.buildMonthlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.MONTHLY) logicalTableTableDefinitions.put( TestLogicalTableName.HOURLY, TestPhysicalTableDefinitionUtils.buildHourlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.HOURLY) logicalTableTableDefinitions.put( TestLogicalTableName.HOURLY_MONTHLY, TestPhysicalTableDefinitionUtils.buildHourlyMonthlyTableDefinitions( testDimensions, TestDruidMetricName.getByLogicalTable(TestLogicalTableName.HOURLY_MONTHLY)
/** * Build hourly monthly table definitions. * * @param testDimensions Dimensions to load in the tables * @param metricNames The field name of metrics to build with * * @return the hourly monthly table definitions */ public static LinkedHashSet<PhysicalTableDefinition> buildHourlyMonthlyTableDefinitions( TestDimensions testDimensions, Set<FieldName> metricNames ) { return Stream.concat( buildHourlyTableDefinitions(testDimensions, metricNames).stream(), buildMonthlyTableDefinitions(testDimensions, metricNames).stream() ).collect(Collectors.toCollection(LinkedHashSet::new)); }
/** * Build the pet table definitions. * * @param testDimensions Dimensions to build the tables with * @param metricNames The field name of metrics to build with * * @return the pet table definitions */ public static LinkedHashSet<PhysicalTableDefinition> buildPetTableDefinitions( TestDimensions testDimensions, Set<FieldName> metricNames ) { return Utils.asLinkedHashSet( new ConcretePhysicalTableDefinition( ALL_PETS, DAY.buildZonedTimeGrain(DateTimeZone.UTC), metricNames, testDimensions.getDimensionConfigurationsByApiName(BREED, SEX, SPECIES) ) ); }
public TableLoader getTableLoader() { return new TestTableLoader(new TestDataSourceMetadataService()); }
/** * Load a logical table into the logicalDictionary. * <p> * Note: This builds the logical table as well. * * @param logicalTableName The logical table name * @param nameGroup The table group information for the logical table * @param validGrains The accepted grains for the logical table * @param dictionaries The resource dictionaries for reading and storing configuration */ public void loadLogicalTableWithGranularities( String logicalTableName, TableGroup nameGroup, Set<? extends Granularity> validGrains, ResourceDictionaries dictionaries ) { loadLogicalTableWithGranularities( logicalTableName, nameGroup, validGrains, dictionaries.getLogicalDictionary(), dictionaries.getMetricDictionary() ); }
) { return Utils.asLinkedHashSet( new ConcretePhysicalTableDefinition( ALL_SHAPES, DAY.buildZonedTimeGrain(DateTimeZone.UTC), testDimensions.getDimensionConfigurationsByApiName(COLOR, SIZE, SHAPE, OTHER, MODEL) ), new ConcretePhysicalTableDefinition( COLOR_SHAPES_HOURLY, HOUR.buildZonedTimeGrain(DateTimeZone.UTC), testDimensions.getDimensionConfigurationsByApiName(COLOR) ), new ConcretePhysicalTableDefinition( COLOR_SHAPES, DAY.buildZonedTimeGrain(DateTimeZone.UTC), testDimensions.getDimensionConfigurationsByApiName(COLOR) ), new ConcretePhysicalTableDefinition( COLOR_SHAPES_MONTHLY, MONTH.buildZonedTimeGrain(DateTimeZone.UTC), testDimensions.getDimensionConfigurationsByApiName(COLOR) ), new ConcretePhysicalTableDefinition( COLOR_SIZE_SHAPES, DAY.buildZonedTimeGrain(DateTimeZone.UTC),