Hive 中的交叉应用等效项?
Cross Apply Equivalent in Hive?
我想在 AWS EMR Hive 中创建交叉应用的效果。我这里有一些示例代码 运行s in SQL Server 2017.
with r as (
select 1 as d
union all
select 2 as d
)
select * from r
cross apply (select 'f' as u) e;
我如何 运行 在 EMR Hive 中与此等效?
我查看了 Lateral View 文档,但它的所有引用都爆炸了,而且我没有数组。
我最终解决了这个问题,只添加了一个具有单个值的额外字段并将两个表连接在一起以产生相同的效果。
最终看起来像这样:
with d as (
select column, 'AreYouKiddingMe' as k from table
), e as (
select column2, 'AreYouKiddingMe' as k from table2
)
select * from d inner join e on d.k = e.k
在您的情况下,您可以 CROSS JOIN
而不是 CROSS APPLY
。 F.e.:
SET hive.strict.checks.cartesian.product = false;
WITH r AS (
SELECT 1 AS d
UNION ALL
SELECT 2 AS d
)
SELECT *
FROM r
CROSS JOIN (SELECT 'f' AS u) e;
我想在 AWS EMR Hive 中创建交叉应用的效果。我这里有一些示例代码 运行s in SQL Server 2017.
with r as (
select 1 as d
union all
select 2 as d
)
select * from r
cross apply (select 'f' as u) e;
我如何 运行 在 EMR Hive 中与此等效?
我查看了 Lateral View 文档,但它的所有引用都爆炸了,而且我没有数组。
我最终解决了这个问题,只添加了一个具有单个值的额外字段并将两个表连接在一起以产生相同的效果。
最终看起来像这样:
with d as (
select column, 'AreYouKiddingMe' as k from table
), e as (
select column2, 'AreYouKiddingMe' as k from table2
)
select * from d inner join e on d.k = e.k
在您的情况下,您可以 CROSS JOIN
而不是 CROSS APPLY
。 F.e.:
SET hive.strict.checks.cartesian.product = false;
WITH r AS (
SELECT 1 AS d
UNION ALL
SELECT 2 AS d
)
SELECT *
FROM r
CROSS JOIN (SELECT 'f' AS u) e;