周一在 Spark 中开始一周
Start of the week on Monday in Spark
这是我的数据集:
from pyspark.sql import SparkSession, functions as F
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([('2021-02-07',),('2021-02-08',)], ['date']) \
.select(
F.col('date').cast('date'),
F.date_format('date', 'EEEE').alias('weekday'),
F.dayofweek('date').alias('weekday_number')
)
df.show()
#+----------+-------+--------------+
#| date|weekday|weekday_number|
#+----------+-------+--------------+
#|2021-02-07| Sunday| 1|
#|2021-02-08| Monday| 2|
#+----------+-------+--------------+
dayofweek
returns 从周日开始的工作日数字。
如何 return 星期几从星期一而不是星期日开始?即
+----------+-------+--------------+
| date|weekday|weekday_number|
+----------+-------+--------------+
|2021-02-07| Sunday| 7|
|2021-02-08| Monday| 1|
+----------+-------+--------------+
你可以试试这个:
date_format(col("date"), "u")).alias('weekday_number')
由于某种原因,它不在 Spark's documentation of datetime patterns for formatting
您可能还需要添加此配置行:
spark.conf.set('spark.sql.legacy.timeParserPolicy', 'LEGACY')
感谢您的反馈,很乐意提供帮助 =)
显然,有一个 weekday
函数可以做到这一点。可以使用 expr
.
访问
from pyspark.sql import SparkSession, functions as F
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([('2021-02-07',),('2021-02-08',)], ['date']) \
.select(
F.col('date').cast('date'),
F.date_format('date', 'EEEE').alias('weekday'),
F.expr('weekday(date) + 1').alias('weekday_number'),
)
df.show()
#+----------+-------+--------------+
#| date|weekday|weekday_number|
#+----------+-------+--------------+
#|2021-02-07| Sunday| 7|
#|2021-02-08| Monday| 1|
#+----------+-------+--------------+
这是我的数据集:
from pyspark.sql import SparkSession, functions as F
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([('2021-02-07',),('2021-02-08',)], ['date']) \
.select(
F.col('date').cast('date'),
F.date_format('date', 'EEEE').alias('weekday'),
F.dayofweek('date').alias('weekday_number')
)
df.show()
#+----------+-------+--------------+
#| date|weekday|weekday_number|
#+----------+-------+--------------+
#|2021-02-07| Sunday| 1|
#|2021-02-08| Monday| 2|
#+----------+-------+--------------+
dayofweek
returns 从周日开始的工作日数字。
如何 return 星期几从星期一而不是星期日开始?即
+----------+-------+--------------+
| date|weekday|weekday_number|
+----------+-------+--------------+
|2021-02-07| Sunday| 7|
|2021-02-08| Monday| 1|
+----------+-------+--------------+
你可以试试这个:
date_format(col("date"), "u")).alias('weekday_number')
由于某种原因,它不在 Spark's documentation of datetime patterns for formatting
您可能还需要添加此配置行:
spark.conf.set('spark.sql.legacy.timeParserPolicy', 'LEGACY')
感谢您的反馈,很乐意提供帮助 =)
显然,有一个 weekday
函数可以做到这一点。可以使用 expr
.
from pyspark.sql import SparkSession, functions as F
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([('2021-02-07',),('2021-02-08',)], ['date']) \
.select(
F.col('date').cast('date'),
F.date_format('date', 'EEEE').alias('weekday'),
F.expr('weekday(date) + 1').alias('weekday_number'),
)
df.show()
#+----------+-------+--------------+
#| date|weekday|weekday_number|
#+----------+-------+--------------+
#|2021-02-07| Sunday| 7|
#|2021-02-08| Monday| 1|
#+----------+-------+--------------+