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

如何使用DuckDB查看Parquet文件中的用户自定义Schema

DuckDB无法读取Parquet文件的自定义Schema元数据

我已通过Python验证Parquet文件的自定义Schema元数据符合预期,但在DuckDB中无法获取这些自定义信息。执行以下两个查询均无法返回自定义Schema内容:

select * from parquet_schema('FileWithMetadata.parquet') 
select * from parquet_metadata('FileWithMetadata.parquet')

更新内容

写入自定义元数据的Python代码

以下代码将包含多场景流域日流量数据的Pandas DataFrame转换为带自定义Schema的Parquet文件:

import pyarrow as pa
import pyarrow.parquet as pq

# a为包含流域日流量模拟数据的Pandas DataFrame
table = pa.Table.from_pandas(a)
my_schema = pa.schema([
    pa.field("Flow", "float", True, metadata={"data":"日流量(单位:毫米/天)"}),
    pa.field("DayIndex", "int64", False, metadata={"data":"日期索引"}),
    pa.field("BasinIndex", "string", True, metadata={"data":"日流量(单位:毫米/天)"}),
    pa.field("Simulation", "int64", True, metadata={"data":"模拟编号"})
    ],
    metadata={"info":"长格式流域流量数据"})

t2 = table.cast(my_schema)
pq.write_table(t2, 'SHALongWithMetadata1.parquet')

读取Parquet元数据的Python代码

import pyarrow.parquet as pq
pfile = pq.read_table("C:\Projects\CSDP\PythonCSDP\Parquet\SHALongWithMetadata1.parquet")
print("列名: {}".format(pfile.column_names))
print("Schema: {}".format(pfile.schema))

Python读取输出结果

列名: ['Flow', 'DayIndex', 'BasinIndex', 'Simulation']
Schema: Flow: float
  -- 字段元数据 --
  data: '日流量(单位:毫米/天)'
DayIndex: int64 not null
  -- 字段元数据 --
  data: '日期索引'
BasinIndex: string
  -- 字段元数据 --
  data: '日流量(单位:毫米/天)'
Simulation: int64
  -- 字段元数据 --
  data: '模拟编号'
-- Schema元数据 --
info: '长格式流域流量数据'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:03:11