aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/Aggregation/AggregateGroubByTwoFields.yql
blob: e9565555ef1ba16e5385fb864ce759e655bdfd43 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
(
(let world (block '(
  (let x (Read! world (DataSource '"yt" '"plato") (Key '('table (String '"Input"))) '('"key" '"subkey" '"value") '()))
  (let world (Left! x))
  (let table1 (Right! x))
  (let output (block '(
    (let select (block '(
      (let core table1)
      (let core (block '(
        (let Count0_create (lambda '(row) (Convert (Exists row) 'Uint64)))
        (let Count0_update (lambda '(row state) (OptionalReduce state (Convert (Exists row) 'Uint64) (lambda '(a b) (+ a b)))))
        (let Count0_save (lambda '(state) state))
        (let Count0_load (lambda '(item) item))
        (let Count0_merge (lambda '(a b) (OptionalReduce a b (lambda '(a b) (+ a b)))))
        (let Count0_finish (lambda '(state) state))
        (return (Aggregate core '('"key" '"subkey") '('('Count0 (AggregationTraits (StructMemberType (ListItemType (TypeOf core)) '"value") Count0_create Count0_update Count0_save Count0_load Count0_merge Count0_finish (Uint64 '0)) '"value"))))
      )))
      (let core (FlatMap core (lambda '(row) (block '(
        (let res (Struct))
        (let res (AddMember res '"key" (Member row '"key")))
        (let res (AddMember res '"subkey" (Member row '"subkey")))
        (let res (AddMember res '"column2" (Member row 'Count0)))
        (let res (AsList res))
        (return res)
      )))))
      (return core)
    )))
    (let select (Sort select '((Bool 'true) (Bool 'true)) (lambda '(row) '((Member row '"key") (Member row '"subkey")))))
    (return select)
  )))
  (let world (block '(
    (let result_sink (DataSink 'result))
    (let world (Write! world result_sink (Key) output '('('type) '('autoref) '('columns '('"key" '"subkey" '"column2")))))
    (return (Commit! world result_sink))
  )))
  (return world)
)))
(let world (block '(
  (let plato_sink (DataSink '"yt" '"plato"))
  (let world (Commit! world plato_sink))
  (return world)
)))
(return world)
)