据我了解,镶木地板文件具有列的最小/最大统计量。 我的问题是如何在不读取整个文件的情况下使用python读取这些统计信息?
如果有帮助,我还有_common_metadata
和_metadata
文件。
我的特定问题是获取此文件系统中每个证券交易分区的最大日期(每个年度分区包含多个具有日期列的镶木地板文件):
C:.
│ _common_metadata
│ _metadata
├───source=NASDAQ
│ ├───year=2017
│ └───year=2018
├───source=London_Stock_Exchange
│ ├───year=2014
│ ├───year=2015
├───source=Japan_Exchange_Group
│ ├───year=2017
│ └───year=2018
└───source=Euronext
├───year=2017
└───year=2018
答案 0 :(得分:2)
您可以在pyarrow
中按行组提取它们:
import pyarrow.parquet as pq
pq_file = pq.ParquetFile(…)
# Get metadata for the i-th RowGroup
rg_meta = pq_file.metadata.row_group(i)
# Get the "max" statistic for the k-th column
max_of_col = rq_meta.column(col).statistics.max
答案 1 :(得分:1)
经过一些额外的搜索后,我在fastparquet
模块中找到了这个sorted_partitioned_columns
。
它给出了每个文件的最大值和最小值!
示例:
>>> import fastparquet
>>> fastparquet.api.sorted_partitioned_columns(pf)
{'id': {'min': [1, 5, 10], 'max': [4, 9, 20]}}