如何在 Python Teradata 模块 PyTD 中使用易失性表

How to use Volatile Tables in Python Teradata module PyTD

有谁知道如何在 PyTd Teradata ODBC 模块中使用可变表?我可以 运行 单个查询并将结果获取到 return,但是如果我尝试使用可变表构建查询,我会不断收到错误。有什么帮助吗?我是 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.')`

好的,感谢 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)