有没有人知道如何在PyTd Teradata ODBC模块中使用volatile表?我可以运行单个查询并返回结果,但如果我尝试使用volatile表构建查询,我会一直收到错误。有帮助吗?我对python很新。
我正在使用
udaExec = td.UdaExec (appName="dpull", version="1.0",logConsole=False)
with udaExec.connect(method="ODBC",dsn="tdata", username="un",
password="pw") as session:
query = """"
create volatile table vol_table
,no fallback, no before journal, no after journal as
(
select a, b, c
from my_table1
)
with data primary index (a)
on commit preserve rows
Select vt.a, vt.b, vt.c, t2.a
from vol_table vt
inner join table2 t2
on vt.anything = t2.anything
""""
df = pd.read_sql(query,session)
错误:
`InterfaceError: ('SQL_INVALID_HANDLE', 'Invalid handle passed to SQLGetDiagRecW.')`
答案 0 :(得分:2)
好的,感谢Teradata forum的一些帮助,我能够解决这个问题。您可以按照相同的结构添加任意数量的查询:
import teradata as td
import pandas as pd
from teradata import tdodbc
udaExec = td.UdaExec (appName="dpull", version="1.0",logConsole=False)
with udaExec.connect(method="ODBC",dsn="tdata", username="un",
password="pw") as session:
query1 = """
create volatile table vol_table
,no fallback, no before journal, no after journal as
(
select a, b, c
from my_table1
)
with data primary index (a)
on commit preserve rows;
"""
query2 = """
Select vt.a, vt.b, vt.c, t2.x
from vol_table vt
inner join table2 t2
on vt.a = t2.a
"""
session.execute(query1)
df = pd.read_sql(query2,session)