| <?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 = <true>) allows rewrite of such queries. |
| If it's <false>, 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:\ |
| \ |
| <<<f(a, b, c, d) = f(f(a, b), f(c, d)) for all possible values of a,b,c,d.>>>\ |
| \ |
| 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> |