读取包含最近 21 天的文件名
Read file names that contain last 21 days
我在 Microsoft Azure 存储资源管理器中有一个 parquet 文件名。
文件名如下所示:
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 天的数据?
使用 input_file_name()
函数从 file_name 中提取日期,然后 split
+ regexp_extract
(仅获取日期),最后 to_date
以 yyyy-MM-dd
.[=18 格式创建日期=]
- 要过滤,请使用
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)
我在 Microsoft Azure 存储资源管理器中有一个 parquet 文件名。
文件名如下所示:
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 天的数据?
使用 input_file_name()
函数从 file_name 中提取日期,然后 split
+ regexp_extract
(仅获取日期),最后 to_date
以 yyyy-MM-dd
.[=18 格式创建日期=]
- 要过滤,请使用
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)