首页 > 解决方案 > 如何检索镶木地板文件中 TIMESTAMP 列的 idAdjustedUTC 标志值?

问题描述

我有一个包含许多类型列的镶木地板文件converted_type (legacy): TIMESTAMP_MICROS。我想检查标志isAjustedToUTC是否为真。我可以这样得到:

import pyarrow.parquet as pq
import re   
 
arrow = pq.ParquetFile("/Parquet/File/Path/filename.parquet")
timestamp_string = str(arrow.metadata.row_group(0).column(79).statistics.logical_type)
re.search("isAdjustedToUTC=(.*), timeUnit",timestamp_string).group(1)

这给了我true或者false作为字符串。是否有另一种方法可以在isAdjustedToUTC不使用正则表达式的情况下检索值?

标签: pythontimestampmetadataparquetpyarrow

解决方案


据我所知,这是不可能的。logical_typepyarrow._parquet.ParquetLogicalType不直接暴露其基础成员的类型。

唯一可用的字段是:

dir(logical_type)
>> ['__class__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__ne__',
 '__new__',
 '__pyx_vtable__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__setstate__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'to_json',
 'type']

您可以使用该to_json功能,但它与您建议的选项一样脏:

import json
json.loads(logical_type.to_json())['isAdjustedToUTC']
>> true

推荐阅读