program27.yql 887 B

123456789101112131415161718192021222324
  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 revLen (Length (Reverse list)))
  14. (let s (AddMember s 'subkey (String '.)))
  15. (let s (AddMember s 'value (ToString revLen)))
  16. (let ret (AsList s))
  17. (return ret)
  18. ))))))
  19. (let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
  20. (let mr_sink (DataSink 'yt (quote plato)))
  21. (let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
  22. (let world (Commit! world mr_sink))
  23. (return world)
  24. )