Having been one of the co-inventors of XQuery, I completely understand the benefit of placing the FROM in the beginning. However, there is a vast set of existing familiarity among users along SQL that we felt supporting this will help people to learn the language quicker than introducing a new syntax.
As to your join syntax: Conceptually, U-SQL is a functional lambda expression composition language. One of the major lambdas are rowset expressions. Thus in your example above a is by itself a rowset lambda, "a JOIN b ON comp" is a rowset lambda etc. What does this mean? It means that eventually, the language may allow you to just write:
a join b on a.id == b.id
instead of
SELECT * FROM a join b on a.id == b.id;
At that point the SELECT ... FROM clause becomes a projection and applier of scalar transforms and aggregators.
Today, U-SQL is not quite as flexible, but we do support this pattern already for Table-Valued Functions where you can say
As to your join syntax: Conceptually, U-SQL is a functional lambda expression composition language. One of the major lambdas are rowset expressions. Thus in your example above a is by itself a rowset lambda, "a JOIN b ON comp" is a rowset lambda etc. What does this mean? It means that eventually, the language may allow you to just write:
a join b on a.id == b.id
instead of
SELECT * FROM a join b on a.id == b.id;
At that point the SELECT ... FROM clause becomes a projection and applier of scalar transforms and aggregators.
Today, U-SQL is not quite as flexible, but we do support this pattern already for Table-Valued Functions where you can say
TVF(42)
in addition to
SELECT * FROM TVF(42)
Good discussion though... keep it coming!