如何将具有特殊字符的列名别名为具有下划线而不是特殊字符的新列名?

Posted

技术标签:

【中文标题】如何将具有特殊字符的列名别名为具有下划线而不是特殊字符的新列名?【英文标题】:How to alias a column name with special character to new column name with underscore instead of speacial character? 【发布时间】:2020-06-13 17:01:07 【问题描述】:

我有一个列名为“产品/价格”的表,我想在 sparksql 中创建现有表的副本时将其重命名为 product_price。

create table newtable as select product/price as product_price from 现有表

这给了我错误“分析异常错误:无法解析‘产品’

我也尝试过如下操作:

create table newtable as select 'product/price' as product_price 从现有表中

这确实会更改列名,但其中的所有值也会更改为 product_price。

【问题讨论】:

【参考方案1】:
  // select `product/price` as product_price .... to your column ?
  //

  val d1 = Seq("test", "Test1", "test2").toDF("product/price")
  d1.show(false)
  //      +-------------+
  //      |product/price|
  //      +-------------+
  //      |test         |
  //      |Test1        |
  //      |test2        |
  //      +-------------+

  val d2 = d1.withColumnRenamed("product/price", "product_price")
  d2.show(false)
  //      +-------------+
  //      |product_price|
  //      +-------------+
  //      |test         |
  //      |Test1        |
  //      |test2        |
  //      +-------------+

【讨论】:

以上是关于如何将具有特殊字符的列名别名为具有下划线而不是特殊字符的新列名?的主要内容,如果未能解决你的问题,请参考以下文章

列名中的特殊字符

当列名包含特殊字符时,如何将 Convert 函数与 RowFilter/CustomFilter 一起使用?

如何使用 phpMyAdmin 中的 SQL 查询设置具有许多特殊字符的列值?

使用列名中带有特殊字符的 aes_ 或 aes_string 使用 ggplot 进行编程

如何解析iOS中具有特殊字符的xml数据?

如何在 Pyspark 的动态列列表中转义列名