我将镶木地板文件存储在 s3 位置,这些文件按日期键分区。使用 Polars,我需要从最新的日期密钥文件夹中读取镶木地板文件。这是我的 s3 结构的示例:
Amazon S3>存储桶>存储桶名称>dev/>target/>refined/>STUDENTS.parquet/
在 STUDENTS.parquet 下,有几个按 DATE_KEY 分区的文件夹,即
每个文件夹都包含镶木地板文件。
使用 Polars,我需要将最新日期密钥文件夹(本例中为 DATE_KEY=2024-03-06/)中的镶木地板文件读取到 Polars 数据框中。
您认为对名称文件夹进行降序排序是实现此目的的一种方法吗?
有人可以帮我解决他的问题吗,因为我需要的是 Polars 数据框而不是 Pandas。
我看到有两种方法可以实现这一目标。
pl.LazyFrame
并动态过滤。import boto3
import polars as pl
profile = "your-profile"
s3_path = "s3://path/to/your/dataset/*/*.parquet"
session = boto3.session.Session(profile_name=profile)
credentials = session.get_credentials().get_frozen_credentials()
df = (
pl.scan_parquet(
s3_path,
storage_options={
"aws_access_key_id": credentials.access_key,
"aws_secret_access_key": credentials.secret_key,
"aws_session_token": credentials.token,
"aws_region": session.region_name,
},
)
.filter(
# filter for latest DATE_KEY
pl.col("DATE_KEY") == pl.col("DATE_KEY").max()
)
.collect()
)