Apache Kylin 和 Sqoop - 有没有办法编辑 Sqoop 生成的 SQL 语句?

问题描述

我正在使用 Apache Kylin 并使用 Sqoop 连接到我的 Postgresql 数据库我有一个基于事实表创建的多维数据集,它两次引用同一个维度表。所以当我尝试构建多维数据集时出现了问题,我在工作的第一步中收到以下错误(#1 Step Name: Sqoop To Flat Hive Table):

ERROR manager.sqlManager: Error executing statement: org.postgresql.util.PsqlException: ERROR: table name "d_date" specified more than once

问题是 Sqoop 生成 sql 并两次引用表 d_date 并两次给它相同的别名,因此 sql 语句失败...我可以通过任何方式对其进行配置以解决此问题吗?

编辑:如果答案是否定的,那也有帮助,我真的需要知道我是否可以做些什么来解决这个问题...

这是生成sql(粗体是问题所在):

选择f_exam.course_id如F_EXAM_COURSE_ID,f_exam.academic_year_id如F_EXAM_ACADEMIC_YEAR_ID,f_exam.semester_id如F_EXAM_SEMESTER_ID,f_exam.exam_id如F_EXAM_EXAM_ID,f_exam.exam_app_user_created_id如F_EXAM_EXAM_APP_USER_CREATED_ID,f_exam.exam_available_from_date_id,f_exam.exam_available_from_time_id如F_EXAM_EXAM_AVAILABLE_FROM_TIME_ID,f_exam.exam_available_to_date_id如F_EXAM_EXAM_AVAILABLE_TO_DATE_ID, f_exam.exam_available_to_time_id如F_EXAM_EXAM_AVAILABLE_TO_TIME_ID,f_exam.exam_ordinal_id如F_EXAM_EXAM_ORDINAL_ID,d_​​time_day.time_day_id如D_AVAILABLE_FROM_TIME_TIME_DAY_ID,d_​​time_day.hour_minutes_seconds如D_AVAILABLE_FROM_TIME_HOUR_MINUTES_SECONDS,d_time_day.the_seconds如D_AVAILABLE_FROM_TIME_THE_SECONDS,d_time_day.the_minutes如D_AVAILABLE_FROM_TIME_THE_MINUTES,d_time_day.the_hours如D_AVAILABLE_FROM_TIME_THE_HOURS,d_time_day.period_of_day如D_AVAILABLE_FROM_TIME_PERIOD_OF_DAY,d_time_day。 time_day_id 为 D_AVAILABLE_TO_TIME_TIME_DAY_ID,d_time_day.ho ur_minutes_seconds如D_AVAILABLE_TO_TIME_HOUR_MINUTES_SECONDS,d_time_day.the_seconds如D_AVAILABLE_TO_TIME_THE_SECONDS,d_time_day.the_minutes如D_AVAILABLE_TO_TIME_THE_MINUTES,d_time_day.the_hours如D_AVAILABLE_TO_TIME_THE_HOURS,d_time_day.period_of_day如D_AVAILABLE_TO_TIME_PERIOD_OF_DAY,f_exam.number_of_questions如F_EXAM_NUMBER_OF_QUESTIONS,f_exam.duration_in_seconds如F_EXAM_DURATION_IN_SECONDS,f_exam.number_of_students_participated如F_EXAM_NUMBER_OF_STUDENTS_PARTICIPATED,f_exam.is_forward_only_01如F_EXAM_IS_FORWARD_ONLY_01,f_exam.max_score_possible为F_EXAM_MAX_score_POSSIBLE,f_exam.max_score为F_EXAM_MAX_score,f_exam.min_score为F_EXAM_MIN_score,f_exam.pass_percentage为F_EXAM_PASS_PERCENTAGE,f_exam.max_score_percentage为F_EXAM_MAX_score_PERCENTAGE,f_exam.min_score_percentage为F_EXAM_MIN_score_PERCENTAGE,f_exam.avg_score为F_EXAM_AVG_score,f_exam.median为F_EXAM_MEDIAN, f_exam.first_quartile 为 F_EXAM_FirsT_QUARTILE ,f_exam.third_quartile 为 F _EXAM_THIRD_QUARTILE,f_exam.interquartile_range如F_EXAM_INTERQUARTILE_RANGE,f_exam.minimum_without_outliers如F_EXAM_MINIMUM_WITHOUT_OUTLIERS,f_exam.maximum_without_outliers如F_EXAM_MAXIMUM_WITHOUT_OUTLIERS FROM public.f_exam f_exam INNER JOIN public.d_course d_course ON f_exam.course_id = d_course.course_id INNER JOIN public.d_academic_year d_academic_year ON f_exam.academic_year_id = d_academic_year .academic_year_id INNER JOIN public.d_semester d_semester ON f_exam.semester_id = d_semester.semester_id INNER JOIN public.d_exam d_exam ON f_exam.exam_id = d_exam.exam_id INNER JOIN JOIN JOIN.semester_id = d_semester.semester_id INNER JOIN public.d_exam d_exam_id = d_exam.exam_id INNER JOIN JOIN JOIN.appex_app_user_appexuser_appexuser_appexuser_app_user_appexuser_appexuser_app_user_appexuser .d_date d_date ON f_exam.exam_available_from_date_id = d_date.date_id INNER JOIN public.d_time_day d_time_day ON f_exam.exam_available_from_time_id = d_time_day.time_day_id INNER JOIN public.d_time_date ONNER JOIN public.d_time_day d_time_day内部JOIN public.d_time_day d_time_day ON f_exam.exam_available_to_time_id = d_time_day.time_day_id INNER JOIN public.d_ordinal d_ordinal ON f_exam.exam_ordinal_id = d_ordinal.ordinal_id WHERE 1 = 1 AND(f_exam.exam_available_from_date_id> = 20120101 AND f_exam.exam_available_from_date_id

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)