* The _!WithPath_ clause can be used with transitive closure queries to retrieve the Path that
* The _!WithPath_ clause can be used with transitive closure queries to retrieve the Path that
connects the two related Entities. (We also provide a higher level interface for Closure Queries
connects the two related Entities. (We also provide a higher level interface for Closure Queries
see scaladoc for 'org.apache.atlas.query.ClosureQuery')
see scaladoc for 'org.apache.atlas.query.ClosureQuery')
* ORDERBY is optional. Orderby clause should be specified in single quote ('). When order by clause is specified case insensitive sorting is done in ascending order.
For sorting in descending order specify 'DESC' after order by clause. If no order by is specified then no default sorting is applied.
* LIMIT is optional. It limits the maximum number of objects to be fetched starting from specified optional offset. If no offset is specified count starts from beginning.
* There are couple of Predicate functions different from SQL:
* There are couple of Predicate functions different from SQL:
* _is_ or _isa_can be used to filter Entities that have a particular Trait.
* _is_ or _isa_can be used to filter Entities that have a particular Trait.
* _has_ can be used to filter Entities that have a value for a particular Attribute.
* _has_ can be used to filter Entities that have a value for a particular Attribute.
...
@@ -89,6 +100,11 @@ Language Notes:
...
@@ -89,6 +100,11 @@ Language Notes:
* from DB
* from DB
* DB where name="Reporting" select name, owner
* DB where name="Reporting" select name, owner
* DB where name="Reporting" select name, owner orderby 'name'
* DB where name="Reporting" select name limit 10
* DB where name="Reporting" select name, owner limit 10 offset 0
* DB where name="Reporting" select name, owner orderby 'name' limit 10 offset 5
* DB where name="Reporting" select name, owner orderby 'name' desc limit 10 offset 5
* 1. SrcQuery [select] [orderby desc] [Limit x offset y] -> source query followed by optional select statement followed by optional order by followed by optional limit
cases~l~None=>loop(s,l.get)
* eg: Select "hive_db where hive_db has name orderby 'hive_db.owner' limit 2 offset 1"
{"hive_db where (name = \"Reporting\") limit 10",1},
{"hive_db where (name = \"Reporting\") select name as _col_0, owner as _col_1",1},
{"hive_db where (name = \"Reporting\") select name as _col_0, owner as _col_1 limit 10",1},
{"hive_db where hive_db is JdbcAccess",0},//Not supposed to work
{"hive_db hive_table",8},
{"hive_db hive_table limit 5",5},
{"hive_db hive_table limit 5 offset 5",3},
{"hive_db where hive_db has name",3},
{"hive_db where hive_db has name limit 5",3},
{"hive_db where hive_db has name limit 2 offset 0",2},
{"hive_db where hive_db has name limit 2 offset 1",2},
{"hive_db as db1 hive_table where (db1.name = \"Reporting\")",0},//Not working -> ATLAS-145
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 ",1},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 limit 10",1},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 limit 10 offset 1",0},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 limit 10 offset 0",1},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 ",1},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 limit 10 ",1},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 limit 10 offset 0",1},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 limit 10 offset 5",0},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 ",1},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 limit 10 offset 0",1},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 limit 10 offset 1",0},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 limit 10",1},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 limit 0 offset 1",0},
// trait searches
{"Dimension",5},
{"Dimension limit 2",2},
{"Dimension limit 2 offset 1",2},
{"Dimension limit 5 offset 4",1},
{"JdbcAccess",2},
{"JdbcAccess limit 5 offset 0",2},
{"JdbcAccess limit 2 offset 1",1},
{"JdbcAccess limit 1",1},
{"ETL",3},
{"ETL limit 2",2},
{"ETL limit 1",1},
{"ETL limit 1 offset 0",1},
{"ETL limit 2 offset 1",2},
{"Metric",5},
{"Metric limit 10",5},
{"Metric limit 2",2},
{"Metric limit 10 offset 1",4},
{"PII",6},
{"PII limit 10",6},
{"PII limit 2",2},
{"PII limit 10 offset 1",5},
{"`Log Data`",4},
{"`Log Data` limit 3",3},
{"`Log Data` limit 10 offset 2",2},
{"hive_table where name='sales_fact', db where name='Sales'",1},
{"hive_table where name='sales_fact', db where name='Sales' limit 10",1},
{"hive_table where name='sales_fact', db where name='Sales' limit 10 offset 1",0},
{"hive_table where name='sales_fact', db where name='Reporting'",0},
{"hive_table where name='sales_fact', db where name='Reporting' limit 10",0},
{"hive_table where name='sales_fact', db where name='Reporting' limit 10 offset 1",0},
{"hive_partition as p where values = ['2015-01-01']",1},
{"hive_partition as p where values = ['2015-01-01'] limit 10",1},
{"hive_partition as p where values = ['2015-01-01'] limit 10 offset 1",0},
};
}
@DataProvider(name="dslOrderByQueriesProvider")
privateObject[][]createDSLQueriesWithOrderBy(){
BooleanisAscending=Boolean.TRUE;
returnnewObject[][]{
//Not working, the problem is in server code not figuring out how to sort. not sure if it is valid use case.
{"hive_db where (name = \"Reporting\") orderby 'hive_db.name'",1,"name",isAscending},
{"hive_db where (name = \"Reporting\") orderby 'hive_db.name' limit 10",1,"name",isAscending},
{"hive_db where (name = \"Reporting\") select name as _col_0, owner as _col_1 orderby '_col_1'",1,"_col_1",isAscending},//will it work
{"hive_db where (name = \"Reporting\") select name as _col_0, owner as _col_1 orderby '_col_1' limit 10",1,"_col_1",isAscending},
{"hive_db where hive_db has name orderby 'hive_db.owner'",3,"owner",isAscending},
{"hive_db where hive_db has name orderby 'hive_db.owner' limit 5",3,"owner",isAscending},
{"hive_db where hive_db has name orderby 'hive_db.owner' limit 2 offset 0",2,"owner",isAscending},
{"hive_db where hive_db has name orderby 'hive_db.owner' limit 2 offset 1",2,"owner",isAscending},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 orderby '_col_1'",1,"_col_1",isAscending},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 orderby '_col_1' limit 10",1,"_col_1",isAscending},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 orderby '_col_1' limit 10 offset 1",0,"_col_1",isAscending},
{"hive_db where (name = \"Reporting\") select name as _col_0, (createTime + 1) as _col_1 orderby '_col_1' limit 10 offset 0",1,"_col_1",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 orderby '_col_1' ",1,"_col_1",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 orderby '_col_1' limit 10 ",1,"_col_1",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 orderby '_col_1' limit 10 offset 0",1,"_col_1",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime > \"2014-01-01\" ) select name as _col_0, createTime as _col_1 orderby '_col_1' limit 10 offset 5",0,"_col_1",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 orderby '_col_0' ",1,"_col_0",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 orderby '_col_0' limit 10 offset 0",1,"_col_0",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 orderby '_col_0' limit 10 offset 1",0,"_col_0",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 orderby '_col_0' limit 10",1,"_col_0",isAscending},
{"hive_table where (name = \"sales_fact\" and createTime >= \"2014-12-11T02:35:58.440Z\" ) select name as _col_0, createTime as _col_1 orderby '_col_0' limit 0 offset 1",0,"_col_0",isAscending},