读取包含最近21天的文件名

2024-09-30 20:18:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Microsoft Azure Storage Explorer中有一个拼花地板文件名

文件名如下所示:

dataset_2019_11_19-19.parquet
dataset_2020_01_19-20.parquet
dataset_2020_01_20-20.parquet
dataset_2020_01_21-20.parquet
dataset_2020_01_22-20.parquet

如果我想读取2020年的所有数据,我会这样做,我使用通配符获取2020年后的任何数据:

datapath_v3_indata_imptp = "wasbs://mydata@mine.blob.core.windows.net/first_folder/dataset_2020*"
df_indata_v3_imptp=spark.read.format("parquet").option("header", "true").load(datapath_v3_indata_imptp)

如何仅获取最后21天的数据


Tags: 数据文件名storagev3azuredatasetmicrosoft拼花
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:43

使用input_file_name()函数从文件名中提取日期,然后split+regexp_extract(仅获取日期),最后to_date以^{格式创建日期

  • 要筛选,请使用date_sub(current_date(),21)函数获取21天前的日期

Example:

from pyspark.sql.functions import *
#reading directory 
spark.read.parquet("wasbs://mydata@mine.blob.core.windows.net/first_folder/").\
withColumn("date",\
    to_date(\
        regexp_extract(\
            split(input_file_name(),"-")[0]\
            ,"_(.*)",1),\
        "yyyy_MM_dd")).\
filter(col("date") > date_sub(current_date(),21)).\
show(10,False)

相关问题 更多 >