【问题标题】:hive:select all column exclude two蜂巢:选择所有列排除两个
【发布时间】:2020-06-28 14:45:16
【问题描述】:

如何在 hive 中选择所有列排除列 'date' 和 'cst_id'?

【问题讨论】:

    标签: sql hive


    【解决方案1】:

    试试下面 -

    对于单个会话 - set hive.support.quoted.identifiers=none;

    select `(date|cst_id)?+.+` from myTable.
    

    请参阅quotedIdentifiers 以获取有关使用正则表达式进行配置单元选择的更多信息

    【讨论】:

    • 对于 Spark SQL:set spark.sql.parser.quotedRegexColumnNames=true;
    【解决方案2】:

    hive 手册页上接受的答案和示例正则表达式存在缺陷。如果要排除 dayday_hour 两列,(day|day_hour)?+.+ 仍将匹配 day_hour 列。那是因为正则表达式引擎渴望|。虽然将顺序更改为(day_hour|day)?+.+ 可以解决这个问题,但更好的方法是使用负前瞻,(?!(day|day_hour)$).+

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多