在不读取文件的情况下使用镶木地板文件统计信息
using parquet files statistics without reading the files
据我了解,parquet 文件具有 min/max 列统计信息。
我的问题是如何在不读取整个文件的情况下使用 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
经过一些额外的搜索,我在 fastparquet
模块中找到了这个 sorted_partitioned_columns
。
它给出了每个文件的最小值和最大值!
示例:
>>> import fastparquet
>>> fastparquet.api.sorted_partitioned_columns(pf)
{'id': {'min': [1, 5, 10], 'max': [4, 9, 20]}}
您可以在 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
据我了解,parquet 文件具有 min/max 列统计信息。 我的问题是如何在不读取整个文件的情况下使用 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
经过一些额外的搜索,我在 fastparquet
模块中找到了这个 sorted_partitioned_columns
。
它给出了每个文件的最小值和最大值!
示例:
>>> import fastparquet
>>> fastparquet.api.sorted_partitioned_columns(pf)
{'id': {'min': [1, 5, 10], 'max': [4, 9, 20]}}
您可以在 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