Apache spark 如何在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上不起作用,

我在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上不起作用,这意味着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查询吗?