【问题标题】:Failed while loading data from data set SQLQueryDataSet从数据集 SQLQueryDataSet 加载数据时失败
【发布时间】:2021-04-21 19:42:49
【问题描述】:

我收到此错误:

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 - 信息 - read() 未针对 BaseSessionStore 实施。假设空店。 2021-04-21 15:29:12,696 - 根 - 信息 - ** Kedro 项目项目 2021-04-21 15:29:12,698 - 根 - 信息 - 定义的全局变量 contextsessioncatalog 2021-04-21 15:29:12,703 - root - INFO - Registered line magic 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 笔记本中),我能够拉回预期的结果:

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()

我该如何解决这个错误?

【问题讨论】:

  • 我能够让它工作:catalog.load('table')。从 repo 中删除 notebook 并重新开始之后。
  • 我认为问题出在笔记本上。由于某种原因,旧笔记本将无法成功运行 catalog.load()。我必须创建一个新笔记本才能运行它。

标签: kedro


【解决方案1】:

我认为差异来自凭据。在您的目录中,您有

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

【讨论】:

  • 你是对的。我在提出这个问题时确实有一个错字。我确实在目录中有 db_creds。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-20
  • 2018-07-02
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多