nested_rewrite_io.sql 720 B

12345678910111213141516171819202122
  1. use plato;
  2. $input = select * from AS_TABLE([<|a:"foo",b:"123"|>]);
  3. $mapping = select {"a":"String", "b":"Int32"} from Input limit 1;
  4. $transformer = ($type)->{
  5. $t = EvaluateType(ParseTypeHandle($type));
  6. return ($value)->{ return cast($value as $t); };
  7. };
  8. $converter = ($row)->{
  9. return EvaluateCode(LambdaCode(($rowCode)->{
  10. return FuncCode("AsStruct", ListMap(StructMembers($row), ($name)->{
  11. return ListCode(
  12. AtomCode($name),
  13. FuncCode("Apply", QuoteCode($transformer(Unwrap($mapping[$name]))), FuncCode("Member", $rowCode, AtomCode($name)))
  14. );
  15. }));
  16. }))($row);
  17. };
  18. select * from (select $converter(TableRow()) from $input) flatten columns;