row-based transforms row_transform([E1, Q1, MT1], [E2, Q2, MT2] ...) => [[E1, MT1], [E2, MT2] ... ] KQ = key query key transforms key_transform([E1, KQ1, K1], [E2, KQ2, K2], ...) => [E1, E2, ...] write transform result write_transform([E1, MT1], [E2, MT2], ...) => [E1, E2, ...] review how to compose row transforms also, figure out whether key-based transforms should output a map table