在Impala中使用Having子句出现引用错误,求解决方案
解决Impala+pyodbc查询时expr_1引用错误的方法
给聚合列添加别名
修改SQL语句,给聚合函数结果起明确别名,HAVING子句直接引用别名,避免Impala把未命名的聚合列标记为expr_1导致解析冲突:SELECT col, SUM(col2) AS sum_col2 FROM table WHERE conds GROUP BY col HAVING sum_col2 > 0替换为Impala专用驱动impyla
pyodbc并非Impala原生适配的驱动,改用Cloudera官方推荐的impyla库,能更好兼容Impala的语法解析:from impala.dbapi import connect import pandas as pd sql = """ SELECT col, SUM(col2) FROM table WHERE conds GROUP BY col HAVING SUM(col2) > 0 """ with connect(host='你的Impala主机地址', port=21050, database=schema) as conn: df = pd.read_sql(sql, conn)注意:需要先通过
pip install impyla安装该库。启用pyodbc的ANSI模式
在建立连接时添加ansi=True参数,强制驱动按ANSI SQL标准解析语句,减少语法解析差异:with pyodbc.connect(dsn=DSN, driver=CONN_DRIVER, schema=schema, autocommit=True, ansi=True) as conn: df = pd.read_sql(sql, conn)
内容的提问来源于stack exchange,提问作者ScionK
相关产品推荐
相关产品推荐

