如何通过HANA系统或hdbcli设置获取未格式化查询结果?
解决HANA hdbcli返回格式化数值的问题
1. HANA系统层面说明
目前HANA没有全局系统级设置能强制所有客户端返回未格式化的Decimal类型值,数值的格式化逻辑大多是客户端侧处理,HANA服务器本身存储的是带原始精度的数值。
2. Python hdbcli全局配置方案
hdbcli默认会自动截断Decimal类型末尾无意义的零,可通过两种方式全局配置获取完整精度的数值:
- 连接参数配置:建立连接时添加
decimal_as_string=True参数,所有Decimal类型列会以字符串形式返回,完整保留定义的精度(比如Decimal(13,3)会返回"30.000")。示例代码:
from hdbcli import dbapi conn = dbapi.connect( address="your-hana-host", port=30015, user="your-username", password="your-password", decimal_as_string=True )
- 环境变量配置:设置环境变量
HDB_DECIMAL_AS_STRING=1,hdbcli会默认以字符串形式返回Decimal列,无需每次连接都指定参数。
3. 补充说明
HANA Studio的"Format Values"仅为客户端显示设置,不影响服务器返回的原始数据;Tableau能显示30.000是因为它会读取列的元数据(精度、小数位)并按定义格式化,而hdbcli默认做了截断处理。通过上述hdbcli配置,无需在SQL或Python中逐个转换列,就能全局获取未格式化的完整精度数值。
内容的提问来源于stack exchange,提问作者Truss120
相关产品推荐
相关产品推荐

