Apache spark 如何在ApacheSpark中使用sql提取工作日的特定时间间隔?
我在sql表databricks中加载了csv文件,该表使用apachespark。我需要提取包含以下内容的sql表列:Apache spark 如何在ApacheSpark中使用sql提取工作日的特定时间间隔?,apache-spark,datetime,pyspark,apache-spark-sql,datetime-format,Apache Spark,Datetime,Pyspark,Apache Spark Sql,Datetime Format,我在sql表databricks中加载了csv文件,该表使用apachespark。我需要提取包含以下内容的sql表列: 01.01.2018,15:25 01.01.2018,00:10 01.01.2018,13:20 ... ... 对于仅代表上午8:30至9:30之间的工作日和时间的数据,我应该怎么做?我应该先在两列上提取列吗?我发现了如何使用输入到databricks中的数据进行某些操作,但这些数据是sql表的一部分 另外,经典sql中的一些命令在apache spark上不起作用,
01.01.2018,15:25
01.01.2018,00:10
01.01.2018,13:20
...
...
对于仅代表上午8:30至9:30之间的工作日和时间的数据,我应该怎么做?我应该先在两列上提取列吗?我发现了如何使用输入到databricks中的数据进行某些操作,但这些数据是sql表的一部分
另外,经典sql中的一些命令在apache spark上不起作用,这意味着databricks
这是用于读取数据的查询:
# File location and type
file_location = "/FileStore/tables/NEZ_OPENDATA_2018_20190125-1.csv"
file_type = "csv"
# CSV options
infer_schema = "false"
first_row_is_header = "false"
delimiter = ","
# The applied options are for CSV files. For other file types, these will be ignored.
df = spark.read.format(file_type) \
.option("inferSchema", infer_schema) \
.option("header", first_row_is_header) \
.option("sep", delimiter) \
.load(file_location)
display(df)
# Create a view or table
temp_table_name = "NEZ_OPENDATA_2018_20190125"
df.createOrReplaceTempView(temp_table_name)
%sql
/* Query the created temp table in a SQL cell */
select * from `NEZ_OPENDATA_2018_20190125`
permanent_table_name = "NEZ_OPENDATA_2018_20190125"
df.write.format("parquet").saveAsTable(permanent_table_name)
作为文本文件读取可能更合适,因为时间戳由日期和时间组成。然后,您可以使用相关的Pyspark函数过滤星期几和时间。请注意,星期天为1表示星期天,2表示星期一。。。等等
import pyspark.sql.functions as F
file_location = "/FileStore/tables/NEZ_OPENDATA_2018_20190125-1.csv"
df = spark.read.text(file_location).toDF('timestamp')
result = df.select(
F.to_timestamp('timestamp', 'dd.MM.yyyy,HH:mm').alias('timestamp')
).filter(
F.dayofweek('timestamp').isin([2,3,4,5,6]) & (
( (F.hour('timestamp') == 8) & (F.minute('timestamp').between(30,59)) ) |
( (F.hour('timestamp') == 9) & (F.minute('timestamp').between(0,30)) )
)
)
如果要显示输出,可以执行
result.show()
或display(result)
定义工作日?工作日是星期一、星期二。。。星期五假期怎么样?如果圣诞节是星期五,那是工作日吗?是的,在这种情况下,它不应该是工作日,但我甚至不知道如何在周末做这个基本的事情,所以请给出你能做什么你能显示加载csv文件的sql查询吗?