#sql #pyspark
Вопрос:
Я смотрю на этот SQL-запрос:
SELECT
tbl.id as id,
tbl. as my_name,
tbl.account as new_account_id,
CONVERT_TIMEZONE('UTC', 'America/Los_Angeles', tbl.entry_time)::DATE AS my_time
FROM tbl
Мне интересно, как бы я преобразовал это в фрейм данных Pyspark?
Допустим, я загрузил tbl
файл CSV в Pyspark, например:
tbl_dataframe = spark...load('/files/tbl.csv')
Теперь я хочу использовать SELECT
в этом фрейме данных что-то вроде:
final_dataframe = tbl_dataframe.select('id', 'name', ...)
Проблема здесь в том,:
- Как мне переименовать это » имя » в «мое имя» с помощью этого выбора?
- Возможно ли вообще применить эту
CONVERT_TIMEZONE
функцию с помощью select в фрейме данных? Каков наилучший/стандартный подход для этого?
Ответ №1:
- Как мне переименовать это » имя » в «мое имя» с помощью этого выбора?
Предполагая, что ваш фрейм данных выглядит следующим образом
# --- ----
# | id|name|
# --- ----
# | 1| foo|
# | 2| bar|
# --- ----
Существует несколько различных способов сделать это «переименование».:
df.select(F.col('name').alias('my_name')) # you select specific column and give it an alias
# -------
# |my_name|
# -------
# | foo|
# | bar|
# -------
# or
df.withColumn('my_name', F.col('name')) # you create new column with value from old column
# --- ---- -------
# | id|name|my_name|
# --- ---- -------
# | 1| foo| foo|
# | 2| bar| bar|
# --- ---- -------
# or
df.withColumnRenamed('name', 'my_name') # you rename column
# --- -------
# | id|my_name|
# --- -------
# | 1| foo|
# | 2| bar|
# --- -------
- Возможно ли вообще применить эту
CONVERT_TIMEZONE
функцию с помощью select в фрейме данных? Каков наилучший/стандартный подход для этого?
CONVERT_TIMEZONE
это не стандартная функция Spark, но если это функция улья, которая уже где-то зарегистрирована, вы можете попробовать это F.expr('convert_timezone()')