我试图解析WKT并使用Snowpark Python API创建GEOMETRY类型,但失败:
session.sql("select to_geometry('POINT(1820.12 890.56)')").show()
类型错误:'>'在"NoneType"one_answers"int"的实例之间不支持
我测试了0.9.0和0.8.0版本,结果相同
上面的SQL在Snowflake的工作表中运行良好
看起来Snowpark Python在显示时无法处理几何体对象的输出。这是type_utils.py:中的失败代码
if column_type_name == "DECIMAL" or (
(column_type_name == "FIXED" or column_type_name == "NUMBER") and scale != 0
):
if precision != 0 or scale != 0:
if precision > DecimalType._MAX_PRECISION:
return DecimalType(
DecimalType._MAX_PRECISION,
scale + precision - DecimalType._MAX_SCALE,
)
else:
return DecimalType(precision, scale)
else:
return DecimalType(38, 18)
当无法确定精度时,代码将失败。因此,添加检查可以缓解问题:
if column_type_name == "DECIMAL" or (
(column_type_name == "FIXED" or column_type_name == "NUMBER") and scale != 0
):
if precision is None:
return DecimalType(precision, scale)
if precision != 0 or scale != 0:
if precision > DecimalType._MAX_PRECISION:
return DecimalType(
DecimalType._MAX_PRECISION,
scale + precision - DecimalType._MAX_SCALE,
)
else:
return DecimalType(precision, scale)
else:
return DecimalType(38, 18)
请向Snowflake提交支持票证,以便修复代码。
Snowpark v.1.5.1 中添加了对几何的支持