RexCall не может быть приведен к исключению RexInputRef в Apache Beam SQL - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сделать простое объединение с использованием Beam SQL, но я получаю исключение при компиляции:

Exception in thread "main" java.lang.ClassCastException: org.apache.beam.repackaged.beam_sdks_java_extensions_sql.org.apache.calcite.rex.RexCall cannot be cast to org.apache.beam.repackaged.beam_sdks_java_extensions_sql.org.apache.calcite.rex.RexInputRef

Объединение выглядит примерно так:

select T1.x from table1 T1 join table2 T2
on 
(case when T1.a = 'ABC' then 'ABC' else T1.b end = T2.c)

Этоусловие отлично работает при выполнении в BigQuery (пробовал как проверка работоспособности).Не уверен, почему это происходит в Beam SQL.Я даже пытался использовать Beam SQL UDF, но это тоже не помогло.Я предполагаю, что это из-за Apache Calcite и его формата, но я не знаю, как с этим справиться.

Может кто-нибудь, пожалуйста, помогите с этим.

1 Ответ

0 голосов
/ 12 февраля 2019

Интересно.Можете ли вы попробовать IF кондиционирование?Я надеюсь, что это будет работать:

select T1.x from table T1 join table T2 on IF(T1.a = 'ABC', 'ABC',T1.b) = T2.c
...