簡體   English   中英

使用 Spark 讀取帶有分號的 spark 列 SQL

[英]Read spark column with semicolon using Spark SQL

我正在嘗試使用 Spark SQL 從 dataframe 中讀取包含;(分號)的列。該列的名稱是Profit & Gain Profit & Gain 雖然列名稱在我查詢模式時以相同方式顯示,但當我嘗試使用 select 子句查詢列時,我無法使用它。

spark.createDataFrame([[1,2],[2,3]], ["id", "Profit & Gain"]).createOrReplaceTempView("dex")

%sql select 
`Profit & Gain` from dex

錯誤是:

Error in SQL statement: ParseException: 
no viable alternative at input 'select \n`'(line 2, pos 0)

== SQL ==
select 
`Profit &amp
^^^

我知道 ';' 在列名中絕對是一種不好的做法,但我想知道是否有辦法解決這個問題。 我嘗試使用反引號將其括起來,但沒有用。

注意:這似乎使用 pyspark 工作得很好,但 spark sql 失敗了。 我注意到的另一件事是,除了;(分號)之外的任何字符都可以完美地工作。

使用backticks轉義所需的列工作正常 -

sql.createDataFrame([[1,2],[2,3]], ["id", "Profit & Gain"]).createOrReplaceTempView("dex")

sql.sql("""
    select 
        `Profit & Gain`
    from dex
    """
).show()

+-----------------+
|Profit & Gain|
+-----------------+
|                2|
|                3|
+-----------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM