我有一个通过hue工作的插入查询,但当通过pyodc执行时收到错误:
[CLOUDERAODBC] (140) Unsupported Query.
查询本身存储在iql文件中,并读入python执行
INSERT INTO db_name_tbl_name
SELECT DISTINCT field_name, now()
FROM db_name.tbl_name
WHERE field_name not in (SELECT field_name from someothertable)
python:
with open('file/location.iql') as script:
statement = script.read()
print(statement)
crsr = conn.cursor()
crsr.execute(statement)
问题在于DISTINCT部分。
由于某些原因,驱动程序不支持在通过pyodbc插入后执行不同的查询。插入过程中引发的其他查询复杂性也是如此。您的查询将在hue中工作,但不支持通过cloudera odbc驱动程序。
作为一种变通方法,您可以使用CTE执行查询的任何复杂部分,然后执行插入,如下所示:
WITH result_set AS (
SELECT DISTINCT field_name
FROM db_name.tbl_name
WHERE field_name not in (SELECT field_name FROM someothertable)
INSERT INTO db_name.tbl_name
SELECT field_name, now() FROM result_set
;
我希望这对某人有所帮助!