LengthInsideReduce.yql 982 B

1234567891011121314151617181920212223
  1. (
  2. #comment
  3. (let mr_source (DataSource 'yt 'plato))
  4. (let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
  5. (let world (Left! x))
  6. (let table1 (Right! x))
  7. (let keySelector (lambda '(x) (Member x 'key)))
  8. (let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
  9. (let key (Nth pair '0))
  10. (let list (ForwardList (Nth pair '1)))
  11. (let s (Struct))
  12. (let s (AddMember s 'key key))
  13. (let s (AddMember s 'subkey (Concat (ToString (Length table1)) (ToString (HasItems table1)))))
  14. (let s (AddMember s 'value (Concat (ToString (Length list)) (ToString (HasItems list)))))
  15. (let ret (AsList s))
  16. (return ret)
  17. ))))))
  18. (let reducedTable (PartitionByKey table1 keySelector (Bool 'true) (lambda '(item) (Member item 'subkey)) listHandler))
  19. (let mr_sink (DataSink 'yt (quote plato)))
  20. (let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
  21. (let world (Commit! world mr_sink))
  22. (return world)
  23. )