You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by am...@apache.org on 2013/05/06 09:03:54 UTC
svn commit: r1479477 - in
/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse:
AliasReplacer.java LeastDimensionResolver.java
Author: amareshwari
Date: Mon May 6 07:03:54 2013
New Revision: 1479477
URL: http://svn.apache.org/r1479477
Log:
Add least dimension resolver
Modified:
hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java
hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java
Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java?rev=1479477&r1=1479476&r2=1479477&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java Mon May 6 07:03:54 2013
@@ -1,6 +1,5 @@
package org.apache.hadoop.hive.ql.cube.parse;
-import java.util.List;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
@@ -8,7 +7,6 @@ import org.apache.hadoop.conf.Configurat
public class AliasReplacer implements ContextRewriter {
public AliasReplacer(Configuration conf) {
- // TODO Auto-generated constructor stub
}
@Override
@@ -25,11 +23,6 @@ public class AliasReplacer implements Co
// 2: (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL src) key))
// (TOK_SELEXPR (TOK_FUNCTION count (. (TOK_TABLE_OR_COL src) value))))
// 3: (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL src) key) srckey))))
-
- Map<String, List<String>> tblToColumns = cubeql.getTblToColumns();
- for (Map.Entry<String, List<String>> entry : tblToColumns.entrySet()) {
- System.out.println("Table: " + entry.getKey() + "Columns: " + entry.getValue());
- }
Map<String, String> colToTableAlias = cubeql.getColumnsToTableAlias();
if (colToTableAlias == null) {
return;
Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java?rev=1479477&r1=1479476&r2=1479477&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java Mon May 6 07:03:54 2013
@@ -1,19 +1,49 @@
package org.apache.hadoop.hive.ql.cube.parse;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.ql.cube.metadata.CubeFactTable;
import org.apache.hadoop.hive.ql.parse.SemanticException;
public class LeastDimensionResolver implements ContextRewriter {
public LeastDimensionResolver(Configuration conf) {
- // TODO Auto-generated constructor stub
}
@Override
public void rewriteContext(CubeQueryContext cubeql)
throws SemanticException {
- // TODO Auto-generated method stub
+ if (cubeql.getCube() != null) {
+ Map<CubeFactTable, Integer> dimWeightMap =
+ new HashMap<CubeFactTable, Integer>();
+
+ for (CubeFactTable fact : cubeql.getCandidateFactTables()) {
+ dimWeightMap.put(fact, getDimensionWeight(cubeql, fact));
+ }
+
+ int minWeight = Collections.min(dimWeightMap.values());
+
+ for (Iterator<CubeFactTable> i =
+ cubeql.getCandidateFactTables().iterator(); i.hasNext();) {
+ CubeFactTable fact = i.next();
+ if (dimWeightMap.get(fact) > minWeight) {
+ System.out.println("Removing fact:" + fact +
+ " from candidate fact tables as it has more dimension weight:"
+ + dimWeightMap.get(fact) + " minimum:"
+ + minWeight);
+ i.remove();
+ }
+ }
+ }
+ }
+ private Integer getDimensionWeight(CubeQueryContext cubeql, CubeFactTable fact) {
+ //TODO get the dimension weight associated with the fact wrt query
+ return 0;
}
}