You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用read_parquet读取Parquet文件时能否指定时区?

问题:读取Parquet文件时指定时区(R语言arrow包)

我尝试将包含EST时间戳列的Parquet文件读取到R中,使用arrow包的read_parquet函数时,它默认将时间戳视为UTC时区。请问是否可以在读取文件时指定时区?

示例代码如下:

library(arrow)
library(lubridate)

write_dataset(data.frame(timestep = seq(ymd_h("2023010112"), ymd_h("2023010212"), by = "hours")),
              "~/timeseriesexample",
              format="parquet")

d <- read_parquet("timeseriesexample/part-0.parquet")

tz(d[1,1])
# "UTC"

我可以使用force_tz函数在读取后修正时区,但更希望在读取时就直接设置正确的时区:

tz(force_tz(d[1,1], "America/New_York"))
# "America/New_York"

此次我使用的是AWS上的外部数据,例如:

s3://oedi-data-lake/nrel-pds-building-stock/end-use-load-profiles-for-us-building-stock/2022/resstock_amy2018_release_1/timeseries_individual_buildings/by_state/upgrade=0/state=AL/100066-0.parquet

解答

目前arrow包的read_parquet函数不支持在读取时直接指定时区。原因在于Parquet格式的时间戳类型本身默认不带时区元数据(仅少数自定义写入的数据集会存储时区信息),arrow读取这类数据时会默认解析为UTC时区的POSIXct对象。

针对外部数据集,推荐两种可行的处理方式:

1. 读取后批量修正时区

直接对时间戳列进行批量时区转换,操作简单直观:

library(arrow)
library(lubridate)

# 读取目标Parquet文件
d <- read_parquet("s3://oedi-data-lake/nrel-pds-building-stock/end-use-load-profiles-for-us-building-stock/2022/resstock_amy2018_release_1/timeseries_individual_buildings/by_state/upgrade=0/state=AL/100066-0.parquet")

# 为整列时间戳设置正确时区
d$timestep <- force_tz(d$timestep, tzone = "America/New_York")

# 验证时区
tz(d$timestep[1])
# 输出:"America/New_York"

2. 结合数据集API在加载流程中转换(适合大数据集)

如果处理的是大型数据集,可使用arrow的open_dataset配合mutate,在数据加载的流程中整合时区转换操作,效率更高:

library(arrow)
library(lubridate)

# 打开数据集并实时转换时区,最后加载到内存
ds <- open_dataset("s3://oedi-data-lake/nrel-pds-building-stock/end-use-load-profiles-for-us-building-stock/2022/resstock_amy2018_release_1/timeseries_individual_buildings/by_state/upgrade=0/state=AL/") %>%
  mutate(timestep = force_tz(timestep, "America/New_York")) %>%
  collect()

# 验证时区
tz(ds$timestep[1])
# 输出:"America/New_York"

补充说明:如果是自行生成Parquet文件,可在写入时通过write_parquet的timezone参数指定时区,这样读取时会自动保留时区信息;但对于无法控制写入过程的外部数据集,只能通过上述读取后转换的方式处理。

内容的提问来源于stack exchange,提问作者Margaret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:50:23