问题描述
我收到此错误:
DataSetError: Failed while loading data from data set sqlQueryDataSet(load_args={},sql=select * from table)
当我运行时(在 kedro jupyter notebook 中):
%reload_kedro
c:\users\name.virtualenvs\pipenv_kedro\lib\site-packages\ipykernel\ipkernel.py:283:DeprecationWarning: should_run_async
将来不会自动调用 transform_cell
。请将结果传递给 transformed_cell
参数以及在 IPython 7.17 及更高版本中 preprocessing_exc_tuple
的转换期间发生的任何异常。
和 should_run_async(code)
2021-04-21 15:29:12,278 - kedro.framework.session.store - INFO - read()
未针对 BaseSessionStore
实现。假设空商店。
2021-04-21 15:29:12,696 - 根 - 信息 - ** Kedro 项目项目
2021-04-21 15:29:12,698 - root - INFO - 定义的全局变量 context
、session
和 catalog
2021-04-21 15:29:12,703 - 根 - 信息 - 注册线魔法 run_viz
那么:
catalog.list()
#['table','parameters']
catalog.load('table')
我的 catalog.yml 文件包含的位置:
table:
type: pandas.sqlQueryDataSet
credentials: secret
sql: select * from table
layer: raw
但是,当我运行它时(在同一个 kedro jupyter notebook 中),我能够收回预期的结果:
from kedro.extras.datasets.pandas import sqlQueryDataSet
sql = "select * from table"
credentials = {
"con": secret
}
data_set = sqlQueryDataSet(sql=sql,credentials=credentials)
sql_data = data_set.load()
解决方法
我认为差异来自凭据。在你的目录中你有
table:
type: pandas.SQLQueryDataSet
credentials: secret
但是在你测试的笔记本中
credentials = {
"con": secret
}
yaml 文件中映射的值应与 credentials.yml
中的条目名称匹配,例如
# in catalog.yml
table:
type: pandas.SQLQueryDataSet
credentials: db_creds
# in credentials.yml
db_creds:
con: secret