RexCall не может быть приведен к исключению RexInputRef в Apache Beam SQL
Я пытаюсь сделать простое объединение с использованием 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 ответ
Интересно. Можете ли вы попробовать IF
кондиционер? Я надеюсь, что это будет работать:
select T1.x from table T1 join table T2 on IF(T1.a = 'ABC', 'ABC',T1.b) = T2.c