Можно ли использовать dask dataframe с модулем teradata python? - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть этот код:

import teradata
import dask.dataframe as dd

login = login
pwd = password

udaExec = teradata.UdaExec (appName="CAF", version="1.0",
                                    logConsole=False)

session = udaExec.connect(method="odbc", DSN="Teradata",
                                  USEREGIONALSETTINGS='N', username=login,
                                  password=pwd, authentication="LDAP");

И соединение работает.

Я хочу получить dask dataframe. Я пробовал это:

sqlStmt = "SOME SQL STATEMENT"

df = dd.read_sql_table(sqlStmt, session, index_col='id')

И я получаю это сообщение об ошибке:

AttributeError: 'UdaExecConnection' object has no attribute '_instantiate_plugins'

У кого-нибудь есть предложение?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 апреля 2019

read_sql_table ожидает строку соединения SQLalchemy, а не "сеанс" во время передачи. Я не слышал о том, чтобы teradata использовалась через sqlalchemy, но, по-видимому, можно установить как минимум один разъем и, возможно, другие решения, использующие общий драйвер ODBC.

Однако вы можете использовать более прямой подход, используя delayed, что-то вроде

from dask import delayed

# make a set of statements for each partition
statements = [sqlStmt + " where id > {} and id <= {}".format(bounds)
              for bounds in boundslist]  # I don't know syntax for tera

def get_part(statement):
    # however you make a concrete dataframe from a SQL statement
    udaExec = ..
    session = ..
    df = ..
    return dataframe

# ideally you should provide the meta and divisions info here
df = dd.from_delayed([delayed(get_part)(stm) for stm in statements],
                     meta= , divisions=)

Нам будет интересно узнать о вашем успехе.

...