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

如何在Snowpark中正确提取VARIANT列值到字典变量

提取Snowpark DataFrame中VARIANT列值为字典

单行数据场景

如果你的REGIONS表仅包含一行数据,直接从行对象中提取VARIANT列的值即可——Snowpark会自动将VARIANT类型反序列化为Python字典:

from snowflake.snowpark import functions as F

# 已构建的目标DataFrame
regions = session.table("REGIONS").select("features")

# 获取第一行数据并提取列值
region_row = regions.first()
regions_dict = region_row["FEATURES"]

也可以通过collect()取第一行数据:

regions_dict = regions.collect()[0]["FEATURES"]

多行数据场景

如果表中有多行数据,可通过列表推导式将每行的features转为字典并组成列表:

regions_dict_list = [row["FEATURES"] for row in regions.collect()]

错误原因说明

你之前用json.loads(regions.select(F.col("features")))报错,是因为json.loads()需要接收字符串/字节类型参数,但你传入的是整个DataFrame对象。而Snowpark的VARIANT类型从行对象提取后,会自动转换为对应的Python数据结构(字典或列表),无需额外调用json.loads()。

另外to_dict()会返回以列名为键的嵌套结构(如{"FEATURES": {...}}),不符合直接获取列值的需求,直接提取行中的列值才是正确方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:32:03