blob: b389d6aec1ce8ec72eeaa03551378d97d98e1277 [file] [log] [blame]
<?xml version="1.0"?>
<!--
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.
-->
<configuration>
<property>
<name>lens.cube.query.disable.auto.join</name>
<value>true</value>
<description>Tells whether to disable automatic resolution of join conditions between tables involved.
To enable automatic resolution, this value should be false.
</description>
</property>
<property>
<name>lens.cube.query.join.type</name>
<value>INNER</value>
<description>Tells what the join type is, in-case of automatic resolution of joins is enabled</description>
</property>
<property>
<name>lens.cube.query.disable.aggregate.resolver</name>
<value>true</value>
<description>Tells whether to disable automatic resolution of aggregations for measures in a cube.
To enable automatic resolution, this value should be false.
</description>
</property>
<property>
<name>lens.cube.query.promote.groupby.toselect</name>
<value>false</value>
<description>Tells whether to promote group by clauses to be promoted to select expressions if they are already not
projected.
To enable automatic promotion, this value should be true.
</description>
</property>
<property>
<name>lens.cube.query.promote.select.togroupby</name>
<value>false</value>
<description>Tells whether to promote select expressions which is not inside any aggregate, to be promoted to
groupby clauses, if they are already not part of groupby clauses.
To enable automatic promotion, this value should be true.
</description>
</property>
<property>
<name>lens.cube.query.valid.dim.storgaetables</name>
<value></value>
<description>List of comma separated dimension storage tables that are valid. If no value is specified, all tables
are valid
</description>
</property>
<property>
<name>lens.cube.query.driver.supported.storages</name>
<value></value>
<description>List of comma separated storage names that supported by a driver. If no value is specified, all
storages are valid
</description>
</property>
<property>
<name>lens.cube.query.valid.${cubename}.facttables</name>
<value></value>
<description>List of comma separated fact tables that are valid for cube. If no value is specified, all fact tables
are valid
</description>
</property>
<property>
<name>lens.cube.query.valid.fact.${facttable}.storagetables</name>
<value></value>
<description>List of comma separated storage tables that are valid for a fact. If no value is specified, all storage
tables are valid
</description>
</property>
<property>
<name>lens.cube.query.valid.fact.${facttable}.storage.${storagename}.updateperiods</name>
<value></value>
<description>List of comma separated update periods that are valid for a fact on a storage. If no value is
specified, all update periods are valid
</description>
</property>
<property>
<name>lens.cube.query.fail.if.data.partial</name>
<value>false</value>
<description>Whether to fail the query of data is partial</description>
</property>
<property>
<name>lens.cube.query.completeness.check.partition.column</name>
<value></value>
<description>The Supported Partition Column for the Data Completeness check</description>
</property>
<property>
<name>lens.cube.query.completeness.threshold</name>
<value>100</value>
<description>The query will fail if data completeness is less than the set threshold given that the flag
"lens.cube.query.fail.if.data.partial" is set as true</description>
</property>
<property>
<name>lens.cube.query.nonexisting.partitions</name>
<value></value>
<description>The list of comma separated non existing partitions, if query can run with partial data. The value will
be set by the cube query rewriter
</description>
</property>
<property>
<name>lens.cube.query.max.interval</name>
<value></value>
<description>Maximum value of the update period that the query timed dimensions can take values of. For example, if
query involves month ranges, user can say query maximum interval is daily, then no monthly partitions will be
picked.
</description>
</property>
<property>
<name>lens.cube.query.process.time.partition.column</name>
<value></value>
<description>The column name which is a process time column. If process time column is specified, query rewriter
will look ahead the partitions of other timed dimensions inside this column.
</description>
</property>
<property>
<name>lens.cube.query.lookahead.ptparts.forinterval.${interval}</name>
<value>1</value>
<description>The value of number of lookahead process time partitions for interval specified. Interval can be any
Update period.
</description>
</property>
<property>
<name>lens.cube.query.replace.timedim</name>
<value>true</value>
<description>Tells whether timedim attribute queried in the time range should be replaced with its corresponding
partition column name.
</description>
</property>
<property>
<name>lens.cube.query.pick.lightest.fact.first</name>
<value>false</value>
<description>If set to true, lightest fact will be resolved first than resolving storages. Otherwise, storages will
be resolved to check all partitions exist and then pick lightest fact among candidates
</description>
</property>
<property>
<name>lens.cube.query.time.range.writer.class</name>
<value>org.apache.lens.cube.parse.ORTimeRangeWriter</value>
<description>The timerange writer class which specifies how the resolved partitions in timeranges should be written
in final query. Available writers are org.apache.lens.cube.parse.ORTimeRangeWriter and
org.apache.lens.cube.parse.BetweenTimeRangeWriter
</description>
</property>
<property>
<name>lens.cube.query.partition.where.clause.format</name>
<value></value>
<description>The simple date format of how the queried partition should be put in where clause. If nothing is
specified, it will use the format from org.apache.lens.cube.metadata.UpdatePeriod for each type of partition
</description>
</property>
<property>
<name>lens.cube.query.enable.attrfields.add.distinct</name>
<value>true</value>
<description>When the query has only attribute fields projected from cube and the flag is set to true, distinct
clause will be added for the projection so that no duplicate values will be projected. If flag is set to false,
projection wont be changed, result might include duplicate values.
</description>
</property>
<property>
<name>lens.cube.query.enable.storages.union</name>
<value>false</value>
<description>Sometimes One storage table doesn't contain all required partitions, and the query needs to be
answered from two storage tables. Enabling this (make value = &lt;true&gt;) allows rewrite of such queries.
If it's &lt;false&gt;, then such queries will fail in rewrite phase.
The feature should only be enabled when all the aggregate
functions used in the query (explicitly or implicitly picked from default aggregates of used measures) are
transitive. Transitive aggregate functions are those that follow the following property:\
\
&lt;&lt;&lt;f(a, b, c, d) = f(f(a, b), f(c, d)) for all possible values of a,b,c,d.&gt;&gt;&gt;\
\
e.g. SUM, MAX, MIN etc are transitive aggregate functions, while AVG, COUNT etc are not.
</description>
</property>
<property>
<name>lens.cube.query.enable.flattening.bridge.tables</name>
<value>false</value>
<description>Flag specifies if fields selected have to be flattened or not, if they are coming from tables with many
to many relationship in join. If false, field selection will be simple join and selecting the field. If true, the
fields from bridge tables will be aggregated grouped by join key.
</description>
</property>
<property>
<name>lens.cube.query.bridge.table.field.aggregator</name>
<value>collect_set</value>
<description>The field aggregator function to be used for aggregating fields from bridge tables. Would be used
only when flattening is enabled. The value can be passed for each query. During typical deployments it would
be passed for each driver, as the function could be different for each driver.
</description>
</property>
<property>
<name>lens.cube.query.bridge.table.field.array.filter</name>
<value>array_contains</value>
<description>The array filter function to be used for filter on fields from bridge tables. Would be used
only when flattening is enabled and not flattening early. The value can be passed for each query.
During typical deployments it would be passed for each driver, as the function could be different for each
driver. Signature of the filter getting passed here should be very similar to array_contains. i.e.
array_contains(array, value) to return true if array contains value.
</description>
</property>
<property>
<name>lens.cube.query.flatten.bridge.tables.early</name>
<value>false</value>
<description>Flag specifies if fields selected have to be flattened earlier to applying any expression on top
of them, For ex: sub_str(bridge_field) is the expression, if the property is set to true, sub_str will be
applied on aggregated field. If set to false, aggregate will applied on top of the expression i.e. sub_str.
</description>
</property>
<property>
<name>lens.cube.query.rewrite.dim.filter.to.fact.filter</name>
<value>false</value>
<description>Flag specifies if dimension filter has to be rewritten as fact filter. for eg.
where dim.name in ('x', 'y')
will become
where fact.dimid in (select dim.id from dim where dim.name in ('x','y'))
</description>
</property>
</configuration>