You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/05/19 23:57:49 UTC
[11/50] [abbrv] kylin git commit: KYLIN-2575 Experimental feature:
Computed Column
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
index 221ffb6..cbf7a76 100644
--- a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
+++ b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
@@ -1,455 +1,627 @@
{
- "uuid" : "629ab7a8-3929-4dff-b59d-2100aadccd1a",
- "name" : "ci_left_join_cube",
- "model_name" : "ci_left_join_model",
- "description" : null,
- "dimensions" : [ {
- "name" : "CAL_DT",
- "table" : "TEST_CAL_DT",
- "column" : "{FK}",
- "derived" : [ "WEEK_BEG_DT" ]
- }, {
- "name" : "ORDER_ID",
- "table" : "TEST_KYLIN_FACT",
- "column" : "ORDER_ID"
- }, {
- "name" : "TEST_DATE_ENC",
- "table" : "TEST_ORDER",
- "column" : "TEST_DATE_ENC"
- }, {
- "name" : "TEST_TIME_ENC",
- "table" : "TEST_ORDER",
- "column" : "TEST_TIME_ENC"
- }, {
- "name" : "CATEGORY",
- "table" : "TEST_CATEGORY_GROUPINGS",
- "column" : "{FK}",
- "derived" : [ "USER_DEFINED_FIELD1", "USER_DEFINED_FIELD3", "UPD_DATE", "UPD_USER" ]
- }, {
- "name" : "CATEGORY_HIERARCHY",
- "table" : "TEST_CATEGORY_GROUPINGS",
- "column" : "META_CATEG_NAME",
- "derived" : null
- }, {
- "name" : "CATEGORY_HIERARCHY",
- "table" : "TEST_CATEGORY_GROUPINGS",
- "column" : "CATEG_LVL2_NAME",
- "derived" : null
- }, {
- "name" : "CATEGORY_HIERARCHY",
- "table" : "TEST_CATEGORY_GROUPINGS",
- "column" : "CATEG_LVL3_NAME",
- "derived" : null
- }, {
- "name" : "LSTG_FORMAT_NAME",
- "table" : "TEST_KYLIN_FACT",
- "column" : "LSTG_FORMAT_NAME",
- "derived" : null
- }, {
- "name" : "SITE_ID",
- "table" : "TEST_SITES",
- "column" : "{FK}",
- "derived" : [ "SITE_NAME", "CRE_USER" ]
- }, {
- "name" : "SELLER_TYPE_CD",
- "table" : "TEST_SELLER_TYPE_DIM",
- "column" : "{FK}",
- "derived" : [ "SELLER_TYPE_DESC" ]
- }, {
- "name" : "SELLER_ID",
- "table" : "TEST_KYLIN_FACT",
- "column" : "SELLER_ID"
- }, {
- "name" : "SELLER_BUYER_LEVEL",
- "table" : "SELLER_ACCOUNT",
- "column" : "ACCOUNT_BUYER_LEVEL"
- }, {
- "name" : "SELLER_SELLER_LEVEL",
- "table" : "SELLER_ACCOUNT",
- "column" : "ACCOUNT_SELLER_LEVEL"
- }, {
- "name" : "SELLER_COUNTRY",
- "table" : "SELLER_ACCOUNT",
- "column" : "ACCOUNT_COUNTRY"
- }, {
- "name" : "SELLER_COUNTRY_NAME",
- "table" : "SELLER_COUNTRY",
- "column" : "NAME"
- }, {
- "name" : "BUYER_ID",
- "table" : "TEST_ORDER",
- "column" : "BUYER_ID"
- }, {
- "name" : "BUYER_BUYER_LEVEL",
- "table" : "BUYER_ACCOUNT",
- "column" : "ACCOUNT_BUYER_LEVEL"
- }, {
- "name" : "BUYER_SELLER_LEVEL",
- "table" : "BUYER_ACCOUNT",
- "column" : "ACCOUNT_SELLER_LEVEL"
- }, {
- "name" : "BUYER_COUNTRY",
- "table" : "BUYER_ACCOUNT",
- "column" : "ACCOUNT_COUNTRY"
- }, {
- "name" : "BUYER_COUNTRY_NAME",
- "table" : "BUYER_COUNTRY",
- "column" : "NAME"
- } ],
- "measures" : [ {
- "name" : "TRANS_CNT",
- "function" : {
- "expression" : "COUNT",
- "parameter" : {
- "type" : "constant",
- "value" : "1"
- },
- "returntype" : "bigint"
+ "uuid": "629ab7a8-3929-4dff-b59d-2100aadccd1a",
+ "name": "ci_left_join_cube",
+ "model_name": "ci_left_join_model",
+ "description": null,
+ "dimensions": [
+ {
+ "name": "CAL_DT",
+ "table": "TEST_CAL_DT",
+ "column": "{FK}",
+ "derived": [
+ "WEEK_BEG_DT"
+ ]
+ },
+ {
+ "name": "ORDER_ID",
+ "table": "TEST_KYLIN_FACT",
+ "column": "ORDER_ID"
+ },
+ {
+ "name": "TEST_DATE_ENC",
+ "table": "TEST_ORDER",
+ "column": "TEST_DATE_ENC"
+ },
+ {
+ "name": "TEST_TIME_ENC",
+ "table": "TEST_ORDER",
+ "column": "TEST_TIME_ENC"
+ },
+ {
+ "name": "CATEGORY",
+ "table": "TEST_CATEGORY_GROUPINGS",
+ "column": "{FK}",
+ "derived": [
+ "USER_DEFINED_FIELD1",
+ "USER_DEFINED_FIELD3",
+ "UPD_DATE",
+ "UPD_USER"
+ ]
+ },
+ {
+ "name": "CATEGORY_HIERARCHY",
+ "table": "TEST_CATEGORY_GROUPINGS",
+ "column": "META_CATEG_NAME",
+ "derived": null
+ },
+ {
+ "name": "CATEGORY_HIERARCHY",
+ "table": "TEST_CATEGORY_GROUPINGS",
+ "column": "CATEG_LVL2_NAME",
+ "derived": null
+ },
+ {
+ "name": "CATEGORY_HIERARCHY",
+ "table": "TEST_CATEGORY_GROUPINGS",
+ "column": "CATEG_LVL3_NAME",
+ "derived": null
+ },
+ {
+ "name": "LSTG_FORMAT_NAME",
+ "table": "TEST_KYLIN_FACT",
+ "column": "LSTG_FORMAT_NAME",
+ "derived": null
+ },
+ {
+ "name": "SITE_ID",
+ "table": "TEST_SITES",
+ "column": "{FK}",
+ "derived": [
+ "SITE_NAME",
+ "CRE_USER"
+ ]
+ },
+ {
+ "name": "SELLER_TYPE_CD",
+ "table": "TEST_SELLER_TYPE_DIM",
+ "column": "{FK}",
+ "derived": [
+ "SELLER_TYPE_DESC"
+ ]
+ },
+ {
+ "name": "SELLER_ID",
+ "table": "TEST_KYLIN_FACT",
+ "column": "SELLER_ID"
+ },
+ {
+ "name": "SELLER_BUYER_LEVEL",
+ "table": "SELLER_ACCOUNT",
+ "column": "ACCOUNT_BUYER_LEVEL"
+ },
+ {
+ "name": "SELLER_SELLER_LEVEL",
+ "table": "SELLER_ACCOUNT",
+ "column": "ACCOUNT_SELLER_LEVEL"
+ },
+ {
+ "name": "SELLER_COUNTRY",
+ "table": "SELLER_ACCOUNT",
+ "column": "ACCOUNT_COUNTRY"
+ },
+ {
+ "name": "SELLER_COUNTRY_NAME",
+ "table": "SELLER_COUNTRY",
+ "column": "NAME"
+ },
+ {
+ "name": "BUYER_ID",
+ "table": "TEST_ORDER",
+ "column": "BUYER_ID"
+ },
+ {
+ "name": "BUYER_BUYER_LEVEL",
+ "table": "BUYER_ACCOUNT",
+ "column": "ACCOUNT_BUYER_LEVEL"
+ },
+ {
+ "name": "BUYER_SELLER_LEVEL",
+ "table": "BUYER_ACCOUNT",
+ "column": "ACCOUNT_SELLER_LEVEL"
+ },
+ {
+ "name": "BUYER_COUNTRY",
+ "table": "BUYER_ACCOUNT",
+ "column": "ACCOUNT_COUNTRY"
+ },
+ {
+ "name": "DEAL_YEAR",
+ "table": "TEST_KYLIN_FACT",
+ "column": "DEAL_YEAR"
+ },
+ {
+ "name": "SELLER_COUNTRY_ABBR",
+ "table": "SELLER_ACCOUNT",
+ "column": "COUNTRY_ABBR"
+ },
+ {
+ "name": "BUYER_COUNTRY_ABBR",
+ "table": "BUYER_ACCOUNT",
+ "column": "COUNTRY_ABBR"
+ },
+ {
+ "name": "BUYER_COUNTRY_NAME",
+ "table": "BUYER_COUNTRY",
+ "column": "NAME"
}
- }, {
- "name" : "ITEM_COUNT_SUM",
- "function" : {
- "expression" : "SUM",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.ITEM_COUNT"
- },
- "returntype" : "bigint"
+ ],
+ "measures": [
+ {
+ "name": "TRANS_CNT",
+ "function": {
+ "expression": "COUNT",
+ "parameter": {
+ "type": "constant",
+ "value": "1"
+ },
+ "returntype": "bigint"
+ }
+ },
+ {
+ "name": "ITEM_COUNT_SUM",
+ "function": {
+ "expression": "SUM",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.ITEM_COUNT"
+ },
+ "returntype": "bigint"
+ }
+ },
+ {
+ "name": "GMV_SUM",
+ "function": {
+ "expression": "SUM",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE"
+ },
+ "returntype": "decimal(19,4)"
+ }
+ },
+ {
+ "name": "GMV_MIN",
+ "function": {
+ "expression": "MIN",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE"
+ },
+ "returntype": "decimal(19,4)"
+ }
+ },
+ {
+ "name": "GMV_MAX",
+ "function": {
+ "expression": "MAX",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE"
+ },
+ "returntype": "decimal(19,4)"
+ }
+ },
+ {
+ "name": "SELLER_HLL",
+ "function": {
+ "expression": "COUNT_DISTINCT",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.SELLER_ID"
+ },
+ "returntype": "hllc(10)"
+ }
+ },
+ {
+ "name": "SELLER_FORMAT_HLL",
+ "function": {
+ "expression": "COUNT_DISTINCT",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "next_parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.SELLER_ID"
+ }
+ },
+ "returntype": "hllc(10)"
+ }
+ },
+ {
+ "name": "TOP_SELLER",
+ "function": {
+ "expression": "TOP_N",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE",
+ "next_parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.SELLER_ID"
+ }
+ },
+ "returntype": "topn(100, 4)",
+ "configuration": {
+ "topn.encoding.TEST_KYLIN_FACT.SELLER_ID": "int:4"
+ }
+ }
+ },
+ {
+ "name": "TEST_COUNT_DISTINCT_BITMAP",
+ "function": {
+ "expression": "COUNT_DISTINCT",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.TEST_COUNT_DISTINCT_BITMAP"
+ },
+ "returntype": "bitmap"
+ }
+ },
+ {
+ "name": "TEST_EXTENDED_COLUMN",
+ "function": {
+ "expression": "EXTENDED_COLUMN",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.ORDER_ID",
+ "next_parameter": {
+ "type": "column",
+ "value": "TEST_ORDER.TEST_EXTENDED_COLUMN"
+ }
+ },
+ "returntype": "extendedcolumn(100)"
+ }
+ },
+ {
+ "name": "BUYER_CONTACT",
+ "function": {
+ "expression": "EXTENDED_COLUMN",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_ORDER.BUYER_ID",
+ "next_parameter": {
+ "type": "column",
+ "value": "BUYER_ACCOUNT.ACCOUNT_CONTACT"
+ }
+ },
+ "returntype": "extendedcolumn(100)"
+ }
+ },
+ {
+ "name": "SELLER_CONTACT",
+ "function": {
+ "expression": "EXTENDED_COLUMN",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.SELLER_ID",
+ "next_parameter": {
+ "type": "column",
+ "value": "SELLER_ACCOUNT.ACCOUNT_CONTACT"
+ }
+ },
+ "returntype": "extendedcolumn(100)"
+ }
+ },
+ {
+ "name": "TRANS_ID_RAW",
+ "function": {
+ "expression": "RAW",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.TRANS_ID"
+ },
+ "returntype": "raw"
+ }
+ },
+ {
+ "name": "PRICE_RAW",
+ "function": {
+ "expression": "RAW",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE"
+ },
+ "returntype": "raw"
+ }
+ },
+ {
+ "name": "CAL_DT_RAW",
+ "function": {
+ "expression": "RAW",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.CAL_DT"
+ },
+ "returntype": "raw"
+ }
+ },
+ {
+ "name": "GVM_PERCENTILE",
+ "function": {
+ "expression": "PERCENTILE",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.PRICE"
+ },
+ "returntype": "percentile(100)"
+ }
+ },
+ {
+ "name": "COMPUTED_COLUMN_MEASURE",
+ "function": {
+ "expression": "SUM",
+ "parameter": {
+ "type": "column",
+ "value": "TEST_KYLIN_FACT.DEAL_AMOUNT"
+ },
+ "returntype": "decimal"
+ }
}
- }, {
- "name" : "GMV_SUM",
- "function" : {
- "expression" : "SUM",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE"
- },
- "returntype" : "decimal(19,4)"
+ ],
+ "dictionaries": [
+ {
+ "column": "TEST_KYLIN_FACT.TEST_COUNT_DISTINCT_BITMAP",
+ "builder": "org.apache.kylin.dict.GlobalDictionaryBuilder"
}
- }, {
- "name" : "GMV_MIN",
- "function" : {
- "expression" : "MIN",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE"
+ ],
+ "rowkey": {
+ "rowkey_columns": [
+ {
+ "column": "TEST_KYLIN_FACT.SELLER_ID",
+ "encoding": "int:4"
},
- "returntype" : "decimal(19,4)"
- }
- }, {
- "name" : "GMV_MAX",
- "function" : {
- "expression" : "MAX",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE"
+ {
+ "column": "TEST_KYLIN_FACT.ORDER_ID",
+ "encoding": "int:4"
},
- "returntype" : "decimal(19,4)"
- }
- }, {
- "name" : "SELLER_HLL",
- "function" : {
- "expression" : "COUNT_DISTINCT",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.SELLER_ID"
+ {
+ "column": "TEST_KYLIN_FACT.CAL_DT",
+ "encoding": "dict"
},
- "returntype" : "hllc(10)"
- }
- }, {
- "name" : "SELLER_FORMAT_HLL",
- "function" : {
- "expression" : "COUNT_DISTINCT",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "next_parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.SELLER_ID"
- }
+ {
+ "column": "TEST_KYLIN_FACT.LEAF_CATEG_ID",
+ "encoding": "dict"
},
- "returntype" : "hllc(10)"
- }
- }, {
- "name" : "TOP_SELLER",
- "function" : {
- "expression" : "TOP_N",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE",
- "next_parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.SELLER_ID"
- }
+ {
+ "column": "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
+ "encoding": "dict"
},
- "returntype" : "topn(100, 4)",
- "configuration": {"topn.encoding.TEST_KYLIN_FACT.SELLER_ID" : "int:4"}
- }
- }, {
- "name" : "TEST_COUNT_DISTINCT_BITMAP",
- "function" : {
- "expression" : "COUNT_DISTINCT",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.TEST_COUNT_DISTINCT_BITMAP"
+ {
+ "column": "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
+ "encoding": "dict"
},
- "returntype" : "bitmap"
- }
- }, {
- "name" : "TEST_EXTENDED_COLUMN",
- "function" : {
- "expression" : "EXTENDED_COLUMN",
- "parameter": {
- "type": "column",
- "value": "TEST_KYLIN_FACT.ORDER_ID",
- "next_parameter": {
- "type": "column",
- "value": "TEST_ORDER.TEST_EXTENDED_COLUMN"
- }
+ {
+ "column": "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
+ "encoding": "dict"
},
- "returntype": "extendedcolumn(100)"
- }
- }, {
- "name" : "BUYER_CONTACT",
- "function" : {
- "expression" : "EXTENDED_COLUMN",
- "parameter": {
- "type": "column",
- "value": "TEST_ORDER.BUYER_ID",
- "next_parameter": {
- "type": "column",
- "value": "BUYER_ACCOUNT.ACCOUNT_CONTACT"
- }
+ {
+ "column": "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "encoding": "fixed_length:12"
},
- "returntype": "extendedcolumn(100)"
- }
- }, {
- "name" : "SELLER_CONTACT",
- "function" : {
- "expression" : "EXTENDED_COLUMN",
- "parameter": {
- "type": "column",
- "value": "TEST_KYLIN_FACT.SELLER_ID",
- "next_parameter": {
- "type": "column",
- "value": "SELLER_ACCOUNT.ACCOUNT_CONTACT"
- }
+ {
+ "column": "TEST_KYLIN_FACT.LSTG_SITE_ID",
+ "encoding": "dict"
},
- "returntype": "extendedcolumn(100)"
- }
- }, {
- "name" : "TRANS_ID_RAW",
- "function" : {
- "expression" : "RAW",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.TRANS_ID"
+ {
+ "column": "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
+ "encoding": "dict"
},
- "returntype" : "raw"
- }
- }, {
- "name" : "PRICE_RAW",
- "function" : {
- "expression" : "RAW",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE"
+ {
+ "column": "TEST_ORDER.TEST_TIME_ENC",
+ "encoding": "time"
},
- "returntype" : "raw"
- }
- }, {
- "name" : "CAL_DT_RAW",
- "function" : {
- "expression" : "RAW",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.CAL_DT"
+ {
+ "column": "TEST_ORDER.TEST_DATE_ENC",
+ "encoding": "date"
},
- "returntype" : "raw"
- }
- }, {
- "name" : "GVM_PERCENTILE",
- "function" : {
- "expression" : "PERCENTILE",
- "parameter" : {
- "type" : "column",
- "value" : "TEST_KYLIN_FACT.PRICE"
+ {
+ "column": "TEST_ORDER.BUYER_ID",
+ "encoding": "int:4"
},
- "returntype" : "percentile(100)"
- }
- } ],
- "dictionaries": [ {
- "column": "TEST_KYLIN_FACT.TEST_COUNT_DISTINCT_BITMAP",
- "builder": "org.apache.kylin.dict.GlobalDictionaryBuilder"
- } ],
- "rowkey" : {
- "rowkey_columns" : [ {
- "column" : "TEST_KYLIN_FACT.SELLER_ID",
- "encoding" : "int:4"
- }, {
- "column" : "TEST_KYLIN_FACT.ORDER_ID",
- "encoding" : "int:4"
- }, {
- "column" : "TEST_KYLIN_FACT.CAL_DT",
- "encoding" : "dict"
- }, {
- "column" : "TEST_KYLIN_FACT.LEAF_CATEG_ID",
- "encoding" : "dict"
- }, {
- "column" : "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
- "encoding" : "dict"
- }, {
- "column" : "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
- "encoding" : "dict"
- }, {
- "column" : "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
- "encoding" : "dict"
- }, {
- "column" : "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "encoding" : "fixed_length:12"
- }, {
- "column" : "TEST_KYLIN_FACT.LSTG_SITE_ID",
- "encoding" : "dict"
- }, {
- "column" : "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
- "encoding" : "dict"
- }, {
- "column" : "TEST_ORDER.TEST_TIME_ENC",
- "encoding" : "time"
- }, {
- "column" : "TEST_ORDER.TEST_DATE_ENC",
- "encoding" : "date"
- }, {
- "column" : "TEST_ORDER.BUYER_ID",
- "encoding" : "int:4"
- }, {
- "column" : "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "encoding" : "dict"
- }, {
- "column" : "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "encoding" : "dict"
- }, {
- "column" : "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
- "encoding" : "dict"
- }, {
- "column" : "BUYER_COUNTRY.NAME",
- "encoding" : "dict"
- }, {
- "column" : "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "encoding" : "dict"
- }, {
- "column" : "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "encoding" : "dict"
- }, {
- "column" : "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
- "encoding" : "dict"
- }, {
- "column" : "SELLER_COUNTRY.NAME",
- "encoding" : "dict"
- } ]
+ {
+ "column": "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "encoding": "dict"
+ },
+ {
+ "column": "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "encoding": "dict"
+ },
+ {
+ "column": "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
+ "encoding": "dict"
+ },
+ {
+ "column": "BUYER_COUNTRY.NAME",
+ "encoding": "dict"
+ },
+ {
+ "column": "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "encoding": "dict"
+ },
+ {
+ "column": "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "encoding": "dict"
+ },
+ {
+ "column": "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
+ "encoding": "dict"
+ },
+ {
+ "column": "TEST_KYLIN_FACT.DEAL_YEAR",
+ "encoding": "int:2"
+ },
+ {
+ "column": "SELLER_COUNTRY.NAME",
+ "encoding": "dict"
+ },
+ {
+ "column": "SELLER_ACCOUNT.COUNTRY_ABBR",
+ "encoding": "dict"
+ },
+ {
+ "column": "BUYER_ACCOUNT.COUNTRY_ABBR",
+ "encoding": "dict"
+ }
+ ]
},
- "signature" : null,
- "last_modified" : 1448959801311,
- "null_string" : null,
- "hbase_mapping" : {
- "column_family" : [ {
- "name" : "f1",
- "columns" : [ {
- "qualifier" : "m",
- "measure_refs" : [ "TRANS_CNT", "ITEM_COUNT_SUM", "GMV_SUM", "GMV_MIN", "GMV_MAX" ]
- } ]
- }, {
- "name" : "f2",
- "columns" : [ {
- "qualifier" : "m",
- "measure_refs" : [ "SELLER_HLL", "SELLER_FORMAT_HLL", "TOP_SELLER", "TEST_COUNT_DISTINCT_BITMAP" ]
- } ]
- }, {
- "name" : "f3",
- "columns" : [ {
- "qualifier" : "m",
- "measure_refs" : [ "TEST_EXTENDED_COLUMN", "TRANS_ID_RAW", "PRICE_RAW", "CAL_DT_RAW", "BUYER_CONTACT", "SELLER_CONTACT", "GVM_PERCENTILE" ]
- } ]
- } ]
+ "signature": null,
+ "last_modified": 1448959801311,
+ "null_string": null,
+ "hbase_mapping": {
+ "column_family": [
+ {
+ "name": "f1",
+ "columns": [
+ {
+ "qualifier": "m",
+ "measure_refs": [
+ "TRANS_CNT",
+ "ITEM_COUNT_SUM",
+ "GMV_SUM",
+ "GMV_MIN",
+ "GMV_MAX",
+ "COMPUTED_COLUMN_MEASURE"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "f2",
+ "columns": [
+ {
+ "qualifier": "m",
+ "measure_refs": [
+ "SELLER_HLL",
+ "SELLER_FORMAT_HLL",
+ "TOP_SELLER",
+ "TEST_COUNT_DISTINCT_BITMAP"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "f3",
+ "columns": [
+ {
+ "qualifier": "m",
+ "measure_refs": [
+ "TEST_EXTENDED_COLUMN",
+ "TRANS_ID_RAW",
+ "PRICE_RAW",
+ "CAL_DT_RAW",
+ "BUYER_CONTACT",
+ "SELLER_CONTACT",
+ "GVM_PERCENTILE"
+ ]
+ }
+ ]
+ }
+ ]
},
- "aggregation_groups" : [ {
- "includes" : [ "TEST_KYLIN_FACT.CAL_DT",
- "TEST_KYLIN_FACT.LEAF_CATEG_ID",
- "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "TEST_KYLIN_FACT.LSTG_SITE_ID",
- "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
- "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME" ],
- "select_rule" : {
- "hierarchy_dims" : [ [ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
- "TEST_KYLIN_FACT.LEAF_CATEG_ID" ] ],
- "mandatory_dims" : [ ],
- "joint_dims" : [ [ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "TEST_KYLIN_FACT.LSTG_SITE_ID",
- "TEST_KYLIN_FACT.SLR_SEGMENT_CD" ] ]
- }
- }, {
- "includes" : [ "TEST_KYLIN_FACT.CAL_DT",
- "TEST_KYLIN_FACT.LEAF_CATEG_ID",
- "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "TEST_KYLIN_FACT.LSTG_SITE_ID",
- "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
- "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
-
- "TEST_KYLIN_FACT.SELLER_ID",
- "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
- "SELLER_COUNTRY.NAME",
-
- "TEST_KYLIN_FACT.ORDER_ID",
- "TEST_ORDER.TEST_DATE_ENC",
- "TEST_ORDER.TEST_TIME_ENC",
- "TEST_ORDER.BUYER_ID",
- "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
- "BUYER_COUNTRY.NAME" ],
- "select_rule" : {
- "hierarchy_dims" : [ ],
- "mandatory_dims" : [ "TEST_KYLIN_FACT.CAL_DT" ],
-
- "joint_dims" : [ [ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
- "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
- "TEST_KYLIN_FACT.LEAF_CATEG_ID" ],
-
- [ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
- "TEST_KYLIN_FACT.LSTG_SITE_ID",
- "TEST_KYLIN_FACT.SLR_SEGMENT_CD" ],
-
- [ "TEST_KYLIN_FACT.SELLER_ID",
- "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
- "SELLER_COUNTRY.NAME" ],
-
- [ "TEST_KYLIN_FACT.ORDER_ID",
- "TEST_ORDER.TEST_DATE_ENC",
- "TEST_ORDER.TEST_TIME_ENC",
- "TEST_ORDER.BUYER_ID",
- "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
- "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
- "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
- "BUYER_COUNTRY.NAME" ] ]
+ "aggregation_groups": [
+ {
+ "includes": [
+ "TEST_KYLIN_FACT.CAL_DT",
+ "TEST_KYLIN_FACT.LEAF_CATEG_ID",
+ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "TEST_KYLIN_FACT.LSTG_SITE_ID",
+ "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
+ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
+ "TEST_KYLIN_FACT.DEAL_YEAR"
+ ],
+ "select_rule": {
+ "hierarchy_dims": [
+ [
+ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
+ "TEST_KYLIN_FACT.LEAF_CATEG_ID"
+ ]
+ ],
+ "mandatory_dims": [],
+ "joint_dims": [
+ [
+ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "TEST_KYLIN_FACT.LSTG_SITE_ID",
+ "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
+ "TEST_KYLIN_FACT.DEAL_YEAR"
+ ]
+ ]
+ }
+ },
+ {
+ "includes": [
+ "TEST_KYLIN_FACT.CAL_DT",
+ "TEST_KYLIN_FACT.LEAF_CATEG_ID",
+ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "TEST_KYLIN_FACT.LSTG_SITE_ID",
+ "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
+ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
+ "TEST_KYLIN_FACT.SELLER_ID",
+ "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
+ "SELLER_COUNTRY.NAME",
+ "TEST_KYLIN_FACT.ORDER_ID",
+ "TEST_ORDER.TEST_DATE_ENC",
+ "TEST_ORDER.TEST_TIME_ENC",
+ "TEST_ORDER.BUYER_ID",
+ "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
+ "BUYER_COUNTRY.NAME",
+ "SELLER_ACCOUNT.COUNTRY_ABBR",
+ "BUYER_ACCOUNT.COUNTRY_ABBR"
+ ],
+ "select_rule": {
+ "hierarchy_dims": [],
+ "mandatory_dims": [
+ "TEST_KYLIN_FACT.CAL_DT"
+ ],
+ "joint_dims": [
+ [
+ "TEST_CATEGORY_GROUPINGS.META_CATEG_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL2_NAME",
+ "TEST_CATEGORY_GROUPINGS.CATEG_LVL3_NAME",
+ "TEST_KYLIN_FACT.LEAF_CATEG_ID"
+ ],
+ [
+ "TEST_KYLIN_FACT.LSTG_FORMAT_NAME",
+ "TEST_KYLIN_FACT.LSTG_SITE_ID",
+ "TEST_KYLIN_FACT.SLR_SEGMENT_CD",
+ "SELLER_ACCOUNT.COUNTRY_ABBR",
+ "BUYER_ACCOUNT.COUNTRY_ABBR"
+ ],
+ [
+ "TEST_KYLIN_FACT.SELLER_ID",
+ "SELLER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "SELLER_ACCOUNT.ACCOUNT_COUNTRY",
+ "SELLER_COUNTRY.NAME"
+ ],
+ [
+ "TEST_KYLIN_FACT.ORDER_ID",
+ "TEST_ORDER.TEST_DATE_ENC",
+ "TEST_ORDER.TEST_TIME_ENC",
+ "TEST_ORDER.BUYER_ID",
+ "BUYER_ACCOUNT.ACCOUNT_BUYER_LEVEL",
+ "BUYER_ACCOUNT.ACCOUNT_SELLER_LEVEL",
+ "BUYER_ACCOUNT.ACCOUNT_COUNTRY",
+ "BUYER_COUNTRY.NAME"
+ ]
+ ]
+ }
}
- } ],
- "notify_list" : null,
- "status_need_notify" : [ ],
- "auto_merge_time_ranges" : null,
- "retention_range" : 0,
- "engine_type" : 2,
- "storage_type" : 2,
+ ],
+ "notify_list": null,
+ "status_need_notify": [],
+ "auto_merge_time_ranges": null,
+ "retention_range": 0,
+ "engine_type": 2,
+ "storage_type": 2,
"override_kylin_properties": {
"kylin.cube.algorithm": "INMEM"
},
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/localmeta/model_desc/ci_inner_join_model.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/model_desc/ci_inner_join_model.json b/examples/test_case_data/localmeta/model_desc/ci_inner_join_model.json
index b79d293..d084ce2 100644
--- a/examples/test_case_data/localmeta/model_desc/ci_inner_join_model.json
+++ b/examples/test_case_data/localmeta/model_desc/ci_inner_join_model.json
@@ -121,6 +121,29 @@
}
}
],
+ "computed_columns": [
+ {
+ "tableIdentity": "DEFAULT.TEST_KYLIN_FACT",
+ "columnName": "DEAL_AMOUNT",
+ "expression": "DEFAULT.TEST_KYLIN_FACT.PRICE * DEFAULT.TEST_KYLIN_FACT.ITEM_COUNT",
+ "datatype": "decimal",
+ "comment": "deal amount of inner join model"
+ },
+ {
+ "tableIdentity": "DEFAULT.TEST_KYLIN_FACT",
+ "columnName": "DEAL_YEAR",
+ "expression": "year(DEFAULT.TEST_KYLIN_FACT.CAL_DT)",
+ "datatype": "integer",
+ "comment": "the year of the deal of the inner join model"
+ },
+ {
+ "tableIdentity": "DEFAULT.TEST_ACCOUNT",
+ "columnName": "COUNTRY_ABBR",
+ "expression": "SUBSTR(DEFAULT.TEST_ACCOUNT.ACCOUNT_COUNTRY,0,1)",
+ "datatype": "string",
+ "comment": "first char of country of the inner join model"
+ }
+ ],
"dimensions": [
{
"table": "TEST_KYLIN_FACT",
@@ -133,7 +156,8 @@
"LEAF_CATEG_ID",
"SLR_SEGMENT_CD",
"SELLER_ID",
- "TEST_COUNT_DISTINCT_BITMAP"
+ "TEST_COUNT_DISTINCT_BITMAP",
+ "DEAL_YEAR"
]
},
{
@@ -153,7 +177,8 @@
"ACCOUNT_BUYER_LEVEL",
"ACCOUNT_SELLER_LEVEL",
"ACCOUNT_COUNTRY",
- "ACCOUNT_CONTACT"
+ "ACCOUNT_CONTACT",
+ "COUNTRY_ABBR"
]
},
{
@@ -163,7 +188,8 @@
"ACCOUNT_BUYER_LEVEL",
"ACCOUNT_SELLER_LEVEL",
"ACCOUNT_COUNTRY",
- "ACCOUNT_CONTACT"
+ "ACCOUNT_CONTACT",
+ "COUNTRY_ABBR"
]
},
{
@@ -219,7 +245,8 @@
],
"metrics": [
"TEST_KYLIN_FACT.PRICE",
- "TEST_KYLIN_FACT.ITEM_COUNT"
+ "TEST_KYLIN_FACT.ITEM_COUNT",
+ "TEST_KYLIN_FACT.DEAL_AMOUNT"
],
"last_modified": 1422435345352,
"filter_condition": null,
@@ -228,4 +255,4 @@
"partition_date_start": 0,
"partition_type": "APPEND"
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/localmeta/model_desc/ci_left_join_model.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/model_desc/ci_left_join_model.json b/examples/test_case_data/localmeta/model_desc/ci_left_join_model.json
index bc5b444..4a10899 100644
--- a/examples/test_case_data/localmeta/model_desc/ci_left_join_model.json
+++ b/examples/test_case_data/localmeta/model_desc/ci_left_join_model.json
@@ -121,6 +121,29 @@
}
}
],
+ "computed_columns": [
+ {
+ "tableIdentity": "DEFAULT.TEST_KYLIN_FACT",
+ "columnName": "DEAL_AMOUNT",
+ "expression": "DEFAULT.TEST_KYLIN_FACT.PRICE * DEFAULT.TEST_KYLIN_FACT.ITEM_COUNT",
+ "datatype": "decimal",
+ "comment": "deal amount of left join model"
+ },
+ {
+ "tableIdentity": "DEFAULT.TEST_KYLIN_FACT",
+ "columnName": "DEAL_YEAR",
+ "expression": "year(DEFAULT.TEST_KYLIN_FACT.CAL_DT)",
+ "datatype": "integer",
+ "comment": "the year of the deal of the left join model"
+ },
+ {
+ "tableIdentity": "DEFAULT.TEST_ACCOUNT",
+ "columnName": "COUNTRY_ABBR",
+ "expression": "SUBSTR(DEFAULT.TEST_ACCOUNT.ACCOUNT_COUNTRY,0,1)",
+ "datatype": "string",
+ "comment": "first char of country of the left join model"
+ }
+ ],
"dimensions": [
{
"table": "TEST_KYLIN_FACT",
@@ -133,7 +156,8 @@
"LEAF_CATEG_ID",
"SLR_SEGMENT_CD",
"SELLER_ID",
- "TEST_COUNT_DISTINCT_BITMAP"
+ "TEST_COUNT_DISTINCT_BITMAP",
+ "DEAL_YEAR"
]
},
{
@@ -153,7 +177,8 @@
"ACCOUNT_BUYER_LEVEL",
"ACCOUNT_SELLER_LEVEL",
"ACCOUNT_COUNTRY",
- "ACCOUNT_CONTACT"
+ "ACCOUNT_CONTACT",
+ "COUNTRY_ABBR"
]
},
{
@@ -163,7 +188,8 @@
"ACCOUNT_BUYER_LEVEL",
"ACCOUNT_SELLER_LEVEL",
"ACCOUNT_COUNTRY",
- "ACCOUNT_CONTACT"
+ "ACCOUNT_CONTACT",
+ "COUNTRY_ABBR"
]
},
{
@@ -219,7 +245,8 @@
],
"metrics": [
"TEST_KYLIN_FACT.PRICE",
- "TEST_KYLIN_FACT.ITEM_COUNT"
+ "TEST_KYLIN_FACT.ITEM_COUNT",
+ "TEST_KYLIN_FACT.DEAL_AMOUNT"
],
"last_modified": 1422435345352,
"filter_condition": null,
@@ -228,4 +255,4 @@
"partition_date_start": 0,
"partition_type": "APPEND"
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/sandbox/kylin.properties
----------------------------------------------------------------------
diff --git a/examples/test_case_data/sandbox/kylin.properties b/examples/test_case_data/sandbox/kylin.properties
index 684b4dd..13474f9 100644
--- a/examples/test_case_data/sandbox/kylin.properties
+++ b/examples/test_case_data/sandbox/kylin.properties
@@ -25,7 +25,7 @@ kylin.server.mode=all
kylin.storage.hbase.owner-tag=whoami@kylin.apache.org
# List of web servers in use, this enables one web server instance to sync up with other servers.
-#kylin.server.cluster-servers=localhost:7070
+kylin.server.cluster-servers=localhost:7070
# Display timezone on UI,format like[GMT+N or GMT-N]
kylin.web.timezone=GMT+8
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/java/org/apache/kylin/query/CompareQueryBySuffix.java
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/CompareQueryBySuffix.java b/kylin-it/src/test/java/org/apache/kylin/query/CompareQueryBySuffix.java
new file mode 100644
index 0000000..2dbe6fd
--- /dev/null
+++ b/kylin-it/src/test/java/org/apache/kylin/query/CompareQueryBySuffix.java
@@ -0,0 +1,37 @@
+/*
+ * 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.kylin.query;
+
+import java.io.File;
+import java.io.IOException;
+
+public class CompareQueryBySuffix implements ICompareQueryTranslator {
+
+ public static CompareQueryBySuffix INSTANCE = new CompareQueryBySuffix();
+
+ @Override
+ public String transform(File f) {
+ File parentFile = f.getParentFile();
+ File compareFile = new File(parentFile, f.getName() + ".compare");
+ try {
+ return KylinTestBase.getTextFromFile(compareFile);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/java/org/apache/kylin/query/ICompareQueryTranslator.java
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/ICompareQueryTranslator.java b/kylin-it/src/test/java/org/apache/kylin/query/ICompareQueryTranslator.java
new file mode 100644
index 0000000..67473b1
--- /dev/null
+++ b/kylin-it/src/test/java/org/apache/kylin/query/ICompareQueryTranslator.java
@@ -0,0 +1,29 @@
+/*
+ * 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.kylin.query;
+
+import java.io.File;
+
+public interface ICompareQueryTranslator {
+ /**
+ *
+ * @param f origin query file
+ * @return the compare query to submit to standard DB like H2
+ */
+ public String transform(File f);
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
index cdaa10b..629e861 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
@@ -235,6 +235,11 @@ public class ITKylinQueryTest extends KylinTestBase {
}
@Test
+ public void testComputedColumnsQuery() throws Exception {
+ execAndCompQuery(getQueryFolderPrefix() + "src/test/resources/query/sql_computedcolumn", null, true, CompareQueryBySuffix.INSTANCE);
+ }
+
+ @Test
public void testTopNQuery() throws Exception {
if ("left".equalsIgnoreCase(joinType)) {
this.execAndCompQuery(getQueryFolderPrefix() + "src/test/resources/query/sql_topn", null, true);
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
index fad7a94..656666f 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
@@ -160,7 +160,7 @@ public class KylinTestBase {
return new ArrayList<>(set);
}
- protected static String getTextFromFile(File file) throws IOException {
+ public static String getTextFromFile(File file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
@@ -497,7 +497,21 @@ public class KylinTestBase {
logger.info("Queries appended with limit: " + appendLimitQueries);
}
+
protected void execAndCompQuery(String queryFolder, String[] exclusiveQuerys, boolean needSort) throws Exception {
+ execAndCompQuery(queryFolder, exclusiveQuerys, needSort, new ICompareQueryTranslator() {
+ @Override
+ public String transform(File f) {
+ try {
+ return KylinTestBase.getTextFromFile(f);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+
+ protected void execAndCompQuery(String queryFolder, String[] exclusiveQuerys, boolean needSort, ICompareQueryTranslator translator) throws Exception {
logger.info("---------- test folder: " + new File(queryFolder).getAbsolutePath());
Set<String> exclusiveSet = buildExclusiveSet(exclusiveQuerys);
@@ -507,17 +521,18 @@ public class KylinTestBase {
if (exclusiveSet.contains(queryName)) {
continue;
}
- String sql = getTextFromFile(sqlFile);
+ String sql1 = getTextFromFile(sqlFile);
+ String sql2 = translator.transform(sqlFile);
// execute Kylin
logger.info("Query Result from Kylin - " + queryName + " (" + queryFolder + ")");
IDatabaseConnection kylinConn = new DatabaseConnection(cubeConnection);
- ITable kylinTable = executeQuery(kylinConn, queryName, sql, needSort);
+ ITable kylinTable = executeQuery(kylinConn, queryName, sql1, needSort);
// execute H2
logger.info("Query Result from H2 - " + queryName);
long currentTime = System.currentTimeMillis();
- ITable h2Table = executeQuery(newH2Connection(), queryName, sql, needSort);
+ ITable h2Table = executeQuery(newH2Connection(), queryName, sql2, needSort);
logger.info("H2 spent " + (System.currentTimeMillis() - currentTime) + " mili-seconds.");
try {
@@ -530,7 +545,7 @@ public class KylinTestBase {
compQueryCount++;
if (kylinTable.getRowCount() == 0) {
- zeroResultQueries.add(sql);
+ zeroResultQueries.add(sql1);
}
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql b/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql
new file mode 100644
index 0000000..5661c79
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql
@@ -0,0 +1,14 @@
+SELECT
+
+count(*) as cnt, sum(price) as sum_price, sum(DEAL_AMOUNT) as deal_amount, SELLER_COUNTRY.NAME, DEAL_YEAR as deal_year
+
+FROM TEST_KYLIN_FACT as TEST_KYLIN_FACT
+INNER JOIN TEST_ACCOUNT as SELLER_ACCOUNT
+ON TEST_KYLIN_FACT.SELLER_ID = SELLER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
+ON TEST_KYLIN_FACT.LEAF_CATEG_ID = TEST_CATEGORY_GROUPINGS.LEAF_CATEG_ID AND TEST_KYLIN_FACT.LSTG_SITE_ID = TEST_CATEGORY_GROUPINGS.SITE_ID
+INNER JOIN TEST_COUNTRY as SELLER_COUNTRY
+ON SELLER_ACCOUNT.ACCOUNT_COUNTRY = SELLER_COUNTRY.COUNTRY
+
+where SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL=1 and SELLER_ACCOUNT.COUNTRY_ABBR in ('I', 'F')
+group by SELLER_COUNTRY.NAME, DEAL_YEAR
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql.compare
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql.compare b/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql.compare
new file mode 100644
index 0000000..3f21647
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_computedcolumn/query01.sql.compare
@@ -0,0 +1,14 @@
+SELECT
+
+count(*) as cnt, sum(price) as sum_price, sum(TEST_KYLIN_FACT.PRICE * TEST_KYLIN_FACT.ITEM_COUNT) as deal_amount, SELLER_COUNTRY.NAME, year(TEST_KYLIN_FACT.CAL_DT) as deal_year
+
+FROM TEST_KYLIN_FACT as TEST_KYLIN_FACT
+INNER JOIN TEST_ACCOUNT as SELLER_ACCOUNT
+ON TEST_KYLIN_FACT.SELLER_ID = SELLER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
+ON TEST_KYLIN_FACT.LEAF_CATEG_ID = TEST_CATEGORY_GROUPINGS.LEAF_CATEG_ID AND TEST_KYLIN_FACT.LSTG_SITE_ID = TEST_CATEGORY_GROUPINGS.SITE_ID
+INNER JOIN TEST_COUNTRY as SELLER_COUNTRY
+ON SELLER_ACCOUNT.ACCOUNT_COUNTRY = SELLER_COUNTRY.COUNTRY
+
+where SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL=1 and SUBSTR(SELLER_ACCOUNT.ACCOUNT_COUNTRY,0,1) in ('I', 'F')
+group by SELLER_COUNTRY.NAME, year(TEST_KYLIN_FACT.CAL_DT)
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql b/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql
new file mode 100644
index 0000000..0e84301
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql
@@ -0,0 +1,21 @@
+SELECT
+
+count(*) as cnt, sum(price) as sum_price, sum(DEAL_AMOUNT) as deal_amount, SELLER_COUNTRY.NAME, DEAL_YEAR as deal_year
+
+FROM TEST_KYLIN_FACT as TEST_KYLIN_FACT
+INNER JOIN TEST_ORDER as TEST_ORDER
+ON TEST_KYLIN_FACT.ORDER_ID = TEST_ORDER.ORDER_ID
+INNER JOIN TEST_ACCOUNT as BUYER_ACCOUNT
+ON TEST_ORDER.BUYER_ID = BUYER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_ACCOUNT as SELLER_ACCOUNT
+ON TEST_KYLIN_FACT.SELLER_ID = SELLER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
+ON TEST_KYLIN_FACT.LEAF_CATEG_ID = TEST_CATEGORY_GROUPINGS.LEAF_CATEG_ID AND TEST_KYLIN_FACT.LSTG_SITE_ID = TEST_CATEGORY_GROUPINGS.SITE_ID
+INNER JOIN TEST_COUNTRY as BUYER_COUNTRY
+ON BUYER_ACCOUNT.ACCOUNT_COUNTRY = BUYER_COUNTRY.COUNTRY
+INNER JOIN TEST_COUNTRY as SELLER_COUNTRY
+ON SELLER_ACCOUNT.ACCOUNT_COUNTRY = SELLER_COUNTRY.COUNTRY
+
+
+where SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL=1 and SELLER_ACCOUNT.COUNTRY_ABBR in ('T', 'R') and BUYER_ACCOUNT.COUNTRY_ABBR in ('T', 'R')
+group by SELLER_COUNTRY.NAME, DEAL_YEAR
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql.compare
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql.compare b/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql.compare
new file mode 100644
index 0000000..7243d7e
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_computedcolumn/query02.sql.compare
@@ -0,0 +1,21 @@
+SELECT
+
+count(*) as cnt, sum(price) as sum_price, sum(TEST_KYLIN_FACT.PRICE * TEST_KYLIN_FACT.ITEM_COUNT) as deal_amount, SELLER_COUNTRY.NAME, year(TEST_KYLIN_FACT.CAL_DT) as deal_year
+
+FROM TEST_KYLIN_FACT as TEST_KYLIN_FACT
+INNER JOIN TEST_ORDER as TEST_ORDER
+ON TEST_KYLIN_FACT.ORDER_ID = TEST_ORDER.ORDER_ID
+INNER JOIN TEST_ACCOUNT as BUYER_ACCOUNT
+ON TEST_ORDER.BUYER_ID = BUYER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_ACCOUNT as SELLER_ACCOUNT
+ON TEST_KYLIN_FACT.SELLER_ID = SELLER_ACCOUNT.ACCOUNT_ID
+INNER JOIN TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
+ON TEST_KYLIN_FACT.LEAF_CATEG_ID = TEST_CATEGORY_GROUPINGS.LEAF_CATEG_ID AND TEST_KYLIN_FACT.LSTG_SITE_ID = TEST_CATEGORY_GROUPINGS.SITE_ID
+INNER JOIN TEST_COUNTRY as BUYER_COUNTRY
+ON BUYER_ACCOUNT.ACCOUNT_COUNTRY = BUYER_COUNTRY.COUNTRY
+INNER JOIN TEST_COUNTRY as SELLER_COUNTRY
+ON SELLER_ACCOUNT.ACCOUNT_COUNTRY = SELLER_COUNTRY.COUNTRY
+
+
+where SELLER_ACCOUNT.ACCOUNT_SELLER_LEVEL=1 and SUBSTR(SELLER_ACCOUNT.ACCOUNT_COUNTRY,1,1) in ('T', 'R') and SUBSTR(BUYER_ACCOUNT.ACCOUNT_COUNTRY,1,1) in ('T', 'R')
+group by SELLER_COUNTRY.NAME, year(TEST_KYLIN_FACT.CAL_DT)
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_verifyCount/query01.sql.expected
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_verifyCount/query01.sql.expected b/kylin-it/src/test/resources/query/sql_verifyCount/query01.sql.expected
index 86242f2..11636e7 100644
--- a/kylin-it/src/test/resources/query/sql_verifyCount/query01.sql.expected
+++ b/kylin-it/src/test/resources/query/sql_verifyCount/query01.sql.expected
@@ -1,2 +1,2 @@
*
-11
+13
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_verifyCount/query03.sql.expected
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_verifyCount/query03.sql.expected b/kylin-it/src/test/resources/query/sql_verifyCount/query03.sql.expected
index 093e327..349103a 100644
--- a/kylin-it/src/test/resources/query/sql_verifyCount/query03.sql.expected
+++ b/kylin-it/src/test/resources/query/sql_verifyCount/query03.sql.expected
@@ -1,2 +1,2 @@
10
-13
+15
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/kylin-it/src/test/resources/query/sql_verifyCount/query04.sql.expected
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_verifyCount/query04.sql.expected b/kylin-it/src/test/resources/query/sql_verifyCount/query04.sql.expected
index 71011db..d10e701 100644
--- a/kylin-it/src/test/resources/query/sql_verifyCount/query04.sql.expected
+++ b/kylin-it/src/test/resources/query/sql_verifyCount/query04.sql.expected
@@ -1,2 +1,2 @@
100
-11
+13
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/query/src/main/java/org/apache/kylin/query/schema/OLAPSchema.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/schema/OLAPSchema.java b/query/src/main/java/org/apache/kylin/query/schema/OLAPSchema.java
index 27d456f..52023e4 100644
--- a/query/src/main/java/org/apache/kylin/query/schema/OLAPSchema.java
+++ b/query/src/main/java/org/apache/kylin/query/schema/OLAPSchema.java
@@ -78,7 +78,7 @@ public class OLAPSchema extends AbstractSchema {
final String tableName = tableDesc.getName();//safe to use tableDesc.getName() here, it is in a DB context now
final OLAPTable table = new OLAPTable(this, tableDesc);
olapTables.put(tableName, table);
- // logger.debug("Project " + projectName + " exposes table " + tableName);
+ //logger.debug("Project " + projectName + " exposes table " + tableName);
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
index df9ecfb..4217f86 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/ModelController.java
@@ -191,7 +191,7 @@ public class ModelController extends BasicController {
newModelDesc = modelService.createModelDesc(project, newModelDesc);
//reload avoid shallow
- metaManager.reloadDataModelDesc(newModelName);
+ metaManager.reloadDataModelDescAt(DataModelDesc.concatResourcePath(newModelName));
} catch (IOException e) {
throw new InternalErrorException("failed to clone DataModelDesc", e);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
index 7f7b6f0..b176dae 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
@@ -289,7 +289,6 @@ public class CacheServiceTest extends LocalFileMetadataTestCase {
return tableDesc;
}
- @SuppressWarnings("deprecation")
@Test
public void testMetaCRUD() throws Exception {
final MetadataManager metadataManager = MetadataManager.getInstance(configA);
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/server/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java b/server/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java
new file mode 100644
index 0000000..550aeb8
--- /dev/null
+++ b/server/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.kylin.rest.service;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.List;
+
+import org.apache.kylin.job.exception.JobException;
+import org.apache.kylin.metadata.MetadataManager;
+import org.apache.kylin.metadata.model.ComputedColumnDesc;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ModelServiceTest extends ServiceTestBase {
+
+ @Autowired
+ ModelService modelService;
+
+ @Rule
+ public ExpectedException expectedEx = ExpectedException.none();
+
+ @Test
+ public void testSuccessModelUpdate() throws IOException, JobException {
+ List<DataModelDesc> dataModelDescs = modelService.listAllModels("ci_inner_join_model", "default");
+ Assert.assertTrue(dataModelDescs.size() == 1);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ MetadataManager.MODELDESC_SERIALIZER.serialize(dataModelDescs.get(0), new DataOutputStream(baos));
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ DataModelDesc deserialize = MetadataManager.MODELDESC_SERIALIZER.deserialize(new DataInputStream(bais));
+
+ deserialize.setOwner("somebody");
+ DataModelDesc dataModelDesc = modelService.updateModelAndDesc(deserialize);
+ Assert.assertTrue(dataModelDesc.getOwner().equals("somebody"));
+ }
+
+ @Test
+ public void testSuccessModelUpdateOnComputedColumn() throws IOException, JobException, NoSuchFieldException, IllegalAccessException {
+
+ List<DataModelDesc> dataModelDescs = modelService.listAllModels("ci_left_join_model", "default");
+ Assert.assertTrue(dataModelDescs.size() == 1);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ MetadataManager.MODELDESC_SERIALIZER.serialize(dataModelDescs.get(0), new DataOutputStream(baos));
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ DataModelDesc deserialize = MetadataManager.MODELDESC_SERIALIZER.deserialize(new DataInputStream(bais));
+
+ Field field = ComputedColumnDesc.class.getDeclaredField("comment");
+ field.setAccessible(true);
+ field.set(deserialize.getComputedColumnDescs().get(0), "change on comment is okay");
+ DataModelDesc dataModelDesc = modelService.updateModelAndDesc(deserialize);
+ }
+
+ @Test
+ public void testFailureModelUpdateDueToComputedColumnConflict() throws IOException, JobException, NoSuchFieldException, IllegalAccessException {
+ expectedEx.expect(IllegalStateException.class);
+ expectedEx.expectMessage("Computed column named DEFAULT.TEST_KYLIN_FACT.DEAL_AMOUNT is already defined in other models: [DataModelDesc [name=ci_left_join_model], DataModelDesc [name=ci_inner_join_model]]. Please change another name, or try to keep consistent definition");
+
+ List<DataModelDesc> dataModelDescs = modelService.listAllModels("ci_left_join_model", "default");
+ Assert.assertTrue(dataModelDescs.size() == 1);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ MetadataManager.MODELDESC_SERIALIZER.serialize(dataModelDescs.get(0), new DataOutputStream(baos));
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ DataModelDesc deserialize = MetadataManager.MODELDESC_SERIALIZER.deserialize(new DataInputStream(bais));
+
+ Field field = ComputedColumnDesc.class.getDeclaredField("expression");
+ field.setAccessible(true);
+ field.set(deserialize.getComputedColumnDescs().get(0), "another expression");
+ DataModelDesc dataModelDesc = modelService.updateModelAndDesc(deserialize);
+ }
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/source-hive/src/main/java/org/apache/kylin/source/hive/SchemaChecker.java
----------------------------------------------------------------------
diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/SchemaChecker.java b/source-hive/src/main/java/org/apache/kylin/source/hive/SchemaChecker.java
index 3488fbd..dbcfc7a 100644
--- a/source-hive/src/main/java/org/apache/kylin/source/hive/SchemaChecker.java
+++ b/source-hive/src/main/java/org/apache/kylin/source/hive/SchemaChecker.java
@@ -153,7 +153,7 @@ public class SchemaChecker {
List<String> violateColumns = Lists.newArrayList();
for (ColumnDesc column : table.getColumns()) {
- if (usedColumns.contains(column)) {
+ if (!column.isComputedColumnn() && usedColumns.contains(column)) {
HiveTableMeta.HiveTableColumnMeta field = fieldsMap.get(column.getName());
if (field == null || !isColumnCompatible(column, field)) {
violateColumns.add(column.getName());