如何使用wr.s3.read_parquet对parquet文件的分区列应用唯一的过滤器?



我有一个parquet数据集存储在s3中,我想读取它以对分区字段应用过滤器,特别是唯一的。我尝试如下,但是唯一的函数不能应用

这是我的尝试:

query_fecha_dato = "{0}fecha_dato={1}/".format(param.delivery["output_path"], fecha_dato_formato)
print(query_fecha_dato)
df_fecha_datos = wr.s3.read_parquet(path=query_fecha_dato,dataset=True,filters=[('fecha_dato','unique',fecha_dato)])
print(df_fecha_datos.head(5))

它应该只显示分区列"fecha_dato",但是它显示以下内容:

nro_de_pedido nro_de_negocio  ... nrootchex ingest_date
0    2006968078      635922336  ...        -1  2022-08-06
1    2006968079      635912195  ...        -1  2022-08-06
2    2006968080      635921361  ...        -1  2022-08-06
3    2006968081      635922792  ...        -1  2022-08-06
4    2006968082      635922368  ...        -1  2022-08-06

我只想获得分区列"fecha_dato"没有重复的

大家好,欢迎来到stackoverflow。:)

有一个最小的,可重复的例子来测试代码真的很有帮助,所以我可以测试我的答案是否真的有效。

我是awswranger的新手,但根据文档,我找不到filters作为选项。

看起来只选择fecha_dato,您需要指定columns=['fecha_dato']。此外,我在awswangler中没有看到一个独特的选项,但是您可以在

之后使用pandasdrop_duplicates
df_fecha_datos = wr.s3.read_parquet(path=query_fecha_dato,dataset=True,colums=['fecha_dato']).drop_duplicates()

应该可以工作-至少只要您不从s3返回多个数据帧。

这将下载fecha_dato中的所有值,并且只在本地删除重复的值,但是我不知道如何在不在AWS中部署一些计算资源的情况下节省此带宽。

相关内容

  • 没有找到相关文章

最新更新