Azure U-Sql不允许非等联接
我偶然发现了U-SQL的一些问题,对我来说,这是一个我还没有找到解决方法的问题 似乎U-SQL除了在联接中支持==之外不支持其他任何东西,所以不能在联接本身中放置>或< 对于我在oracle中完成的以下用例:Azure U-Sql不允许非等联接,azure,u-sql,Azure,U Sql,我偶然发现了U-SQL的一些问题,对我来说,这是一个我还没有找到解决方法的问题 似乎U-SQL除了在联接中支持==之外不支持其他任何东西,所以不能在联接本身中放置>或
create table trf.test_1(
number_col int
);
insert into trf.test_1 VALUES (10);
insert into trf.test_1 VALUES (20);
insert into trf.test_1 VALUES (30);
insert into trf.test_1 VALUES (60);
drop table trf.test_2;
create table trf.test_2(
number_col int
);
insert into trf.test_2 VALUES (20);
insert into trf.test_2 VALUES (30);
SELECT t1.number_col, t2.number_col
FROM trf.test_1 t1
LEFT JOIN trf.test_2 t2 ON t1.number_col < t2.number_col
;
创建表trf.test_1(
数字列
);
插入trf.test_1值(10);
插入trf.test_1值(20);
插入trf.test_1值(30);
插入trf.test_1值(60);
升降台trf.test_2;
创建表trf.test_2(
数字列
);
插入trf.test_2值(20);
插入trf.test_2值(30);
选择t1.number\u列,t2.number\u列
来自trf.test_1 t1
左连接trf.test_2 t2在t1.number_列
我得到以下信息:
在没有@t1 =
SELECT * FROM
( VALUES
(10),
(20),
(30),
(60)
) AS T(num_col);
@t2 =
SELECT * FROM
( VALUES
(20),
(30)
) AS T(num_col);
@result =
SELECT t1.num_col, t2.num_col AS num_col_2
FROM @t1 AS t1
CROSS JOIN @t2 AS t2
WHERE t1.num_col < t2.num_col;
@result2 =
SELECT t1.num_col, t2.num_col AS num_col_2
FROM @t1 AS t1
LEFT JOIN @result AS t2 ON t1.num_col == t2.num_col;
OUTPUT @result2
TO "/Output/ReferenceGuide/Joins/exampleA.csv"
USING Outputters.Csv();
@t1=
从中选择*
(价值观
(10),
(20),
(30),
(60)
)AS T(num_col);
@t2=
从中选择*
(价值观
(20),
(30)
)AS T(num_col);
@结果=
选择t1.num\u col,t2.num\u col作为num\u col\u 2
从@t1到t1
交叉连接@t2为t2
其中t1.num\u col
编辑-我将@t1数据集中的左连接添加回@result集,这似乎很有效,但如果有更好的解决方案,我会很感兴趣。这是一个已知的特性,在文章“”中进行了广泛讨论 那篇文章的一些引语: 加入比较 U-SQL,就像大多数扩展的大数据查询语言一样 如果支持联接,则将联接比较限制为相等 要联接的行集中列之间的比较 如果比较中存在非相等比较或更复杂的表达式(如方法调用),则可以将比较移动到SELECT的WHERE子句。或者,可以将更复杂的表达式放在前面的SELECT语句的列中,然后在联接比较中引用该别名
基本上,在像ADLA这样的分布式平台上,它们的扩展性不是特别好。谢谢你,很高兴知道原因。我会用我找到的工作。