Hive "with" clause syntax

Viewed 28

The with syntax is absolutely not cooperating, can not get it to work. Here is a stripped down version of it

set hive.strict.checks.cartesian.product=false;
with
  newd as  (select
avg(risk_score_highest) risk_score_hi,
avg(risk_score_current) risk_score_cur,
from table1),
  oldd as (  select
avg(risk_score_highest) risk_score_hi,
avg(risk_score_current) risk_score_cur,
from table2
    where ds='2022-09-08')
select
(newd.risk_score_hi-oldd.risk_score_hi)/newd.risk_score_hi diff_risk_score_hi,
(newd.risk_score_cur-oldd.risk_score_cur)/newd.risk_score_cur diff_risk_score_cur,
from newd cross join oldd
order by 1 desc
Apache Hive Error

[Statement 2 out of 2] hive error: Error while compiling statement: 
FAILED: SemanticException [Error 10004]: Invalid table alias or 
column reference 'newd': (possible column names are: 
diff_risk_score_hi, diff_risk_score_cur)

I had been following the general form shown here: https://stackoverflow.com/a/47351815/1056563

WITH v_text
AS
(SELECT 1 AS key, 'One' AS value),
v_roman
AS
(SELECT 1 AS key, 'I' AS value)
INSERT OVERWRITE TABLE ramesh_test
SELECT v_text.key, v_text.value, v_roman.value
  FROM v_text JOIN v_roman
                ON (v_text.key = v_roman.key);

I can not understand what I am missing to get the inline with views to work.

Update My query (the first one on top) works in Presto (but obviously with the set hive.strict.checks.cartesian.product=false; line removed). So hive is really hard to get happy for with clauses apparently. I tried like a dozen different ways of using the aliases.

0 Answers
Related