【发布时间】:2020-06-28 14:45:16
【问题描述】:
如何在 hive 中选择所有列排除列 'date' 和 'cst_id'?
【问题讨论】:
如何在 hive 中选择所有列排除列 'date' 和 'cst_id'?
【问题讨论】:
试试下面 -
对于单个会话 - set hive.support.quoted.identifiers=none;
select `(date|cst_id)?+.+` from myTable.
请参阅quotedIdentifiers 以获取有关使用正则表达式进行配置单元选择的更多信息
【讨论】:
set spark.sql.parser.quotedRegexColumnNames=true;
hive 手册页上接受的答案和示例正则表达式存在缺陷。如果要排除 day 和 day_hour 两列,(day|day_hour)?+.+ 仍将匹配 day_hour 列。那是因为正则表达式引擎渴望|。虽然将顺序更改为(day_hour|day)?+.+ 可以解决这个问题,但更好的方法是使用负前瞻,(?!(day|day_hour)$).+。
【讨论】: