kedro.io.DataCatalog

class kedro.io.DataCatalog(datasets=None, feed_dict=None, dataset_patterns=None, load_versions=None, save_version=None, default_pattern=None, config_resolver=None)[source]

DataCatalog 存储了 AbstractDataset 实现的实例, 为程序中的任何位置提供 loadsave 功能。要使用 DataCatalog, 您需要用数据集字典来实例化它。然后它将作为调用的单一参考点, 将加载和保存功能中继到底层数据集。

属性

config_resolver

rtype:

CatalogConfigResolver

方法

add(dataset_name, dataset[, replace])

DataCatalog添加一个新的AbstractDataset对象。

add_all(datasets[, replace])

DataCatalog添加一组新的数据集。

add_feed_dict(feed_dict[, replace])

使用通过feed_dict提供的数据将数据集添加到DataCatalog中。

confirm(name)

通过名称确认数据集。

exists(name)

通过调用其exists()方法来检查注册的数据集是否存在。

from_config(catalog[, credentials, ...])

从配置创建DataCatalog实例。

list([regex_search])

目录中注册的所有数据集名称列表。

load(name[, version])

加载一个已注册的数据集。

release(name)

释放与数据集关联的所有缓存数据

save(name, data)

将数据保存到已注册的数据集。

shallow_copy([extra_dataset_patterns])

返回当前对象的浅拷贝。

__init__(datasets=None, feed_dict=None, dataset_patterns=None, load_versions=None, save_version=None, default_pattern=None, config_resolver=None)[source]

DataCatalog 存储着 AbstractDataset 的实现实例,为程序中的任何位置提供 loadsave 功能。要使用 DataCatalog,您需要用数据集字典来实例化它。然后它将作为您调用的单一参考点,将加载和保存功能中继到底层数据集。

Parameters:
  • datasets (dict[str, AbstractDataset] | None) - 一个包含数据集名称和数据集实例的字典。

  • feed_dict (dict[str, Any] | None) - 一个包含要添加到内存中的数据的feed字典。

  • dataset_patterns (Patterns | None) – 一个包含数据集工厂模式和对应数据集配置的字典。当从目录配置中获取时,这些模式将按以下顺序排序: 1. 递减的特异性(大括号外的字符数) 2. 递减的占位符数量(大括号对的数量) 3. 字母顺序 特异性为0的模式是全能匹配模式,如果在字母顺序中排在"default"之前,它将覆盖通过运行器提供的默认模式。这种覆盖模式会发出警告。“{default}”名称不会发出警告。

  • load_versions (dict[str, str] | None) – 数据集名称与要加载版本之间的映射关系。对未启用版本控制的数据集无效。

  • save_version (str | None) – 用于所有启用版本控制的数据集执行save操作的版本字符串。必须满足以下条件:a) 符合操作系统文件名限制且不区分大小写的字符串;b) 按字典序排序时始终返回最新版本。

  • default_pattern (Patterns | None) – 一个字典,包含覆盖通过runners提供的默认模式的默认通配模式。

  • config_resolver (CatalogConfigResolver | None) – 一个用于解析数据集模式和配置的CatalogConfigResolver实例。

示例:

from kedro_datasets.pandas import CSVDataset

cars = CSVDataset(filepath="cars.csv",
                  load_args=None,
                  save_args={"index": False})
catalog = DataCatalog(datasets={'cars': cars})
add(dataset_name, dataset, replace=False)[source]

DataCatalog添加一个新的AbstractDataset对象。

Parameters:
  • dataset_name (str) - 一个尚未注册的唯一数据集名称。

  • dataset (AbstractDataset) – 要与给定数据集名称关联的数据集对象。

  • replace (bool) – 指定是否允许替换同名的现有数据集。

Raises:

DatasetAlreadyExistsError – 当同名数据集已被注册时触发。

示例:

from kedro_datasets.pandas import CSVDataset

catalog = DataCatalog(datasets={
                  'cars': CSVDataset(filepath="cars.csv")
                 })

catalog.add("boats", CSVDataset(filepath="boats.csv"))
Return type:

None

add_all(datasets, replace=False)[source]

DataCatalog添加一组新的数据集。

Parameters:
  • 数据集 (dict[str, AbstractDataset]) – 一个包含数据集名称和数据集实例的字典。

  • replace (bool) - 指定是否允许替换同名的现有数据集。

Raises:

DatasetAlreadyExistsError – 当同名数据集已被注册时触发。

示例:

from kedro_datasets.pandas import CSVDataset, ParquetDataset

catalog = DataCatalog(datasets={
                  "cars": CSVDataset(filepath="cars.csv")
                 })
additional = {
    "planes": ParquetDataset("planes.parq"),
    "boats": CSVDataset(filepath="boats.csv")
}

catalog.add_all(additional)

assert catalog.list() == ["cars", "planes", "boats"]
Return type:

None

add_feed_dict(feed_dict, replace=False)[source]

使用通过feed_dict提供的数据将数据集添加到DataCatalog中。

feed_dict 是一个字典,其中键代表数据集名称,值可以是原始数据或继承自 AbstractDataset 的 Kedro 数据集类实例。如果提供的是原始数据,在添加到 DataCatalog 之前会自动封装到 MemoryDataset 中。

Parameters:
  • feed_dict (dict[str, Any]) – 一个包含要添加到DataCatalog的数据的字典。键是数据集名称,值可以是原始数据或继承自AbstractDataset的类的实例。

  • replace (bool) - 指定是否替换DataCatalog中同名的现有数据集。

示例:

from kedro_datasets.pandas import CSVDataset
import pandas as pd

df = pd.DataFrame({"col1": [1, 2],
                   "col2": [4, 5],
                   "col3": [5, 6]})

catalog = DataCatalog()
catalog.add_feed_dict({
    "data_df": df
}, replace=True)

assert catalog.load("data_df").equals(df)

csv_dataset = CSVDataset(filepath="test.csv")
csv_dataset.save(df)
catalog.add_feed_dict({"data_csv_dataset": csv_dataset})

assert catalog.load("data_csv_dataset").equals(df)
Return type:

None

property config_resolver: CatalogConfigResolver
Return type:

CatalogConfigResolver

confirm(name)[source]

通过名称确认数据集。

Parameters:

name (str) – 数据集的名称。

Raises:

DatasetError – 当数据集没有confirm方法时。

Return type:

None

exists(name)[source]

通过调用数据集的exists()方法来检查已注册的数据集是否存在。如果未实现exists()方法,则会发出警告并返回False。

Parameters:

name (str) – 要检查的数据集。

Return type:

bool

Returns:

数据集输出是否存在。

classmethod from_config(catalog, credentials=None, load_versions=None, save_version=None)[source]

从配置创建DataCatalog实例。这是一个工厂方法,用于为开发者提供通过解析配置文件中的配置来实例化DataCatalog的方式。

Parameters:
  • catalog (dict[str, dict[str, Any]] | None) – 一个字典,其键是数据集名称,值是实现AbstractDataset类的构造函数参数的字典。要加载的数据集类通过type键及其完全限定类名指定。所有kedro.io数据集可以仅通过类名指定,即可以省略模块名。

  • credentials (dict[str, dict[str, Any]] | None) – 一个包含不同数据集凭证的字典。在AbstractDataset中使用credentials键来引用相应的凭证,如下例所示。

  • load_versions (dict[str, str] | None) – 数据集名称与要加载版本之间的映射关系。对未启用版本控制的数据集无效。

  • save_version (str | None) – 用于所有启用版本控制的数据集执行save操作的版本字符串。必须满足以下条件:a) 符合操作系统文件名限制且不区分大小写的字符串;b) 按字典序排序时始终返回最新版本。

Return type:

DataCatalog

Returns:

一个已实例化的DataCatalog,包含所有指定的数据集,已创建并可供使用。

Raises:
  • DatasetError – 当方法无法根据配置创建任何数据集时抛出此错误。

  • DatasetNotFoundError – 当load_versions引用的数据集在目录中不存在时。

示例:

config = {
    "cars": {
        "type": "pandas.CSVDataset",
        "filepath": "cars.csv",
        "save_args": {
            "index": False
        }
    },
    "boats": {
        "type": "pandas.CSVDataset",
        "filepath": "s3://aws-bucket-name/boats.csv",
        "credentials": "boats_credentials",
        "save_args": {
            "index": False
        }
    }
}

credentials = {
    "boats_credentials": {
        "client_kwargs": {
            "aws_access_key_id": "<your key id>",
            "aws_secret_access_key": "<your secret>"
        }
     }
}

catalog = DataCatalog.from_config(config, credentials)

df = catalog.load("cars")
catalog.save("boats", df)
list(regex_search=None)[source]

目录中所有已注册数据集名称的列表。 可以通过提供一个可选的正则表达式进行过滤, 该表达式将仅返回匹配的键。

Parameters:

regex_search (str | None) – 可选的正则表达式,可用于通过特定模式限制返回的数据集。

Return type:

list[str]

Returns:

一个可用的数据集名称列表,这些名称符合regex_search条件(如果提供了该条件)。默认情况下会返回所有数据集名称。

Raises:

SyntaxError – 当提供的正则表达式过滤器无效时。

示例:

catalog = DataCatalog()
# get datasets where the substring 'raw' is present
raw_data = catalog.list(regex_search='raw')
# get datasets which start with 'prm' or 'feat'
feat_eng_data = catalog.list(regex_search='^(prm|feat)')
# get datasets which end with 'time_series'
models = catalog.list(regex_search='.+time_series$')
load(name, version=None)[source]

加载一个已注册的数据集。

Parameters:
  • name (str) – 要加载的数据集。

  • version (str | None) – 可选参数,用于指定要加载的具体数据版本。仅适用于版本化数据集。

Return type:

任意

Returns:

已加载配置好的数据。

Raises:

DatasetNotFoundError – 当给定名称的数据集尚未注册时抛出此错误。

示例:

from kedro.io import DataCatalog
from kedro_datasets.pandas import CSVDataset

cars = CSVDataset(filepath="cars.csv",
                  load_args=None,
                  save_args={"index": False})
catalog = DataCatalog(datasets={'cars': cars})

df = catalog.load("cars")
release(name)[source]

释放与数据集关联的所有缓存数据

Parameters:

name (str) – 要检查的数据集。

Raises:

DatasetNotFoundError – 当给定名称的数据集尚未注册时触发。

Return type:

None

save(name, data)[source]

将数据保存到已注册的数据集。

Parameters:
  • name (str) – 要保存到的数据集名称。

  • data (Any) – 一个数据对象,将按照注册数据集的配置进行保存。

Raises:

DatasetNotFoundError – 当给定名称的数据集尚未注册时抛出此错误。

示例:

import pandas as pd

from kedro_datasets.pandas import CSVDataset

cars = CSVDataset(filepath="cars.csv",
                  load_args=None,
                  save_args={"index": False})
catalog = DataCatalog(datasets={'cars': cars})

df = pd.DataFrame({'col1': [1, 2],
                   'col2': [4, 5],
                   'col3': [5, 6]})
catalog.save("cars", df)
Return type:

None

shallow_copy(extra_dataset_patterns=None)[source]

返回当前对象的浅拷贝。

Return type:

DataCatalog

Returns:

当前对象的副本。