yql-8611_calc_peephole.sql 847 B

12345678910111213141516171819202122232425262728293031
  1. USE plato;
  2. $tableList = AsList(
  3. AsStruct(Yson('{"row_count"=9}') as Attributes, "Input1" as Path, "table" as Type),
  4. AsStruct(Yson('{"row_count"=19}') as Attributes, "Input2" as Path, "table" as Type)
  5. );
  6. -- $bucket_size = 1000000;
  7. $buckets = ASLIST(0, 1, 2, 3);
  8. $row_count = (
  9. SELECT Yson::LookupInt64(Attributes, "row_count")
  10. FROM AS_TABLE($tableList)
  11. WHERE
  12. Type = "table"
  13. );
  14. $bucket_size = unwrap(CAST($row_count / ListLength($buckets) AS Uint64));
  15. DEFINE ACTION $make_bucket($bucket_number) AS
  16. $offset = unwrap(CAST($bucket_number AS UInt8)) * $bucket_size;
  17. $dst = "Output" || $bucket_number;
  18. INSERT INTO $dst (
  19. SELECT * FROM Input
  20. ORDER BY key
  21. LIMIT $bucket_size OFFSET $offset);
  22. END DEFINE;
  23. EVALUATE FOR $bucket_number IN $buckets
  24. DO $make_bucket(CAST($bucket_number AS String));