Repository: lens Updated Branches: refs/heads/master 3a265f5e6 -> dfd332902
LENS-771 : Add test for multiple chain ref columns having subset chains Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/dfd33290 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/dfd33290 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/dfd33290 Branch: refs/heads/master Commit: dfd332902c24a897b49362ec8f217de664ab3007 Parents: 3a265f5 Author: Amareshwari Sriramadasu <[email protected]> Authored: Thu May 12 13:30:02 2016 +0530 Committer: Rajat Khandelwal <[email protected]> Committed: Thu May 12 13:30:02 2016 +0530 ---------------------------------------------------------------------- .../cube/metadata/ReferencedDimAttribute.java | 7 ++++++- .../org/apache/lens/cube/parse/CubeTestSetup.java | 9 +++++++-- .../cube/parse/TestDenormalizationResolver.java | 18 ++++++++++++++++++ lens-examples/src/main/resources/sales-cube.xml | 1 + .../src/test/resources/yaml/sales-cube.yaml | 3 +++ 5 files changed, 35 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/dfd33290/lens-cube/src/main/java/org/apache/lens/cube/metadata/ReferencedDimAttribute.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/ReferencedDimAttribute.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/ReferencedDimAttribute.java index 4c98d86..4a9dd54 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/ReferencedDimAttribute.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/ReferencedDimAttribute.java @@ -42,6 +42,11 @@ public class ReferencedDimAttribute extends BaseDimAttribute { public static class ChainRefCol { private final String chainName; private final String refColumn; + + public ChainRefCol(String chainName, String refColumn) { + this.chainName = chainName.toLowerCase(); + this.refColumn = refColumn.toLowerCase(); + } } public ReferencedDimAttribute(FieldSchema column, String displayString, String chainName, String refColumn, @@ -52,7 +57,7 @@ public class ReferencedDimAttribute extends BaseDimAttribute { public ReferencedDimAttribute(FieldSchema column, String displayString, String chainName, String refColumn, Date startTime, Date endTime, Double cost, Long numOfDistinctValues) throws LensException { this(column, displayString, - Collections.singletonList(new ChainRefCol(chainName.toLowerCase(), refColumn.toLowerCase())), startTime, endTime, + Collections.singletonList(new ChainRefCol(chainName, refColumn)), startTime, endTime, cost, numOfDistinctValues); } http://git-wip-us.apache.org/repos/asf/lens/blob/dfd33290/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java index c0035a7..b9694d7 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java @@ -983,6 +983,11 @@ public class CubeTestSetup { "state country", "cubestatecountry", "name", null, null, null)); cubeDimensions2.add(new ReferencedDimAttribute(new FieldSchema("citycountry", "string", ""), "city country", "cubecitystatecountry", "name", null, null, null)); + List<ChainRefCol> refCols = new ArrayList<>(); + refCols.add(new ChainRefCol("cubeState", "countrycapital")); + refCols.add(new ChainRefCol("cubeCityStateCountry", "capital")); + cubeDimensions2.add(new ReferencedDimAttribute(new FieldSchema("cubeCountryCapital", "String", "ref dim"), + "Country capital", refCols, null, null, null, null)); Map<String, String> cubeProperties = new HashMap<>(); cubeProperties.put(MetastoreUtil.getCubeTimedDimensionListKey(BASE_CUBE_NAME), @@ -2582,8 +2587,8 @@ public class CubeTestSetup { }); } }; - Dimension countryDim = new Dimension(dimName, dimAttrs, null, joinchains, dimProps, 0L); - client.createDimension(countryDim); + Dimension stateDim = new Dimension(dimName, dimAttrs, null, joinchains, dimProps, 0L); + client.createDimension(stateDim); String dimTblName = "statetable"; List<FieldSchema> dimColumns = new ArrayList<FieldSchema>(); http://git-wip-us.apache.org/repos/asf/lens/blob/dfd33290/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java index 51ba636..5505ed4 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java @@ -373,4 +373,22 @@ public class TestDenormalizationResolver extends TestQueryRewrite { Assert.assertEquals(getLensExceptionErrorMessageInRewrite("select nonexist.name, msr2 from testCube where " + TWO_DAYS_RANGE, conf), "Neither cube nor dimensions accessed in the query"); } + + @Test + public void testCubeQueryMultiChainRefCol() throws Exception { + Configuration tConf = new Configuration(conf); + tConf.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C1"); + String hqlQuery = rewrite("select cubeCountryCapital, msr12 from basecube where " + TWO_DAYS_RANGE, + tConf); + String joinExpr = " join " + getDbName() + + "c1_citytable citydim on basecube.cityid = citydim.id and (citydim.dt = 'latest') " + + " join " + getDbName() + "c1_statetable statedim on citydim.stateid = statedim.id and (statedim.dt = 'latest')" + + " join " + getDbName() + "c1_countrytable cubecitystatecountry on statedim.countryid =" + + " cubecitystatecountry.id"; + String expected = + getExpectedQuery("basecube", "select cubecitystatecountry.capital, sum(basecube.msr12) FROM ", + joinExpr, null, " group by cubecitystatecountry.capital ", null, + getWhereForHourly2days("basecube", "C1_testfact2_raw_base")); + TestCubeRewriter.compareQueries(hqlQuery, expected); + } } http://git-wip-us.apache.org/repos/asf/lens/blob/dfd33290/lens-examples/src/main/resources/sales-cube.xml ---------------------------------------------------------------------- diff --git a/lens-examples/src/main/resources/sales-cube.xml b/lens-examples/src/main/resources/sales-cube.xml index f7e3df0..6de09c0 100644 --- a/lens-examples/src/main/resources/sales-cube.xml +++ b/lens-examples/src/main/resources/sales-cube.xml @@ -57,6 +57,7 @@ <dim_attribute name="customer_city_name" _type="string" description="City name to which the customer belongs" display_string="Customer City"> <chain_ref_column chain_name="customer_city" ref_col="name" /> + <chain_ref_column chain_name="customer_details" ref_col="customer_city_name" /> </dim_attribute> <dim_attribute name="customer_interest" _type="string" description="Customer's interest" display_string="Customer Interest"> http://git-wip-us.apache.org/repos/asf/lens/blob/dfd33290/lens-examples/src/test/resources/yaml/sales-cube.yaml ---------------------------------------------------------------------- diff --git a/lens-examples/src/test/resources/yaml/sales-cube.yaml b/lens-examples/src/test/resources/yaml/sales-cube.yaml index 2f5d7a7..6d6b767 100644 --- a/lens-examples/src/test/resources/yaml/sales-cube.yaml +++ b/lens-examples/src/test/resources/yaml/sales-cube.yaml @@ -52,6 +52,9 @@ dimAttributes: - chainName: customer_city refCol: name + - + chainName: customer_details + refCol: customer_city_name type: string Customer Interest(customer_interest) [Customer's interest]: chainRefColumn:
