Неверный псевдоним таблицы или ссылка на столбец 'SYNTHJOIN_xxxxx' - PullRequest
0 голосов
/ 19 февраля 2019

был бы признателен за несколько дополнительных глаз;Я не могу понять, почему этот запрос не работает, я конвертирую сценарии Teradata SQL в Hive.

        Select a.some_id FROM app_table_dc.seds_thingy_mapping_seds_vdata   e
         LEFT JOIN app_table_dc.assets a
            ON e.eng_serial_number = a.serial_number
            AND a.asset_type_id = 2
      LEFT JOIN (SELECT vdata_thingy_id
                                        , thingy_date InductDate
                                    FROM app_table_dc.seds_thingy_mapping_seds_vdata
                                    WHERE thingy_type = 'EI') ei

   ON ei.vdata_thingy_id = e.vdata_thingy_id
     JOIN app_table_dc.engine_type_asset_models am
        ON a.asset_model_id = am.asset_model_id
     JOIN app_table_dc.engine_type egt
        ON am.engine_type_id = egt.engine_type_id

Последние две строки НЕ работают;когда я их вынимаю, он запускается ... Однако с их включением я получаю журналы ошибок, которые показывают:

Код ошибки: 10004, состояние SQL: TStatus (statusCode: ERROR_STATUS, infoMessages: [* org.apache.hive.service.cli.HiveSQLException: ошибка при компиляции оператора: FAILED: SemanticException [Ошибка 10004]: строка 1: 4915 Недопустимый псевдоним таблицы или ссылка на столбец 'SYNTHJOIN_110d3abf': (возможные имена столбцов:blahblahblah)

Я позаботился о том, чтобы имена таблиц, на которые ссылаются, имели правильную номенклатуру / имена, а также столбцы, на которые ссылались. Я нахожусь в своем уме.Спасибо за любую информацию заранее!

Ответы [ 2 ]

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

Это был единственный выход, который работал:

    with somealias as (select * from app_table_dc.engine_type)
                Select a.some_id 
            FROM app_table_dc.seds_thingy_mapping_seds_vdata e 
            LEFT JOIN app_table_dc.assets a ON e.eng_serial_number = a.serial_number AND a.asset_type_id = 2 
            LEFT JOIN (SELECT vdata_thingy_id , thingy_date InductDate FROM app_table_dc.seds_thingy_mapping_seds_vdata WHERE thingy_type = 'EI' ) ei 
            ON ei.vdata_thingy_id = e.vdata_thingy_id 
            JOIN app_table_dc.engine_type_asset_models am ON a.asset_model_id = am.asset_model_id 
    JOIN somealias egt 
ON am.engine_type_id = egt.engine_type_id 
0 голосов
/ 19 февраля 2019

- код правильный

- так как я вижу эту ошибку: (возможные имена столбцов: blahblahblah)

Можете ли вы проверить, присутствуют ли asset_model_id и engine_type_id в обеих таблицах((a, am), (am, egt)), к которому вы присоединяетесь.

Может быть, именование отличается, из-за которого выдается ошибка.

...