aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/Udf/OptionalReduceWithResource.yql
blob: affd7f4d555ff02ac6ea2e034365265bc2d5efc6 (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
45
(
#comment
(let mr_source (DataSource 'yt 'plato))
(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
(let world (Left! x))
(let table1 (Right! x))
(let udfTDigest_Create (Udf 'Stat.TDigest_Create))
(let udfTDigest_AddValue (Udf 'Stat.TDigest_AddValue))
(let udfTDigest_GetPercentile (Udf 'Stat.TDigest_GetPercentile))
(let udfTDigest_Serialize (Udf 'Stat.TDigest_Serialize))
(let udfTDigest_Deserialize (Udf 'Stat.TDigest_Deserialize))
(let udfTDigest_Merge (Udf 'Stat.TDigest_Merge))
(let table1map (Map table1 (lambda '(item) (block '(
   (let value (Member item 'value))
   (let x (Apply udfTDigest_Create (Double '1.0)))
   (let y (Apply udfTDigest_Create (Double '2.0)))
   (let jx (Just x))
   (let jy (Just y))
   (let n (Nothing (OptionalType (TypeOf x))))
   (let handler (lambda '(x y) (Apply udfTDigest_Merge x y)))
   (let newValue value)
   (let newValue (Concat newValue (String '" => ")))
   (let newValue (Concat newValue (Concat (String '" ") (Coalesce (Map
       (OptionalReduce jx jy handler) (lambda '(r) 
       (ToString (Apply udfTDigest_GetPercentile r (Double '0.75))
       ))) (String '?)))))
   (let newValue (Concat newValue (Concat (String '" ") (Coalesce (Map
       (OptionalReduce jx n handler) (lambda '(r) 
       (ToString (Apply udfTDigest_GetPercentile r (Double '0.75))
       ))) (String '?)))))
   (let newValue (Concat newValue (Concat (String '" ") (Coalesce (Map
       (OptionalReduce n n handler) (lambda '(r) 
       (ToString (Apply udfTDigest_GetPercentile r (Double '0.75))
       ))) (String '?)))))
   (let s (Struct))
   (let s (AddMember s 'key (Member item 'key)))
   (let s (AddMember s 'subkey (Member item 'subkey)))
   (let s (AddMember s 'value newValue))
   (return s)
)))))
(let mr_sink (DataSink 'yt (quote plato)))
(let world (Write! world mr_sink (Key '('table (String 'Output))) table1map '('('mode 'append))))
(let world (Commit! world mr_sink))
(return world)
)