blob: eeaa3af1e055ebf653a93d1f1ce6da1f67b92415 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.lens.cube.parse;
import java.util.Arrays;
import java.util.List;
import org.apache.lens.cube.metadata.UpdatePeriod;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
/**
* Contains all configurations of cube query rewriting.
*/
public final class CubeQueryConfUtil {
private CubeQueryConfUtil() {
}
public static final String STORAGE_TABLES_SFX = ".storagetables";
public static final String UPDATE_PERIODS_SFX = ".updateperiods";
public static final String FACT_TABLES_SFX = ".facttables";
public static final String STORAGE_KEY_PFX = ".storage.";
public static final String VALID_PFX = "lens.cube.query.valid.";
public static final String VALID_FACT_PFX = VALID_PFX + "fact.";
public static final String VALID_STORAGE_DIM_TABLES = "lens.cube.query.valid." + "dim.storgaetables";
public static final String DRIVER_SUPPORTED_STORAGES = "lens.cube.query.driver." + "supported.storages";
public static final String FAIL_QUERY_ON_PARTIAL_DATA = "lens.cube.query.fail.if.data.partial";
public static final String RESOLVE_SEGMENTATIONS = "lens.cube.query.resolve.segmentations";
public static final String NON_EXISTING_PARTITIONS = "lens.cube.query.nonexisting.partitions";
public static final String QUERY_MAX_INTERVAL = "lens.cube.query.max.interval";
public static final String PROCESS_TIME_PART_COL = "lens.cube.query.process.time" + ".partition.column";
public static final String COMPLETENESS_CHECK_PART_COL = "lens.cube.query.completeness.check.partition.column";
public static final String LOOK_AHEAD_PT_PARTS_PFX = "lens.cube.query.lookahead.ptparts.forinterval.";
public static final String ENABLE_GROUP_BY_TO_SELECT = "lens.cube.query.promote.groupby.toselect";
public static final String ENABLE_SELECT_TO_GROUPBY = "lens.cube.query.promote.select.togroupby";
public static final String ENABLE_ATTRFIELDS_ADD_DISTINCT = "lens.cube.query.enable.attrfields.add.distinct";
public static final boolean DEFAULT_ATTR_FIELDS_ADD_DISTINCT = true;
public static final String ENABLE_STORAGES_UNION = "lens.cube.query.enable.storages.union";
public static final boolean DEFAULT_ENABLE_STORAGES_UNION = false;
public static final String REPLACE_TIMEDIM_WITH_PART_COL = "lens.cube.query.replace.timedim";
public static final boolean DEFAULT_MULTI_TABLE_SELECT = true;
public static final int DEFAULT_LOOK_AHEAD_PT_PARTS = 1;
public static final boolean DEFAULT_ENABLE_GROUP_BY_TO_SELECT = false;
public static final boolean DEFAULT_ENABLE_SELECT_TO_GROUPBY = false;
public static final boolean DEFAULT_REPLACE_TIMEDIM_WITH_PART_COL = true;
public static String getLookAheadPTPartsKey(UpdatePeriod interval) {
return LOOK_AHEAD_PT_PARTS_PFX + interval.name().toLowerCase();
}
private static String getValidKeyCubePFX(String cubeName) {
return VALID_PFX + cubeName.toLowerCase();
}
private static String getValidKeyFactPFX(String factName) {
return VALID_FACT_PFX + factName.toLowerCase();
}
private static String getValidKeyStoragePFX(String factName, String storage) {
return getValidKeyFactPFX(factName) + STORAGE_KEY_PFX + storage.toLowerCase();
}
public static String getValidFactTablesKey(String cubeName) {
return getValidKeyCubePFX(cubeName) + FACT_TABLES_SFX;
}
public static String getValidStorageTablesKey(String factName) {
return getValidKeyFactPFX(factName) + STORAGE_TABLES_SFX;
}
public static String getValidUpdatePeriodsKey(String fact, String storage) {
return getValidKeyStoragePFX(fact, storage) + UPDATE_PERIODS_SFX;
}
public static List<String> getStringList(Configuration conf, String keyName) {
String str = conf.get(keyName);
List<String> list = StringUtils.isBlank(str) ? null : Arrays.asList(StringUtils.split(str.toLowerCase(), ","));
return list;
}
public static final String DISABLE_AUTO_JOINS = "lens.cube.query.disable.auto.join";
public static final boolean DEFAULT_DISABLE_AUTO_JOINS = true;
public static final String JOIN_TYPE_KEY = "lens.cube.query.join.type";
public static final String DISABLE_AGGREGATE_RESOLVER = "lens.cube.query.disable.aggregate.resolver";
public static final boolean DEFAULT_DISABLE_AGGREGATE_RESOLVER = true;
public static final String LIGHTEST_FACT_FIRST = "lens.cube.query.pick.lightest.fact.first";
public static final boolean DEFAULT_LIGHTEST_FACT_FIRST = false;
public static final String TIME_RANGE_WRITER_CLASS = "lens.cube.query.time.range.writer.class";
public static final boolean DEFAULT_BETWEEN_ONLY_TIME_RANGE_WRITER = false;
public static final String BETWEEN_ONLY_TIME_RANGE_WRITER = "lens.cube.query.between.only.time.range.writer";
public static final String DEFAULT_START_BOUND_TYPE = "CLOSED";
public static final String DEFAULT_END_BOUND_TYPE = "CLOSED";
public static final String START_DATE_BOUND_TYPE = "lens.cube.query.time.range.writer.start.bound.type";
public static final String END_DATE_BOUND_TYPE = "lens.cube.query.time.range.writer.end.bound.type";
public static final Class<? extends TimeRangeWriter> DEFAULT_TIME_RANGE_WRITER = ORTimeRangeWriter.class
.asSubclass(TimeRangeWriter.class);
public static final String PART_WHERE_CLAUSE_DATE_FORMAT = "lens.cube.query.partition.where.clause.format";
public static final String ENABLE_FLATTENING_FOR_BRIDGETABLES = "lens.cube.query.enable.flattening.bridge.tables";
public static final boolean DEFAULT_ENABLE_FLATTENING_FOR_BRIDGETABLES = false;
public static final String BRIDGE_TABLE_FIELD_AGGREGATOR = "lens.cube.query.bridge.table.field.aggregator";
public static final String DEFAULT_BRIDGE_TABLE_FIELD_AGGREGATOR = "collect_set";
public static final String DO_FLATTENING_OF_BRIDGE_TABLE_EARLY =
"lens.cube.query.flatten.bridge.tables.early";
public static final boolean DEFAULT_DO_FLATTENING_OF_BRIDGE_TABLE_EARLY = false;
public static final String BRIDGE_TABLE_FIELD_ARRAY_FILTER = "lens.cube.query.bridge.table.field.array.filter";
public static final String DEFAULT_BRIDGE_TABLE_FIELD_ARRAY_FILTER = "array_contains";
public static final String REWRITE_DIM_FILTER_TO_FACT_FILTER = "lens.cube.query.rewrite.dim.filter.to.fact.filter";
public static final boolean DEFAULT_REWRITE_DIM_FILTER_TO_FACT_FILTER = false;
public static final String COMPLETENESS_THRESHOLD = "lens.cube.query.completeness.threshold";
public static final float DEFAULT_COMPLETENESS_THRESHOLD = 100f;
}