aggregation semantics
play

Aggregation semantics Jzsef Marton Budapest University of - PowerPoint PPT Presentation

CIR-2017-219 Aggregation semantics Jzsef Marton Budapest University of Technology and Economics 2017-05-10, oCIM2@London Jzsef Marton - Aggregation semantics 1 Aggregation in openCypher Partition tuples based on values for grouping key


  1. CIR-2017-219 Aggregation semantics József Marton Budapest University of Technology and Economics 2017-05-10, oCIM2@London József Marton - Aggregation semantics 1

  2. Aggregation in openCypher Partition tuples based on values for grouping key ● Return a single resulting tuple for each partition ● In openCypher: WITH/RETURN clauses ● E.g. count nodes in each class (.class property) ● MATCH (n) RETURN n.class, count(*) 2017-05-10, oCIM2@London József Marton - Aggregation semantics 2

  3. Implicit grouping key Result definition of a query (step) defines aggregation ● Neo4j 3.1 docs tells ● RETURN n, count(*) We have two return expressions: n, and count(*). The first, n, is not an aggregate function, and so it will be the grouping key. The latter, count(*) is an aggregate expression. What if mixing aggregate and non-aggregate ● expressions, e.g. the weighted sum query RETURN n.weight * sum(n.value) 2017-05-10, oCIM2@London József Marton - Aggregation semantics 3

  4. CIR-2017-219 Grouping key selection options RETURN n.weight * sum(n.value) 1. grouping key is the tuple built from all variables (*) that appear outside of aggregate functions of a particular WITH/RETURN clause *: node, relationship, their properties or variables chained from previous query step Pros: clear in all situations, more flexible than option 2 Cons: would change current Neo4j behavior 2. each item of the expression list in WITH/RETURN forced to contain either i no aggregate function, or ii single aggregate function at the outermost level (this is the approach in #188, #218). Grouping key is the tuple built from items of type (i), i.e. those w/ no aggregates Pros: in line with current Neo4j behavior and the grouping operator in Ullman‘s Database systems -- The complete book, 2009 Cons: poses restriction on WITH/RETURN clauses, can‘t handle the weighted sum query w/o rewriting as WITH n.weight as weight, sum(n.value) AS sum_val RETURN weight * sum_val 2017-05-10, oCIM2@London József Marton - Aggregation semantics 4

  5. CIR-2017-219 TODO: Choose Neither option restrict expressiveness ● might need some query rewrite Option 1 seems clear and flexible enough for practical queries ● Option 2 is in Neo4j, but complex aggregation and non- ● aggregation expressions might yield counter-intuitive result Posing restrictions on creating complex expressions by mixing aggregations and non-aggregations is a safety net for beginners, but cumbersome for more complex queries. 2017-05-10, oCIM2@London József Marton - Aggregation semantics 5

  6. Feel the difference M A T C H ( n ) Input graph: R E T U R N a b s ( n . w e i g h t ) A S a b s , c o u n t ( * ) A S c n t ten nodes: two for each weight -2,-1,0,1,2 Option2 gives: Option1 gives: ╒═════╤═════╕ Model Opt.2 in Opt1 ╒═════╤═════╕ │"abs"│"cnt"│ │"abs"│"cnt"│ ╞═════╪═════╡ ╞═════╪═════╡ │"2" │"4" │ │"2" │"2" │ ├─────┼─────┤ M A T C H ( n ) ├─────┼─────┤ │"1" │"4" │ W I T H a b s ( n . w e i g h t ) A S a b s , n │"1" │"2" │ ├─────┼─────┤ R E T U R N a b s , c o u n t ( * ) a s c n t ├─────┼─────┤ │"0" │"2" │ │"2" │"2" │ └─────┴─────┘ ├─────┼─────┤ │"0" │"2" │ ├─────┼─────┤ │"1" │"2" │ └─────┴─────┘ 2017-05-10, oCIM2@London József Marton - Aggregation semantics 6

  7. CIR-2017-219 Let‘s get loud 1. grouping key is the tuple built from all variables (*) that appear outside of aggregate functions of a particular WITH/RETURN clause *: node, relationship, their properties or variables chained from previous query step 2. each item of the expression list in WITH/RETURN forced to contain either i no aggregate function, or ii single aggregate function at the outermost level (this is the approach in #188, #218). Grouping key is the tuple built from items of type (i), i.e. those w/ no aggregates 2017-05-10, oCIM2@London József Marton - Aggregation semantics 7

  8. That‘s all 2017-05-10, oCIM2@London József Marton - Aggregation semantics 8

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend